Язык Turbo C 2.0
Основы программирования
a - простые переменные
j - ввод данных
1 - 22k, 4 - 23k
*/
#include <conio.h>
#include <math.h>
#include <stdio.h>
main ()
{
int a;
float d, e, f, g;
int j; /* ввод данных */
float m, n, o;
printf ("? (1-4) ");
scanf ("%i", &a);
if (a == 1) goto aaa; /* нет ввода */
if (a == 2) goto aab; /* ввод данных (1 int) */
if (a == 3) goto aac; /* ввод данных (3 float) */
if (a == 4) goto aad; /* ввод данных (1 int + 1 float) */
printf ("\n");
return;
aaa:
/* 87.6.1.1. В ходе лечебного голодания масса пациента за 30 дней
снизилась с 96 до 70 кг. Было установлено, что ежедневные потери массы
пропорциональны массе тела. Вычислить, чему была равна масса пациента
через k дней после начала голодания для k = 1, 2, ..., 29. */
printf ("1.\n");
d = exp (1. / 30 * log (70. / 96));
e = 96;
for (a = 0; a < 31; a++)
{
printf ("%i - %.4g\t", a, e);
e *= d;
}
/* 88.2.3.3. Дана последовательность:
ai = 1, если i = 0, i = 1;
ai = a(i-2) + a(i-1) / (i - 1), если i > 1.
Вычислить произведение элементов с 1-го по 20-й. */
printf ("\n\n3.\n");
d = e = f = g = 1;
for (a = 0; a < 21; a++)
{
if (a > 1)
{
f = d + e / (a - 1);
g *= f; /* произведение */
d = e;
e = f;
}
printf ("%i - %.4g ", a, e);
}
printf ("\nПроизведение последовательности равно %.4g.\n", g);
/* 88.5.6.6. Вычислить и вывести все члены числового ряда
1; 1 / 2!; 1 / 3!; ...; 1 / N!;
превышающие значение 1e-5. */
printf ("\n6. ");
a = 1;
d = 1;
while (d > 1e-5)
{
printf ("%.4g ", d);
a++;
d /= a;
}
printf ("\n");
goto aaz;
aab:
printf ("Введите целое число: ");
scanf ("%i", &j);
/* 88.1.2.2. Рекуррентная последовательность определена следующим
образом:
ai = 1, если i = 0;
ai = a(i-1) * i + 1 / i, если i > 0.
Для данного натурального n получить значение an. */
printf ("2.\n");
d = 1;
for (a = 0; a < j + 1 && a < 21; a++)
{
if (a) d = d * a + 1. / a;
printf ("%i - %.4g ", a, d);
}
printf ("\n");
goto aaz;
aac:
printf ("Введите три рациональных числа: ");
scanf ("%f%f%f", &m, &n, &o);
/* 88.3.4.4. Используя рекуррентный подход, вычислить сумму многочлена
10-й степени по формуле Горнера, где x - данное вещественное число:
10 * x^10 + 9 * x^9 + 8 * x^8 + ... + 2 * x^2 + x =
= ((...((10 * x + 9) * x + 8) * x + ... + 2) * x + 1) * x. */
d = 0;
if (m > -10.1 && m < 10.1) for (a = 10; a > 0; a--) d = (d + a) * m;
printf ("4. Сумма многочлена равна %.4g.\n", d);
/* 88.6.7.7. Функцию y = sqrt (x) можно вычислить как предельное
значение последовательности, определяемой рекуррентной формулой:
yk = 1 / 2 * (y(k-1) + x / y(k-1)); k = 1, 2, ... .
Начальное значение y0 задается произвольно (желательно ближе к sqrt (x)).
За приближенное значение корня с точностью epsilon берется первое yk, для
которого выполняется условие: abs (yk - y(k-1)) < epsilon. Составить
программу. */
d = n; /* начальное значение y0 */
while (1)
{
if (!d) break;
e = (d + m / d) / 2;
if (fabs (e - d) < o) break;
if (o <= 0) break; /* значение epsilon */
d = e;
}
printf ("7. sqrt (%.4g) = %.4g.\n", m, d);
goto aaz;
aad:
printf ("Введите целое число: ");
scanf ("%i", &j);
printf ("Введите рациональное число: ");
scanf ("%f", &m);
/* 88.4.5.5. Для данного вещественного x и натурального N вычислить
цепную дробь: x / (1 + x / (2 + x / (3 + x / (... / (N + x)...)))). */
d = 1;
for (a = j; a > -1; a--)
{
if (!d) break;
d = a + m / d;
}
printf ("5. %.4g.\n", d);
aaz:
getch ();
printf ("\n");
}
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев