Тема: Операторы повторений




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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: