Задание: Составить схему алгоритма и программу на языке С++ для вычисления значений функции 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 A [i][j]
C[i]=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
;
A [i][j]
C[i]=B