Программирование циклических вычислительных процессов с варьируемым параметром цикла

Автор: Пользователь скрыл имя, 29 Ноября 2011 в 23:54, лабораторная работа

Краткое описание

Цель работы: Изучение операторов цикла в языке С++.
Задание. Составить алгоритм решения задачи согласно своему варианту. В отчете предоставить три программы с разными операторами цикла (do … while, while, for). В алгоритме и программе массивов не использовать.

Файлы: 1 файл

Отчеты.doc

— 430.00 Кб (Скачать)

Лабораторная  работа №4

Тема  «Программирование циклических  вычислительных процессов с варьируемым  параметром цикла»

      Цель  работы: Изучение операторов цикла  в языке С++.

      Задание. Составить алгоритм решения задачи согласно своему варианту. В отчете предоставить три программы с разными операторами цикла (do … while, while, for). В алгоритме и программе массивов не использовать. 

      Вариант 3. Вычислить значения t, соответствующие  каждому значению х (xn<=x<=xk, шаг изменения равен dx) по формуле . Определить . На экран выводить каждую вторую пару значений х и t. Контрольный расчет провести при a=3.5, b=6.8, xn=-3, xk=3, dx=0.5.

 

    1. Блок-схема алгоритма.

    1. Оператор  цикла do…while.

    #include <math.h>

    #include <iostream.h>

    #include <iomanip.h>

    int main(void)

    {float a,b,x,xn,xk,dx;

    double t,f,summ,proiz;

    int fl;

     cout<<"Enter Xn: "; //вводим все переменные

     cin>>xn;

    cout<<"Enter Xk: ";

    cin>>xk;

    cout<<"Enter dX: ";

    cin>>dx;

    cout<<"Enter A: ";

    cin>>a;

    cout<<"Enter B: ";

    cin>>b;

     summ=0;//задаем первоначальные

     proiz=1;// значения

     fl=-1;//флаг для вывода каждого второго t

     x=xn;

    do

    {  t=fabs(a-b*x*x*x)/(cos(b)+sin(a)-12);//вычисляем

           summ+=t;

           proiz*=t;

           if (fl>0)

                 cout<<"X= "<<setw(8)<<x<<" T="<<setw(8)<<t<<endl;

            x+=dx;//переходим к следующему х

            fl*=-1;

    }while (x<=xk);

    f=summ/proiz;

    cout<<"F= "<<setw(8)<<f<<endl;

    return 0;

    }

    1. Оператор цикла while.

    #include <math.h>

    #include <iostream.h>

    #include <iomanip.h>

    int main(void)

    {float a,b,x,xn,xk,dx;

    double t,f,summ,proiz;

    int fl;

    cout<<"Enter Xn: ";

    cin>>xn;

    cout<<"Enter Xk: ";

    cin>>xk;

    cout<<"Enter dX: ";

    cin>>dx;

    cout<<"Enter A: ";

    cin>>a;

    cout<<"Enter B: ";

    cin>>b;

    summ=0;

    proiz=1;

    fl=-1;

    x=xn;

    while (x<=xk)

    {  t=fabs(a-b*x*x*x)/(cos(b)+sin(a)-12);

           summ+=t;

           proiz*=t;

           if (fl>0)

                 cout<<"X= "<<setw(8)<<x<<" T="<<setw(8)<<t<<endl;

           x+=dx;

           fl*=-1;

    }

    f=summ/proiz;

    cout<<"F= "<<setw(8)<<f<<endl;

    return 0;

    }

    1. Оператор цикла for.

    #include <math.h>

    #include <iostream.h>

    #include <iomanip.h>

    int main(void)

    {float a,b,x,xn,xk,dx;

    double t,f,summ,proiz;

    int i;

    cout<<"Enter Xn: ";

    cin>>xn;

    cout<<"Enter Xk: ";

    cin>>xk;

    cout<<"Enter dX: ";

    cin>>dx;

    cout<<"Enter A: ";

    cin>>a;

    cout<<"Enter B: ";

    cin>>b;

    summ=0;

    proiz=1;

    i=1;

    for(x=xn;x<=xk;x+=dx)

    {  t=fabs(a-b*x*x*x)/(cos(b)+sin(a)-12);

           summ+=t;

           proiz*=t;

            if (i % 2==0)//число четное, если остаток от деления на 2=0

                 cout<<"X= "<<setw(8)<<x<<" T="<<setw(8)<<t<<endl;

           i++;

    }

    f=summ/proiz;

    cout<<"F= "<<setw(8)<<f<<endl;

    return 0;

    }

    1. Контрольный расчет.

 

Лабораторная  работа №5

Тема  «Программирование циклических  вычислительных процессов. Последовательность чисел»

      Цель  работы: Изучение операторов цикла в языке С++.

      Задание. Составить алгоритм решения задачи согласно своему варианту и написать программу на языке С++. В алгоритме и программе массивов не использовать.

      Вариант 3. Вводится последовательность из N целых  чисел, найти разность между произведением нечетных чисел и наибольшим среди отрицательных чисел. 

    1. Блок-схема  алгоритма.

    1. Листинг программы

    #include <iostream.h>

    #include <iomanip.h>

    int main(void)

    {int i,n,k,curx,max;

    long proiz,diff;

    cout<<"Enter N: ";

    cin>>n;

    proiz=1;

    max=1;

     k=0; //для подсчета кол-ва нечетных

     for(i=1;i<=n;i++)

    {

           cout<<"Enter X"<<setw(2)<<i<<": ";

           cin>>curx; //вводим число

           if (curx%2>0) {proiz*=curx;k++;} //если нечетное

           if ((curx<0)&&(curx>max)||(max>0)) max=curx;//если отрицательное 

     }

    if ((max<0)&&(k>0))//были и отрицательные, и нечетные

    {  diff=proiz-max;

           cout<<"Proizv ="<<setw(8)<<proiz<<endl<<"Max x<0="<<setw(8)<< max<<endl<<"Differ ="<<setw(8)<<diff<<endl;

    }

    else cout<<"Ne vipolneno uslovie otbora"<<endl;

    return 0;

    }

    1. Контрольный расчет.

 

Лабораторная  работа №6

Тема  «Программирование циклических  вычислительных процессов с использованием функций»

      Цель  работы: Изучение функций в языке С++.

      Задание. Составить алгоритм решения задачи согласно своему варианту и написать программу на языке C++. В отчете предоставить блок-схемы функции согласно задания и основной функции.

      Вариант 3. Вводится последовательность из N целых  чисел. Найти наименьшую по значению цифру в каждом числе последовательности (функцией оформить определение наименьшей цифры числа). 

    1. Блок-схема  функции согласно задания.

 

 

    1. Блок-схема  основной функции.

    1. Листинг программы.

    #include <iostream.h>

    #include <iomanip.h>

    #include <math.h> 

    int mindig(long x)

    {

          int i,min,mr,curd;

          min=10;

          mr=int(log10(x));//определяем старший разряд числа

          for(i=mr;i>=0;i--)

          {

                curd=x/pow(10,i);//находим число в текущем разряде

                if (curd<min) min=curd;

                x-=curd*pow(10,i);//убираем из числа старший разряд

          }

          return min;

    }; 

    int main(void)

    { int i,n;

    long curx;

    cout<<"Enter N: ";

     cin>>n;

    for(i=1;i<=n;i++)

    {

           cout<<"Enter X"<<setw(2)<<i<<": ";

           cin>>curx;

           cout<<"Min digit ="<<setw(2)<<mindig(labs(curx))<<endl;

           

     }

          return 0;

    }

    1. Контрольный расчет.

 

 

Лабораторная  работа №7

Тема  «Применение функций для решения нелинейных уравнений»

      Цель  работы: Изучение функций в языке С++, локальные и глобальные переменные. Знакомство с основными методами решения нелинейных уравнений.

      Задание. Для заданного нелинейного уравнения выполнить следующие действия:

  1. Найти интервал изоляции одного из корней.
  2. Написать программу на языке С++ для вычисления корней нелинейного уравнения согласно своего варианта, погрешность расчета принять е=0,0001. В программе реализовать два указанных в варианте метода (1– метод половинного деления, 2- метод хорд, 3- метод касательных, 4- метод простой итерации). Для каждого метода написать функцию, реализующую этот метод. При запуске программы должен выводиться запрос, каким способом будет решаться нелинейное уравнение. Результатом работы программы будет значение корня на введенном интервале и количество итераций.

Информация о работе Программирование циклических вычислительных процессов с варьируемым параметром цикла