Задание: Составить схему алгоритма и программу на языке С++ для вычисления значений функции y=f(x) в точках от х=х1 до х=хn c шагом ∆х.
x1 = 1 |
xn = 4 |
Δx = 0,3 |
a = 4,3 |
b = 5,4 |
Решение:
Блок-схема алгоритма
Начало |
Конец |
True |
Вывод 1 – for 2 – while 3 – do while 4 - exit |
Ввод nn |
nn=1 |
nn=4 |
nn=3 |
nn=2 |
Ввод х1, хn, ∆х |
x=xn x≤xk+∆x x=x+∆x |
![]() |
Вывод х, у |
x=xn |
x=x+∆x |
x≤xk |
Ввод х1, хn, ∆х |
![]() |
![]() |
Вывод х, у |
Ввод х1, хn, ∆х |
x=xn |
Вывод х, у |
x=x+∆x |
x≤xk |
да |
да |
да |
да |
да |
да |
да |
нет |
нет |
нет |
нет |
нет |
нет |
нет |
Конец |
Ошибка |
Текст программы
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <locale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(0,"");
system("cls");
double a=4.3, b=5.4, y, x, xn,xk,dx;
int nn;
while(true)
{
cout<<"1-for \n2-while\n3-do while\n4-exit\n";
cin>>nn;
switch(nn)
{
case 1:
cout<<"Введи xn\nxn=";
cin>>xn;
cout<<"Введи xk\nxk=";
cin>>xk;
cout<<"Введи dx\ndx=";
cin>>dx;
for(x=xn; x<=xk; x=x+dx)
{
y=b*log(a*x*x)+b*(pow(log(x),2));
cout<<x<<" "<<y<<endl;
}
system ("pause");
break;
case 2:
cout<<"Введи xn\nxn=";
cin>>xn;
cout<<"Введи xk\nxk=";
cin>>xk;
cout<<"Введи dx\ndx=";
cin>>dx;
x=xn;
while(x<=xk)
{
y=b*log(a*x*x)+b*(pow(log(x),2));
cout<<x<<" "<<y<<endl;
x=x+dx;
}
system ("pause");
break;
case 3:
cout<<"Введи xn\nxn=";
cin>>xn;
cout<<"Введи xk\nxk=";
cin>>xk;
cout<<"Введи dx\ndx=";
cin>>dx;
x=xn;
do{
y=b*log(a*x*x)+b*(pow(log(x),2));
cout<<x<<" "<<y<<endl;
x=x+dx;
}
while(x<=xk);
break;
case 4: return 0;
default:cout<<"Выбери 1, 2, 3, 4\n";
}
}
system ("pause");
return 0;
}
Результат
Лабораторная работа № 4
Тема: Одномерный массив
Задание: дан массив a из n целых чисел. Вывести на печать только те числа, для которых выполняется условие a[i] ≤ i, где i – номер элемента массива.
Решение:
1.
Начало |
Ввод n |
![]() ![]() |
Нет |
Да |
a[i]:=random 27+1 |
![]() ![]() |
Да |
Вывод a[i] |
Нет |
![]() ![]() |
![]() |
Вывод a[i] |
Конец |
Да |
Нет |
Нет |
Да |
Текст программы
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <locale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian"); /* Установим размер массива */
int n; // Кол-во элементов
cout << "Введите размер массива: ";
cin >> n;
int *a = new int [n];
cout << "Исходный массив: ";
for (int i = 0; i < n; i++)
{ a[i]=rand()%27+1;
cout<<"a["<<i<<"]= "<<a[i]<<endl;
} /* Выведем исходный массив */
cout<<endl; /* Выведем полученные элементы */
cout << "элементы массива,которые меньше их индекса: "<<endl;
for(int i = 0; i < n; ++i)
{
if (a[i]<=i)
{
cout<<"a["<<i<<"]=" << a[i] << endl;
}
}
cout << endl;
delete [] a;
system("pause");
return 0;
}
Результат
Лабораторная работа № 5
Тема: Двумерные массивы
Задание: задан двумерный массив Y из 7-и строк и 3-х столбцов. Составить программу, которая вычисляет значение суммы произведений элементов строк
Решение:
1.
Начало |
S=0 |
i=0; i<7; i++ |
j=0; j<3; j++ |
Ввод A[i][j] |
i=0; i<7; i++ |
j=0; j<3; j++ |
i=0; i<7; i++ |
j=0; j<3; j++ |
Вывод A[i][j] |
i=0; i<7; i++ |
S=S+C[i] |
Конец |
Вывод S |
В=B ![]() |
Вывод C[i] |
Текст программы
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
int _main(int argc, _TCHAR* argv[])
{ int A [7] [3];
int i,j,B,C[7], S=0;
for (i=0; i<7; i++)
{ for (j=0; j<3; j++)
{ cout<<"vvedi A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];
}
} cout<<"ishodnaya matrica"<<endl;
for (i=0; i<7; i++)
{ for(j=0; j<3; j++)
cout<<A[i][j]<<" ";
cout<<endl;
} cout<<"proizvedenie strok ishodnoy matricy"<<endl;
for(i=0; i<7; i++)
{ B=1;
for(j=0; j<3; j++)
B=B*A[i][j];
C[i]=B;
cout<<C[i]<<endl;
} for (i=0; i<7; i++)
S=S+C[i];
cout<<"summa proizvedeniy="<<S<<endl;
system("pause");
return 0;
}
Результат
ч
Лабораторная работа № 6
Тема: Итерация
Задание: Составить программу вычисления значения функции F(x):
где e = 0,0001; 0,01; 0,001, x = 0,9; 1,2; 1,7
Решение:
1.
Начало |
m=true |
“1, 2” |
F=1,n-1,N-1 |
mm |
S=pow(x,n)/N |
N=N*n |
n++ |
F=F+S |
Exit |
S=pow(x,n)/N |
Вывод F,x,eps |
Конец |
Erroe |
Erroe |
Нет |
Нет |
Нет |
Да |
|S|≤eps |
Да |
Ввод x,exp |
mm=1 |
Нет |
Да |
m |
Да |
mm=2 |
Текст программы
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{ float x,eps, F, S,N;
int mm,n;
bool m=true;
while (m)
{ cout << "Press 1 to continue "<<"\n"<<"Press 2 to exit"<<"\n";
cin >> mm;
F=1,n=1,N=1;
switch (mm)
{ case 1:
cout << "Input x= ";
cin >> x;
cout << "Input eps: ";
cin >> eps;
S = pow(x,n)/N;
while (fabs(S) > eps);
{ F=F+S;
n++;
N=N*n;
S =pow(x,n)/N;
}
cout <<"Esli x="<<x<<","<<"\t"<<"epsilon="<<eps<<"\n"<<"togda F="<<F<<endl;
getch();
break;
case 2:
m=false;
break;
default:
cout <<"error"<<endl;
}
}
getch();
return 0;
}
Результат
Лабораторная работа № 7