
Задание 1. Создать программу вычисления величины
.
Результат проверить при заданных исходных значениях:
при x = –15.246, y = 4.64210-2, z = 20.001102 = –182.036.
Решение
Структурная схема алгоритма:
Текст программы, реализующей приведенный алгоритм:
#include <iostream.h>
#include <cmath>
int main(int argc, char* argv[])
{
double x, y, z, a, b, c, alfa;
system("color F0"); // установка белого цвета фона и черного - букв
cout << "\n\t x, y, z = " << endl; // приглашение ко вводу
cin >> x >> y >> z; // ввод исходных данных
a = -sqrt(abs(x)); //
b = log(pow(y,a)); //
c = sin(atan(z)); // постепенное вычисление выражения
a = x-y/2; //
alfa = a*b+c*c; //
// вывод результата
cout << "\n x = " << x << "\n y = " << y << "\n z = " << z
<< "\nalfa = " << alfa << endl;
system("PAUSE");
return 0;
}
Результаты тестового примера с заданными значениями:
Задание 2. Составить программу для вычисления значения rez в зависимости от поставленного условия:
rez =
Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен.
Решение
Структурная схема алгоритма:
Текст программы, реализующей приведенный алгоритм:
#include <iostream.h>
#include <math.h>
Int main(int argc, char* argv[])
{
double m, t, tmp, usl, rez;
system("color F0");
cout << "Input m and t: ";
cin >> m >> t; // ввод исходных данных
usl = m*m+t*t;
tmp = 5*m*m*t+7*m*t*t;
if (usl > 0.5) { // первая ветвь
rez = atan(tmp);
cout << "Calculation branch: m^2+t^2 > 0.5\n\n\trez = " << rez << endl;
} else if (usl > 0.1) { // вторая ветвь
rez = asin(tmp);
cout << "Calculation branch: 0.1 < m^2+t^2 <= 0.5\n\n\trez = " << rez << endl;
} else { // исходные данные не удовлетворяют ни одному из условий
cout << "\n\tEquation is undefined for current input" << endl;
}
system("PAUSE");
return 0;
}
Результаты тестового примера:
1 вариант (введенные значения соответствуют первому условию):
2 вариант (введенные значения соответствуют второму условию):
3 вариант (введенные значения не соответствуют ни одному условию):
Задание 3. Для каждого x,
изменяющегося от a до b с шагом
h, найти значения
,
суммы
и |Y(x) – S(x)| и вывести в
виде таблицы. Значения a, b,
h и n вводятся с клавиатуры.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.
Решение
Структурная схема алгоритма:
Текст программы, реализующей приведенный алгоритм:
#include <stdio.h>
#include <conio.h>
#include <math.h>
Int main(int argc, char* argv[])
{
double a, b, x, h, r, y, s;
int n, k;
puts("Input a, b, h, n:");
scanf("%lf%lf%lf%d",&a,&b,&h,&n);
// вывод шапки таблицы
printf("\n x Y(x) S(x) R(x)\n");
printf(" ---------------------------------------------------\n");
// основной цикл по х
for (x = a; x <= b; x += h) {
// инициализация накопителя произведения
r = 1; // начальное значение при k = 0
// инициализация накопителя суммы
s = 1; // первым слагаемым при k = 0
// цикл вычисления суммы при заданном х
for (k = 1; k <= n; k++) {
// вычисление k-того члена ряда
// по рекуррентной формуле
r = r*cos(k*x)/cos(k*x-x)/k;
// формирование суммы
s += r;
}
// расчет значения функции при заданном х
y = exp(cos(x))*cos(sin(x));
// форматированный вывод результатов
printf(" %8.2lf %12.6lf %12.6lf %e\n",x,y,s,fabs(y-s));
}
printf(" ---------------------------------------------------\n");
printf("Press ENTER to continue...\n");
getch();
return 0;
}
Результат тестового примера с заданными исходными данными:
Задание 4. В одномерном целочисленном массиве (размер массива не больше 20 и значения его элементов вводить с клавиатуры) вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
Решение
Решение
Структурная схема алгоритма:
Текст программы, реализующей приведенный алгоритм:
#include <iostream.h>