
Лабораторная работа №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.
Блок-схема алгоритма.
Оператор цикла 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;
}
Оператор цикла 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;
}
Оператор цикла 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;
}
Контрольный расчет.
Лабораторная работа №5
Тема «Программирование циклических вычислительных процессов. Последовательность чисел»
Цель работы: Изучение операторов цикла в языке С++.
Задание. Составить алгоритм решения задачи согласно своему варианту и написать программу на языке С++. В алгоритме и программе массивов не использовать.
Вариант 3. Вводится последовательность из N целых чисел, найти разность между произведением нечетных чисел и наибольшим среди отрицательных чисел.
Блок-схема алгоритма.
Листинг программы
#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;
}
Контрольный расчет.
Лабораторная работа №6
Тема «Программирование циклических вычислительных процессов с использованием функций»
Цель работы: Изучение функций в языке С++.
Задание. Составить алгоритм решения задачи согласно своему варианту и написать программу на языке C++. В отчете предоставить блок-схемы функции согласно задания и основной функции.
Вариант 3. Вводится последовательность из N целых чисел. Найти наименьшую по значению цифру в каждом числе последовательности (функцией оформить определение наименьшей цифры числа).
Блок-схема функции согласно задания.
Блок-схема основной функции.
Листинг программы.
#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;
};