Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МИНЕСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ.docx
Скачиваний:
12
Добавлен:
23.12.2018
Размер:
54.25 Кб
Скачать

Лабораторная работа №5.1

1) Возведение числа n в степень р — это умножение числа n на себя р раз.

Напишите функцию с именем power(), которая в качестве аргументов принимает значение типа double для n и значение типа int для р и возвращает значение типа double. Для аргумента, соответствующего степени числа, задайте значение по умолчанию, равное 2, чтобы при отсутствии показателя степени при вызове функции число n возводилось в

квадрат. Напишите функцию main(), которая запрашивает у пользователя ввод аргументов для функции power(), и отобразите на экране результаты ее работы.

# include <iostream>

using namespace std;

void power (double=1,int=2);

int main ()

{

double q;

int w;

char e;

cout<<" chislo "<< endl;

cin>>q;

cout<<" stepen? (y/n)"<< endl;

cin>>e;

if (e=='y')

{

cout<<" stepen"<< endl;

cin >>w;

power(q,w);

}

else power(q);

return 0;}

void power(double q, int w)

{double a=1;

int i=0;

while(i<w)

{a=a*q;

i++;}

cout<<"recultat "<<a<<endl;

}

2) Напишите программу, складывающую два структурных значения типа time. Теперь программа должна включать в себя две функции. Первая, time_to_secs(), принимает в качестве аргумента значение типа time и возвращает эквивалентное значение в секундах типа int. Вторая, secs_to_time(), в качестве аргумента принимает число секунд, имеющее тип int, а возвращает эквивалентное значение типа time.

# include <iostream>

using namespace std;

void time();

void sec();

struct vremia

{

int ch;

int m;

int s;

};

int a;

int main()

{

cout<<" vvedite vremia"<<endl;

time();

sec();

return 0;

}

void time()

{

vremia q;

cin>>q.ch>>q.m>>q.s;

vremia w;

cin>>w.ch>>w.m>>w.s;

a=(q.ch+w.ch)*3600+(q.m+w.m)*60+(q.s+w.s);

}

void sec()

{

vremia e;

e.s=a;

e.m=0;

e.ch=0;

while (e.s>=60)

{

e.s=e.s-60;

e.m++;

};

while (e.m>=60)

{

e.m=e.m-60;

e.ch++;

};

cout<<e.ch<<" "<<e.m<<" "<<e.s<<endl;

}

Лабораторная работа № 5.2

1) Даны длины отрезков A, B, C, D. Для каждой тройки этих отрезков, из которой можно построить треугольник, напечатать площадь этого треугольника.

# include <iostream>

# include <cmath>

using namespace std;

void proverka(double, double,double);

void area(double,double, double);

double main()

{cout<<" 4 chisla"<<endl;

double a,b,c,d;

cin>>a>>b>>c>>d;

cout<<" a,b,c"<<endl;

proverka(a,b,c);

cout<<" d,b,c"<<endl;

proverka(d,b,c);

cout<<" a,d,c"<<endl;

proverka(a,d,c);

cout<<" a,b,d"<<endl;

proverka(a,b,d);

return 0;}

void proverka(double a, double b, double c)

{if ((a+b>c) &&(b+c>a) && (a+c>b))

area(a,b,c);

else

cout<<" Net treugolnika"<<endl;

}

void area(double a, double b, double c)

{double s,p;

p=(a+b+c)/2;

s=sqrt((p-a)*(p-b)*(p-c)*p);

cout<<" ploschad ="<<s<<endl;

}

2) Написать функцию возвращающую наименьшее общее кратное трех заданных чисел.

#include <iostream>

using namespace std;

int nod(int, int);

int main()

{

cout<<" 3 chisla"<<endl;

int a; int b; int c,q;

cin>>a>>b>>c;

q = nod(a,b);

int nok;

nok=a*b/q;

q= nod(nok,c);

nok=nok*c/q;

cout<<"nok="<<nok<<endl;

return 0;

}

int nod( int a, int b)

{int i;

while (a*b!=0)

{if(a>b)

a=a%b;

else

b=b%a;

}

i=a+b;

return i;}

3) Написать и протестировать функцию, определяющую полярные координаты точки по ее декартовым координатам.

# include <iostream>

# include <cmath>

using namespace std;

void xord(float, float);

void yord(float, float);

int main ()

{cout<<"VVedite koordinaty"<<endl;

int z,w;

cin>> w>>z;

xord(w,z);

yord(w,z);

return 0;}

void xord(float w, float z)

{ float y;

y=sqrt( pow(w,2)+pow(z,2));

cout<<" novie koordinaty=("<<y<<",";

}

void yord(float w, float z)

{float q,c;

q=w/z;

c= atanf( q );

cout<<c<<")";

}