Основы программирования Язык Turbo C 2.0 */ /* 1 - 15k, 2 - 21k, 3 - 22k, 4 - 23k, 8 - 24k 10 - 25k, 14 - 26k */ #include <conio.h> #include <math.h> #include <stdio.h> float xa (int, int, int, int); /* расстояние между двумя точками на плоскости */ xd (int); /* сумма цифр числа */ main () { int a, b, c, d, e, f; /* переменные ввода */ float j, k; /* переменные ввода */ int m, n, o, v; float p, q, r, s, t; printf ("? (1-4) "); scanf ("%i", &a); if (a == 1) goto aaa; /* 6 int, 2 float */ if (a == 2) goto aab; /* ввод данных */ if (a == 3) goto aac; /* нет ввода */ if (a == 4) goto aad; /* 3 int */ printf ("\n"); return; aaa: printf ("Введите 6 целых чисел: "); scanf ("%i%i%i%i%i%i", &a, &b, &c, &d, &e, &f); printf ("Введите 2 рациональных числа: "); scanf ("%f%f", &j, &k); /* 11.1. */ m = a * d; n = b * c; printf ("1. %i / %i : %i / %i = %i / %i.\n", a, b, c, d, m, n); /* 19.2. Составить алгоритм вычисления степенной функции с целым показателем y = x ^ k, где k - целое число. */ if (j == 0) printf ("2. 0 ^ %i = 0.\n", a); else { p = 1; if (a > 0) for (n = 0; n < a; n++) p *= j; else for (n = 0; n > a; n--) p /= j; printf ("2. %.4g ^ %i = %.4g.\n", j, a, p); } /* 21.1.3. Даны декартовы координаты трех вершин треугольника на плоскости. Составить алгоритм определения площади треугольника. */ p = xa (a, b, c, d); q = xa (a, b, e, f); r = xa (c, d, e, f); s = (p + q + r) / 2; t = s * (s - p) * (s - q) * (s - r); if (t < 0) t = 0; printf ("3. Площадь треугольника %.4g.\n", sqrt (t)); /* 21.2.4. Дана скорость ракеты при выходе за пределы атмосферы Земли. Составить алгоритм определения того, как будет двигаться ракета после выключения двигателей. Напомним величины трех космических скоростей: 7,5 км/с, 11,2 км/с, 16,4 км/с. */ printf ("4. "); if (j < 7.5) printf ("Ракета упадет на Землю"); else if (j == 7.5) printf ("Ракета будет двигаться по круговой орбите вокруг Земли"); else if (j < 11.2) printf ("Ракета будет двигаться по эллипсу вокруг Земли"); else if (j == 11.2) printf ("Ракета улетит от Земли по параболе"); else if (j < 16.4) printf ("Ракета будет двигаться по эллипсу вокруг Солнца"); else if (j == 16.4) printf ("Ракета улетит от Солнца по параболе"); else printf ("Ракета улетит от Солнца по гиперболе"); /* 68.4.8. Вычислить сумму квадратов всех целых чисел, попадающих в интервал (ln x, exp x). */ p = j; if (p > 5) p = 5; if (p <= 0) q = 0; else q = log (p); r = exp (p); /* Вычислены границы интервала (q, r). */ m = q; if (m <= q) m++; o = 0; /* Вычислены границы интервала [m, r). */ for (n = m; n < r; n++) o += n * n; printf (".\n8. Сумма квадратов чисел равна %i.\n", o); /* 68.5.9. Вычислить количество точек с целочисленными координатами, попадающих в круг радиуса R с центром в начале координат. */ m = j; if (m < j) m++; if (j < 0) m = -1; v = 0; /* Вычислены границы интервала [-m, m]. */ for (n = -m; n <= m; n++) for (o = -m; o <= m; o++) if (n * n + o * o <= j * j) v++; printf ("9. Количество точек в круге %i.\n", v); /* 80.1.13. Составить программу вычисления площади кольца по значениям внутреннего и внешнего радиусов, используя подпрограмму вычисления площади круга (два варианта: с процедурой и с функцией). */ printf ("13. Площадь кольца %.4g.\n", 3.1415926 * (j * j - k * k)); /* 80.2.14. По координатам вершин треугольника вычислить его периметр, используя подпрограмму вычисления длины отрезка, соединяющего две точки. */ p = xa (a, b, c, d) + xa (a, b, e, f) + xa (c, d, e, f); printf ("14. Периметр треугольника равен %.4g.\n", p); goto aaz; aab: /* 57.4.5. Составьте программу вычисления суммы двух целых чисел, которая будет вести диалог с пользователем в следующем виде (на месте многоточий - вводимые и выводимые числа): ВВЕДИТЕ ДВА СЛАГАЕМЫХ: a = . . . . . b = . . . . . РЕЗУЛЬТАТ ВЫЧИСЛЕНИЙ: a + b = . . . . . */ printf ("5. Введите два слагаемых:\na = "); scanf ("%i", &a); printf ("b = "); scanf ("%i", &b); printf ("Результат вычислений:\na + b = %i.\n\n", a + b); /* 67.3.7. Составить программу, по которой будет вводиться последовательность символов до тех пор, пока не встретится маленькая или большая латинская буква 'z'. Подсчитать, сколько раз среди вводимых символов встречалась буква 'W'. */ printf ("7. Вводите символы: "); n = 0; while (1) { m = getche (); if (m == 'W') n++; if (m == 'z' || m == 'Z') break; } printf (". Число символов 'W' равно %i.\n", n); goto aaz; aac: /* 67.1.6. Получить на экране десятичные коды букв латинского алфавита. */ printf ("6. "); for (m = 'a'; m <= 'z'; m++) { printf ("%c - %i", m, m); if (m < 'z') printf (", "); else printf (".\n"); } /* 68.6.10. Напечатать таблицу значений функции sin x и cos x на отрезке [0, 1] с шагом 0.1 в следующем виде: x sin x cos x ------------------------ 0.0000 0.0000 1.0000 0.1000 0.0998 0.9950 ... ... ... 1.0000 0.8415 0.5403 ------------------------ */ printf ("\nx\t sin x cos x\n------------------------\n"); for (m = 0; m <= 10; m++) printf ("%.4f %.4f %.4f\n", m / 10., sin (m / 10.), cos (m / 10.)); printf ("------------------------\n"); /* 68.7.11. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр. */ printf ("\n"); for (m = 100; m < 1000; m++) if (m / 100 != m / 10 % 10 && m / 100 != m % 10 && m / 10 % 10 != m % 10) printf ("%i ", m); printf ("\n"); goto aaz; aad: printf ("Введите 3 целых числа: "); scanf ("%i%i%i", &a, &b, &c); /* 68.8.12. Дано целое n. Напечатать все простые числа из диапазона [2, n]. */ printf ("12. "); for (m = 2; m < a + 1 && m < 1000; m++) { n = sqrt (m) + 1; o = 1; for (v = 2; v < m; v++) if (m % v == 0) o = 0; if (o) printf (" %i", m); } /* 80.3.15. Даны три целых числа. Определить, сумма цифр которого из них больше. Подсчет суммы цифр организовать через подпрограмму. */ m = xd (a); n = xd (b); o = xd (c); printf ("\n15. "); if (m >= n && m >= o) printf ("Сумма цифр первого числа больше.\n"); else if (n >= m && n >= o) printf ("Сумма цифр второго числа больше.\n"); else printf ("Сумма цифр третьего числа больше.\n"); aaz: getch (); printf ("\n"); } float xa (int a, int b, int c, int d) { int g; g = (a - c) * (a - c) + (b - d) * (b - d); if (g < 0) g = 0; return sqrt (g); } xd (int a) { int b; b = 0; if (a < 0) a = -a; while (a) { b += a % 10; a /= 10; } return b; }
Группа для программистов ( programming )
:Юрий Казекин
/* p11
Основы программирования
Язык Turbo C 2.0 */
/* 1 - 15k, 2 - 21k, 3 - 22k, 4 - 23k, 8 - 24k
10 - 25k, 14 - 26k */
#include <conio.h>
#include <math.h>
#include <stdio.h>
float xa (int, int, int, int); /* расстояние между двумя точками на плоскости */
xd (int); /* сумма цифр числа */
main ()
{
int a, b, c, d, e, f; /* переменные ввода */
float j, k; /* переменные ввода */
int m, n, o, v;
float p, q, r, s, t;
printf ("? (1-4) ");
scanf ("%i", &a);
if (a == 1) goto aaa; /* 6 int, 2 float */
if (a == 2) goto aab; /* ввод данных */
if (a == 3) goto aac; /* нет ввода */
if (a == 4) goto aad; /* 3 int */
printf ("\n");
return;
aaa:
printf ("Введите 6 целых чисел: ");
scanf ("%i%i%i%i%i%i", &a, &b, &c, &d, &e, &f);
printf ("Введите 2 рациональных числа: ");
scanf ("%f%f", &j, &k);
/* 11.1. */
m = a * d;
n = b * c;
printf ("1. %i / %i : %i / %i = %i / %i.\n", a, b, c, d, m, n);
/* 19.2. Составить алгоритм вычисления степенной функции с целым
показателем y = x ^ k, где k - целое число. */
if (j == 0)
printf ("2. 0 ^ %i = 0.\n", a);
else
{
p = 1;
if (a > 0)
for (n = 0; n < a; n++) p *= j;
else
for (n = 0; n > a; n--) p /= j;
printf ("2. %.4g ^ %i = %.4g.\n", j, a, p);
}
/* 21.1.3. Даны декартовы координаты трех вершин треугольника на
плоскости. Составить алгоритм определения площади треугольника. */
p = xa (a, b, c, d);
q = xa (a, b, e, f);
r = xa (c, d, e, f);
s = (p + q + r) / 2;
t = s * (s - p) * (s - q) * (s - r);
if (t < 0) t = 0;
printf ("3. Площадь треугольника %.4g.\n", sqrt (t));
/* 21.2.4. Дана скорость ракеты при выходе за пределы атмосферы Земли.
Составить алгоритм определения того, как будет двигаться ракета после
выключения двигателей. Напомним величины трех космических скоростей:
7,5 км/с, 11,2 км/с, 16,4 км/с. */
printf ("4. ");
if (j < 7.5) printf ("Ракета упадет на Землю");
else if (j == 7.5) printf ("Ракета будет двигаться по круговой орбите вокруг Земли");
else if (j < 11.2) printf ("Ракета будет двигаться по эллипсу вокруг Земли");
else if (j == 11.2) printf ("Ракета улетит от Земли по параболе");
else if (j < 16.4) printf ("Ракета будет двигаться по эллипсу вокруг Солнца");
else if (j == 16.4) printf ("Ракета улетит от Солнца по параболе");
else printf ("Ракета улетит от Солнца по гиперболе");
/* 68.4.8. Вычислить сумму квадратов всех целых чисел, попадающих в
интервал (ln x, exp x). */
p = j;
if (p > 5) p = 5;
if (p <= 0) q = 0; else q = log (p);
r = exp (p); /* Вычислены границы интервала (q, r). */
m = q;
if (m <= q) m++;
o = 0; /* Вычислены границы интервала [m, r). */
for (n = m; n < r; n++) o += n * n;
printf (".\n8. Сумма квадратов чисел равна %i.\n", o);
/* 68.5.9. Вычислить количество точек с целочисленными координатами,
попадающих в круг радиуса R с центром в начале координат. */
m = j;
if (m < j) m++;
if (j < 0) m = -1;
v = 0; /* Вычислены границы интервала [-m, m]. */
for (n = -m; n <= m; n++)
for (o = -m; o <= m; o++)
if (n * n + o * o <= j * j) v++;
printf ("9. Количество точек в круге %i.\n", v);
/* 80.1.13. Составить программу вычисления площади кольца по значениям
внутреннего и внешнего радиусов, используя подпрограмму вычисления
площади круга (два варианта: с процедурой и с функцией). */
printf ("13. Площадь кольца %.4g.\n", 3.1415926 * (j * j - k * k));
/* 80.2.14. По координатам вершин треугольника вычислить его периметр,
используя подпрограмму вычисления длины отрезка, соединяющего две точки.
*/
p = xa (a, b, c, d) + xa (a, b, e, f) + xa (c, d, e, f);
printf ("14. Периметр треугольника равен %.4g.\n", p);
goto aaz;
aab:
/* 57.4.5. Составьте программу вычисления суммы двух целых чисел,
которая будет вести диалог с пользователем в следующем виде (на месте
многоточий - вводимые и выводимые числа):
ВВЕДИТЕ ДВА СЛАГАЕМЫХ:
a = . . . . .
b = . . . . .
РЕЗУЛЬТАТ ВЫЧИСЛЕНИЙ:
a + b = . . . . . */
printf ("5. Введите два слагаемых:\na = ");
scanf ("%i", &a);
printf ("b = ");
scanf ("%i", &b);
printf ("Результат вычислений:\na + b = %i.\n\n", a + b);
/* 67.3.7. Составить программу, по которой будет вводиться
последовательность символов до тех пор, пока не встретится маленькая или
большая латинская буква 'z'. Подсчитать, сколько раз среди вводимых
символов встречалась буква 'W'. */
printf ("7. Вводите символы: ");
n = 0;
while (1)
{
m = getche ();
if (m == 'W') n++;
if (m == 'z' || m == 'Z') break;
}
printf (". Число символов 'W' равно %i.\n", n);
goto aaz;
aac:
/* 67.1.6. Получить на экране десятичные коды букв латинского алфавита. */
printf ("6. ");
for (m = 'a'; m <= 'z'; m++)
{
printf ("%c - %i", m, m);
if (m < 'z') printf (", "); else printf (".\n");
}
/* 68.6.10. Напечатать таблицу значений функции sin x и cos x на
отрезке [0, 1] с шагом 0.1 в следующем виде:
x sin x cos x
------------------------
0.0000 0.0000 1.0000
0.1000 0.0998 0.9950
... ... ...
1.0000 0.8415 0.5403
------------------------ */
printf ("\nx\t sin x cos x\n------------------------\n");
for (m = 0; m <= 10; m++)
printf ("%.4f %.4f %.4f\n", m / 10., sin (m / 10.), cos (m / 10.));
printf ("------------------------\n");
/* 68.7.11. Напечатать в возрастающем порядке все трехзначные числа, в
десятичной записи которых нет одинаковых цифр. */
printf ("\n");
for (m = 100; m < 1000; m++)
if (m / 100 != m / 10 % 10 && m / 100 != m % 10 &&
m / 10 % 10 != m % 10) printf ("%i ", m);
printf ("\n");
goto aaz;
aad:
printf ("Введите 3 целых числа: ");
scanf ("%i%i%i", &a, &b, &c);
/* 68.8.12. Дано целое n. Напечатать все простые числа из диапазона
[2, n]. */
printf ("12. ");
for (m = 2; m < a + 1 && m < 1000; m++)
{
n = sqrt (m) + 1;
o = 1;
for (v = 2; v < m; v++)
if (m % v == 0) o = 0;
if (o) printf (" %i", m);
}
/* 80.3.15. Даны три целых числа. Определить, сумма цифр которого из
них больше. Подсчет суммы цифр организовать через подпрограмму. */
m = xd (a);
n = xd (b);
o = xd (c);
printf ("\n15. ");
if (m >= n && m >= o)
printf ("Сумма цифр первого числа больше.\n");
else
if (n >= m && n >= o)
printf ("Сумма цифр второго числа больше.\n");
else
printf ("Сумма цифр третьего числа больше.\n");
aaz:
getch ();
printf ("\n");
}
float xa (int a, int b, int c, int d)
{
int g;
g = (a - c) * (a - c) + (b - d) * (b - d);
if (g < 0) g = 0;
return sqrt (g);
}
xd (int a)
{
int b;
b = 0;
if (a < 0) a = -a;
while (a)
{
b += a % 10;
a /= 10;
}
return b;
}