Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 1 семестр.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.52 Mб
Скачать

7.2 Методические указания и примеры выполнения лабораторных работ

Далее приведены образцы выполнения лабораторных работ.

Лабораторная работа 1.

Тема «Линейный и разветвляющийся алгоритм».

Постановка задачи. Составить блок-схему и программу для вычисления Y и Z по заданным формулам.

а) при х=0,12.

Рис. 7.1. Блок-схема

Код программы:

#include <iostream.h>

#include <math.h>

int main(){

double x, Y;

x=0.12;

Y=pow(pow(x,2.0)+x,0.5);

cout<<"x="<<x<<endl;

cout<<"Y="<<Y<<endl;

return 0;

}

Результат выполнения программы:

Ручной счет:

При х=0,12 .

Проверка результата в программе MathCad:

б) ,

где x, y считать с клавиатуры.

Рис. 7.2. Блок-схема

Код программы:

#include <iostream.h>

#include <math.h>

int main(){

double x,y,Z;

cout<<"x="; cin>>x;

cout<<"y="; cin>>y;

if(pow(x,2.0)+pow(y,2.0)<2.0){

Z=pow(1.0-sin(pow(x,2.0)+pow(y,3.0)),2.0);

}

else{

Z=pow(pow(x,2.0)*y +8.0,0.5);

}

cout<<"Z="<<Z<<endl;

return 0;

}

Результат выполнения программы:

Ручной счет:

При х=0,2; у=1; x2+y2=0,22+12=1,04 < 2 {первая ветвь}

Z=(1-sin(x2+y3))2=(1-sin(0,22+13))2=(1-sin(1,04))2=0,019.

Проверка результатов в программе MathCad:

в) , где x, y считать с клавиатуры.

Рис. 7.3. Блок-схема

Код программы

#include <iostream.h>

#include <math.h>

int main(){

double x,y,Z, a,b;

cout<<"x=";cin>>x;

cout<<"y=";cin>>y;

a=y*pow(x,0.5);

b=sin(y)/x;

Z=a;

if(b<Z){

Z=b;

}

cout<<"Z="<<Z<<endl;

return 0;

}

Результат выполнения программы:

Ручной счет:

При х=3,5; у=1,6; ; ;

Z=min{2,993; 0,286}=0,286.

Проверка результатов в программе MathCad:

Лабораторная работа 2.

Тема «Циклический алгоритм».

Постановка задачи. Составить блок-схему и программу для вычисления таблицы значений функций Y и Z по заданным формулам.

а) при 0≤х≤5 с шагом 0,9; использовать операторы while, for, do while.

Рис. 7.4. Блок-схема с предусловием

Рис. 7.5. Блок-схема с постусловием

Код программы с оператором while:

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

int main(){

double x,Y;

cout<<setw(10)<<"x"

<<setw(10)<<"Y"<<endl;

x=0;

while(x<=5){

Y=pow(pow(x,2.0)+x,0.5);

cout<<setw(10)<<x

<<setw(10)<<Y<<endl;

x=x+0.9;

}

return 0;}

Результат выполнения программы:

Код программы с оператором for:

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

int main(){

double x,Y;

cout<<setw(10)<<"x"

<<setw(10)<<"Y"<<endl;

for(x=0;x<=5;x=x+0.9){

Y=pow(pow(x,2.0)+x,0.5);

cout<<setw(10)<<x

<<setw(10)<<Y<<endl;

}

return 0;}

Результат выполнения программы:

Код программы с оператором do while:

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

int main(){

double x,Y;

cout<<setw(10)<<"x"

<<setw(10)<<"Y"<<endl;

x=0;

do{

Y=pow(pow(x,2.0)+x,0.5);

cout<<setw(10)<<x

<<setw(10)<<Y<<endl;

x=x+0.9;

} while(x<=5);

return 0;}

Результат выполнения программы:

б) ,

при 0≤х≤1,2 с шагом 0,7; при 0≤y≤1 с шагом 0,5; использовать оператор for; найти сумму, произведение, минимальное и максимальное значение функции.

Код программы:

(приложение Borland C++)

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

int main(){

double x,y,Z,S,P,min,max;

cout<<setw(5)<<"x"<<setw(5) <<"y"<<setw(15)<<"Z"<<endl;

S=0;P=1;

min=10E10;

max=-10E10;

for(x=0;x<=1.2;x=x+0.7){

for(y=0;y<=1;y=y+0.5){

if(pow(x,2.0)+pow(y,2.0)<2){

Z=pow(1.0-sin(pow(x,2.0) +pow(y,3.0)),2.0);}

else{

Z=pow(pow(x,2.0)*y +8.0,0.5);}

cout<<setw(5)<<x<< setw(5)<<y<<setw(15) <<Z<<endl;

S=S+Z;

P=P*Z;

Рис. 7.6. Блок-схема

if(Z<min)min=Z;

if(Z>max)max=Z;

}

}

cout<<"S="<<S<<endl;

cout<<"P="<<P<<endl;

cout<<"min="<<min<<endl;

cout<<"max="<<max<<endl;

return 0;}

Результат выполнения программы:

в) , при 0,6≤х≤12 с шагом 7; при 0≤y≤3 с шагом 1,5; использовать оператор while.

Рис. 7.7. Блок-схема

Код программы:

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

int main(){

double x,y,Z,a,b;

cout<<setw(5)<<"x"<<

setw(5)<<"y"<<setw(15)

<<"Z"<<endl;

x=0.6;

while(x<=12){

y=0;

while(y<=3){

a=y*pow(x,0.5);

b=sin(y)/x;

Z=a;

if(b<Z)Z=b;

cout<<setw(5)<<x<<setw(5)

<<y<<setw(15)<<Z<<endl;

y=y+1.5;

}

x=x+7.0;

}

return 0;

}

Результат выполнения программы:

Лабораторная работа 3.

Тема «Массивы».

а) Одномерный массив Х(15) задать в программе. Найти максимальный из отрицательных элементов и поменять его местами с последним.

Код программы:

#include <iostream.h>

#include <iomanip.h>

int main(){

double X[15]={0.3,-1,5,2.5,7.3,2,-0.6,0.7,6.4,3,-9,0,5,-2,8};

double max,tmp;

int i, imax;

max=-10E10;

for(i=0;i<15;i=i+1){

cout<<setw(5)<<X[i];

if(X[i]<0 && X[i]>max){

max=X[i]; imax=i;

}

}

cout<<endl<<"max="<<max<<"pri i="<<imax<<endl;

tmp=X[imax];

X[imax]=X[14];

X[14]=tmp;

for(i=0;i<15;i=i+1){

cout<<setw(5)<<X[i];

}

cout<<endl;

return 0;

}

Рис. 7.8. Блок-схема

Результат выполнения программы:

б) Матрица А(4,4) задается с клавиатуры. Найти: сумму элементов среди элементов, расположенных на главной диагонали матрицы А; максимальный элемент в третьей строке матрицы. Поменять местами найденный максимальный элемент и значение S.

Код программы:

#include <iostream.h>

#include <iomanip.h>

int main(){

double a[4][4];

double S,max;

int i,j,jmax;

for(i=0;i<4;i=i+1){

for(j=0;j<4;j=j+1){

cin>>a[i][j];

}

}

for(i=0;i<4;i=i+1){

for(j=0;j<4;j=j+1){

cout<<setw(5)<<a[i][j];

}

cout<<endl;

}

S=0;

for(i=0; i<4; i=i+1){

S=S+a[i][i];

}

cout<<"S="<<S<<endl;

max=-10E10;

for(j=0; j<4; j=j+1){

if(a[2][j]>max){

max=a[2][j];

jmax=j;

}

}

cout<<"max="<<max<<" pri i=2, j="<<jmax<<endl;

a[2][jmax]=S;

for(i=0;i<4;i=i+1){

for(j=0;j<4;j=j+1){

cout<<setw(5)<<a[i][j];

}

cout<<endl; } return 0;}

Блок-схема:

Рис. 7.9. Блок-схема

Результат выполнения программы: