Язык 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"); }
Группа для программистов ( programming )
:Юрий Казекин
/* p87
Язык 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");
}