
ИТиУвТС / ОАиП, 1 курс ФЗО ИТиУвТС (КР 1, вариант 7)
.doc
Задание 1
Написать программу вычисления значения выражения при заданных исходных данных. Сравнить полученное значение с указанным правильным результатом.
при x = 0,1722; y = 6,33; z = 3,25⋅10−4 . Ответ s = –205,306.
Решение:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double x, y, z, s, a, b, c, d;
cout << "Vvedite x:" << endl;
cin >> x;
cout << "Vvedite y:" << endl;
cin >> y;
cout << "Vvedite z:" << endl;
cin >> z;
a= x + 3 * fabs(x - y) + pow(x, 2);
b= fabs(x - y) * z + pow(x, 2);
c= 1/4. * acos(x);
d= 5 * atan(x);
s= d - c * (a/b);
cout << "Otvet: " << s << endl;
return 0;
}
Задание 2
Составить программу вычисления выражения согласно указанному варианту. Предусмотреть вывод информации о выбранной ветви вычислений.
Решение:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
Double x, y, s;
cout << "Vvedite x:" << endl;
cin >> x;
cout << "Vvedite y:" << endl;
cin >> y;
double xy =(x * y);
if (1<xy && xy<10)
{
s= exp(-x);
cout << "Result 1: " << s << endl;
}
else if (12<xy && xy< 40)
{
s= pow (fabs(x + 4*y), 1/3.);
cout << "Result 2: " << s << endl;
}
else
{
s= y* pow(x, 2);
cout << "Result 3: " << s << endl;
}
return 0;
}
Задание 3
Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1.
Решение:
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
double x, n, a, b, h, y, i;
cout << "Vvedite a, b, h, n: " << endl;
cin >> a >> b >> h >> n;
cout << setw(10) << "x" << setw(10) << "y" << endl;
x = a;
do
{
y= 1;
for (i = 1; i <= n; i++);
y += pow(x, 2*i)/ cos (i*x);
cout << setw(10) << x << setw(10) << y << endl;
x += h;
}
while (x <= b + h/2);
cout << endl;
return 0;
}
Задание 4
Ввести одномерный статический массив из k чисел. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.
Сдвинуть элементы массива циклически на n позиций вправо.
Решение:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int massiv[20], i, n, j, k;
cout << "Vvesti razmer massiva (k<20):" << endl;
cin >> k;
for(i=0; i<k; i++)
{
massiv[i]= (i+1)*2;
cout << massiv[i] << " ";
}
cout << endl << endl;
cout << "Vvesti n:" << endl;
cin >> n;
for(j=0-n; j<(k-n); j++)
{
if (j<0)
{
massiv[j]= 0;
}
cout << massiv[j] << " ";
}
return 0;
}
Задание 5
Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.
Найти максимальный среди элементов, лежащих ниже побочной диагонали.
Решение:
#include <iostream>
#include <iomanip>
#include <math.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
double **a;
int i, j, n, m, imax, jmax;
cout << "Vvedite razmer matrici: " << endl;
cin >> n >> m;
a= new double *[n];
for(i=0; i<n; i++)
{
a[i]= new double [m];
}
srand(time(NULL));
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
a[i][j]= 1+rand()% 90;
}
cout << endl << endl;
cout << "Matrica a:" << endl;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << setw(2) << a[i][j] << " ";
cout << endl;
}
cout << endl << endl;
imax=jmax=0;
for(i=m-j; i<n; i++)
for(j=n-i; j<m; j++)
{
if(a[i][j]>a[imax][jmax])
{
imax=i;
jmax=j;
}
}
cout << "Max chislo:" << endl;
cout << a[imax][jmax] << " ";
for (i=0; i<n; i++)
delete []a[i];
delete []a;
return 0;
}
Задание 6.
Вводится строка, каждое слово которой отделяется от других слов одним или несколькими пробелами. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран полученный результат.
Найти все числа в строке. Каждое число вывести в отдельной строке.
Решение:
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{
char st[80], sl[80];
int i, k=0;
puts ("Vvedite stroku");
gets(st);
int n=strlen (st);
for (i=0; i<n; i++)
{
if (st[i] >= '0' && st[i] <= '9')
{
sl[k]=st[i];
cout <<sl[k] << endl;
}
}
i++;
return 0;
}
Задание 7.
Создать массив структур, содержащий информацию согласно варианту
индивидуального задания. Выполнить задание и вывести на экран полученный результат.
Информация об участниках спортивных соревнований содержит название страны, название команды, ФИО игрока, игровой номер, возраст, рост и вес. Вывести фалимии спортсменов, возраст которых больше 20 лет.
Решение:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
struct sport
{
char strana[20];
char kom[20];
char fio[40];
char nom[5];
char old[3];
char rost[4];
char ves[4];
} msport[200];
int i, sp;
cout << "Vvedite chislo sportsmenow:" << endl;
cin >> sp;
cout << endl;
for (i=0; i<sp; i++)
{
cout << "Vvedite stranu: ";
cin >> msport[i].strana;
cout << "Vvedite komandu: ";
cin >> msport[i].kom;
cout << "Vvedite FIO: ";
cin >> msport[i].fio;
cout << "Vvedite nomer: ";
cin >> msport[i].nom;
cout << "Vvedite vozrast: ";
cin >> msport[i].old;
cout << "Vvedite rost: ";
cin >> msport[i].rost;
cout << "Vvedite ves: ";
cin >> msport[i].ves;
cout << endl;
}
for (i=0; i<sp; i++)
if ( strcmp (msport[i].old, "20")== 1)
{
cout << "Starshe 20 let: " << msport[i].fio << endl;
}
return 0;
}
Задание 8.
Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1 (см. лабораторную работу №3, табл. 3.1).
Вычисление y(x) оформить в виде функции.
Решение:
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
void summ (double, double, double, double);
int main()
{
cout << setw(10) << "x" << setw(10) << "y" << endl;
summ(0.1, 1.2, 0.1, 20);
cout << endl;
return 0;
}
void summ (double a, double b, double h, double n)
{
double x = a, y= 1, i;
do
{
for (i = 1; i <= n; i++);
y += pow(x, 2*i)/ cos (i*x);
cout << setw(10) << x << setw(10) << y << endl;
x += h;
}
while (x <= b + h/2);
}