А в этой программе нужно вводить только три целых числа.
/* p13 Язык Turbo C 2.0 Основы программирования Переменные: int - 3 */ /* 1 - 22k, 3 - 23k, 7 - 25k, 14 - 26k, 18 - 27k */ #include <conio.h> #include <math.h> #include <stdio.h> d (); /* Нет решений. */ e (); /* Решение - любое число. */ f (float); /* Один корень. */ g (float, float); /* Два корня. */ h (float, float, float); /* Три корня. */ i (float, float, float, float); /* Четыре корня. */ main () { int a, b, c; /* исходные данные */ int j, k; /* натуральные числа */ int l, m, n, o; float p, q; printf ("Введите три целых числа: "); scanf ("%i%i%i", &a, &b, &c); /* 13.1.2. Составить алгоритм решения квадратного уравнения ax^2 + bx + c = 0. */ j = b * b - 4 * a * c; printf ("1. "); if (a == 0) if (b == 0) if (c == 0) e (); else d (); else f ((float) -c / b); else if (j < 0) d (); else if (j == 0) f (-b / 2. / a); else g ((-b - sqrt (j)) / 2 / a, (-b + sqrt (j)) / 2 / a); /* 16.1.3. Вычислить n! */ j = 1; for (k = 1; k < a; k++) j *= k + 1; printf ("2. %i! = %i.\n", a, j); /* 18.1.4. Даны два натуральных числа M и N. Вычислить их наибольший общий делитель НОД (M, N). */ j = a; k = b; if (j < 0) j = -j; if (k < 0) k = -k; if (j == 0) j = 1; if (k == 0) k = 1; l = j; m = k; while (l - m) if (l > m) l -= m; else m -= l; printf ("3. НОД (%i, %i) = %i.\n", a, b, l); /* 19.1.5. Составить алгоритм вычисления степенной функции с целым показателем y = x ^ k, где k - целое число. */ l = 1; for (m = 0; m < k; m++) l *= a; printf ("4. %i ^ %i = ", a, b); if (a == 0) printf ("0.\n"); else if (b == 0) printf ("1.\n"); else if (b > 0) printf ("%i.\n", l); else if (l == 0) printf ("0.\n"); else printf ("%.4g.\n", 1. / l); /* 21.3.8. Даны три положительных числа. Составить алгоритм, определяющий, могут ли они быть длинами сторон треугольника. */ if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a) printf ("5. Числа могут быть длинами сторон треугольника.\n"); else printf ("5. Числа не могут быть длинами сторон треугольника.\n"); /* 21.4.9. Пусть компьютер способен выполнять только две арифметические операции - сложение и вычитание. Составить алгоритмы: а) умножения двух целых чисел; б) целочисленного деления двух чисел; в) получения остатка от целочисленного деления двух чисел. */ l = 0; for (m = 0; m < j; m++) l += k; printf ("6. %i * %i = %i, ", j, k, l); l = 0; m = j; while (m >= k) {m -= k; l++;} printf ("%i / %i = %i, %i %% %i = %i.\n", j, k, l, j, k, m); /* 21.5.10. Построить алгоритм решения биквадратного уравнения, используя как вспомогательный алгоритм решения квадратного уравнения. */ l = b * b - 4 * a * c; printf ("7. "); if (a == 0) if (b == 0) if (c == 0) e (); else d (); else { p = (float) -c / b; if (p < 0) d (); else if (p == 0) f (0); else g (-sqrt (p), sqrt (p)); } else if (l < 0) d (); else if (l == 0) { p = -b / 2. / a; if (p < 0) d (); else if (p == 0) f (0); else g (-sqrt (p), sqrt (p)); } else { p = (-b - sqrt (l)) / 2 / a; q = (-b + sqrt (l)) / 2 / a; if (p < 0) if (q < 0) d (); else if (q == 0) f (0); else g (-sqrt (q), sqrt (q)); else if (p == 0) if (q < 0) f (0); else h (-sqrt (q), 0, sqrt (q)); else if (q < 0) g (-sqrt (p), sqrt (p)); else if (q == 0) h (-sqrt (p), 0, sqrt (p)); else i (-sqrt (q), -sqrt (p), sqrt (p), sqrt (q)); } /* 21.6.11. Составить алгоритм нахождения НОД трех натуральных чисел, используя вспомогательный алгоритм нахождения НОД двух чисел. */ l = c; if (l < 0) l = -l; if (l == 0) l = 1; m = j; n = k; while (m - n) if (m > n) m -= n; else n -= m; n = l; while (m - n) if (m > n) m -= n; else n -= m; printf ("8. НОД (%i, %i, %i) = %i.\n", a, b, c, m); /* 33.1.12. */ l = a; if (l < b) l = b; if (l < c) l = c; printf ("9. max (%i, %i, %i) = %i.\n", a, b, c, l); /* 48.9.21. Присвоить целой переменной h значение цифры, стоящей в разряде сотен в записи положительного целого числа k (например, если k = 28796, то h = 7). */ printf ("10. Число сотен равно %i.\n", a % 1000 / 100); /* 48.10.22. Целой переменной S присвоить значение суммы цифр трехзначного целого числа k. */ l = a % 1000; m = l / 100 + l / 10 % 10 + l % 10; printf ("11. Сумма цифр равна %i.\n", m); /* 63.1.27. По длинам трех сторон треугольника a, b, c вычислить его площадь. */ p = (a + b + c) / 2.; q = p * (p - a) * (p - b) * (p - c); if (q < 0) q = 0; printf ("12. Площадь треугольника %.4g.\n", sqrt (q)); /* 65.1.29. Вычислить сумму целых чисел от M до N путем прямого суммирования. */ l = 0; m = a; while (1) { if (m > b) break; l += m; if (m == 32767) break; m++; } printf ("13. Сумма чисел от %i до %i равна %i.\n", a, b, l); /* 68.6.34. */ printf ("\nx\tsin x\t cosx\n"); printf ("-----------------------\n"); for (l = 0; l < 11; l++) { p = l / 10.; printf ("%-.4g\t%-.4f\t %-.4g\n", p, sin (p), cos (p)); } printf ("-----------------------\n\n"); /* 68.7.35. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр. */ for (l = 1; l < 10; l++) for (m = 0; m < 10; m++) for (n = 0; n < 10; n++) if (l - m && m - n && l - n) printf ("%i%i%i ", l, m, n); /* 68.8.36. Дано целое n > 2. Напечатать все простые числа из диапазона [2, n]. */ printf ("\n\n16. Простые числа: "); for (l = 2; l <= a; l++) { m = sqrt (l); n = 0; for (o = 2; o < m + 1; o++) if (l % o == 0) n = 1; if (n == 0) printf ("%i ", l); if (l > 32766) break; } /* 70.1.37. С помощью приведенной программы определите на вашем компьютере величину машинного epsilon. */ p = 1; while (1 + p > 1) p /= 2; printf ("\n\n17. Машинный эпсилон %.4g.\n", p); /* 71.6.41. Проведите эксперимент на исследование целочисленного переполнения, т.е. установите, что происходит с целой переменной, когда ее значение превышает maxint. */ l = 32766; printf ("18. Целочисленное переполнение: %i - %u, ", l, l); l++; printf ("%i - %u, ", l, l); l++; printf ("%i - %u,\n", l, l); l++; printf ("%i - %u.\n", l, l); getch (); printf ("\n"); } d () {printf ("Решений нет.\n");} e () {printf ("Решение - любое число.\n");} f (float a) {printf ("x = %.4g.\n", a);} g (float a, float b) {printf ("x1 = %.4g, x2 = %.4g.\n", a, b);} h (float a, float b, float c) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g.\n", a, b, c);} i (float a, float b, float c, float d) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g, x4 = %.4g.\n", a, b, c, d);} /* */
Группа для программистов ( programming )
:Юрий Казекин
А в этой программе нужно вводить только три целых числа.
/* p13
Язык Turbo C 2.0
Основы программирования
Переменные: int - 3 */
/* 1 - 22k, 3 - 23k, 7 - 25k, 14 - 26k, 18 - 27k */
#include <conio.h>
#include <math.h>
#include <stdio.h>
d (); /* Нет решений. */
e (); /* Решение - любое число. */
f (float); /* Один корень. */
g (float, float); /* Два корня. */
h (float, float, float); /* Три корня. */
i (float, float, float, float); /* Четыре корня. */
main ()
{
int a, b, c; /* исходные данные */
int j, k; /* натуральные числа */
int l, m, n, o;
float p, q;
printf ("Введите три целых числа: ");
scanf ("%i%i%i", &a, &b, &c);
/* 13.1.2. Составить алгоритм решения квадратного уравнения
ax^2 + bx + c = 0. */
j = b * b - 4 * a * c;
printf ("1. ");
if (a == 0)
if (b == 0)
if (c == 0) e (); else d ();
else
f ((float) -c / b);
else
if (j < 0)
d ();
else
if (j == 0)
f (-b / 2. / a);
else
g ((-b - sqrt (j)) / 2 / a, (-b + sqrt (j)) / 2 / a);
/* 16.1.3. Вычислить n! */
j = 1;
for (k = 1; k < a; k++) j *= k + 1;
printf ("2. %i! = %i.\n", a, j);
/* 18.1.4. Даны два натуральных числа M и N. Вычислить их наибольший
общий делитель НОД (M, N). */
j = a;
k = b;
if (j < 0) j = -j;
if (k < 0) k = -k;
if (j == 0) j = 1;
if (k == 0) k = 1;
l = j;
m = k;
while (l - m) if (l > m) l -= m; else m -= l;
printf ("3. НОД (%i, %i) = %i.\n", a, b, l);
/* 19.1.5. Составить алгоритм вычисления степенной функции с целым
показателем y = x ^ k, где k - целое число. */
l = 1;
for (m = 0; m < k; m++) l *= a;
printf ("4. %i ^ %i = ", a, b);
if (a == 0)
printf ("0.\n");
else
if (b == 0)
printf ("1.\n");
else
if (b > 0)
printf ("%i.\n", l);
else
if (l == 0)
printf ("0.\n");
else
printf ("%.4g.\n", 1. / l);
/* 21.3.8. Даны три положительных числа. Составить алгоритм,
определяющий, могут ли они быть длинами сторон треугольника. */
if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)
printf ("5. Числа могут быть длинами сторон треугольника.\n");
else
printf ("5. Числа не могут быть длинами сторон треугольника.\n");
/* 21.4.9. Пусть компьютер способен выполнять только две арифметические
операции - сложение и вычитание. Составить алгоритмы:
а) умножения двух целых чисел;
б) целочисленного деления двух чисел;
в) получения остатка от целочисленного деления двух чисел. */
l = 0;
for (m = 0; m < j; m++) l += k;
printf ("6. %i * %i = %i, ", j, k, l);
l = 0;
m = j;
while (m >= k) {m -= k; l++;}
printf ("%i / %i = %i, %i %% %i = %i.\n", j, k, l, j, k, m);
/* 21.5.10. Построить алгоритм решения биквадратного уравнения,
используя как вспомогательный алгоритм решения квадратного уравнения. */
l = b * b - 4 * a * c;
printf ("7. ");
if (a == 0)
if (b == 0)
if (c == 0) e (); else d ();
else
{
p = (float) -c / b;
if (p < 0)
d ();
else
if (p == 0)
f (0);
else
g (-sqrt (p), sqrt (p));
}
else
if (l < 0)
d ();
else
if (l == 0)
{
p = -b / 2. / a;
if (p < 0)
d ();
else
if (p == 0)
f (0);
else
g (-sqrt (p), sqrt (p));
}
else
{
p = (-b - sqrt (l)) / 2 / a;
q = (-b + sqrt (l)) / 2 / a;
if (p < 0)
if (q < 0)
d ();
else
if (q == 0)
f (0);
else
g (-sqrt (q), sqrt (q));
else
if (p == 0)
if (q < 0)
f (0);
else
h (-sqrt (q), 0, sqrt (q));
else
if (q < 0)
g (-sqrt (p), sqrt (p));
else
if (q == 0)
h (-sqrt (p), 0, sqrt (p));
else
i (-sqrt (q), -sqrt (p), sqrt (p), sqrt (q));
}
/* 21.6.11. Составить алгоритм нахождения НОД трех натуральных чисел,
используя вспомогательный алгоритм нахождения НОД двух чисел. */
l = c;
if (l < 0) l = -l;
if (l == 0) l = 1;
m = j;
n = k;
while (m - n) if (m > n) m -= n; else n -= m;
n = l;
while (m - n) if (m > n) m -= n; else n -= m;
printf ("8. НОД (%i, %i, %i) = %i.\n", a, b, c, m);
/* 33.1.12. */
l = a;
if (l < b) l = b;
if (l < c) l = c;
printf ("9. max (%i, %i, %i) = %i.\n", a, b, c, l);
/* 48.9.21. Присвоить целой переменной h значение цифры, стоящей в
разряде сотен в записи положительного целого числа k (например, если
k = 28796, то h = 7). */
printf ("10. Число сотен равно %i.\n", a % 1000 / 100);
/* 48.10.22. Целой переменной S присвоить значение суммы цифр
трехзначного целого числа k. */
l = a % 1000;
m = l / 100 + l / 10 % 10 + l % 10;
printf ("11. Сумма цифр равна %i.\n", m);
/* 63.1.27. По длинам трех сторон треугольника a, b, c вычислить его
площадь. */
p = (a + b + c) / 2.;
q = p * (p - a) * (p - b) * (p - c);
if (q < 0) q = 0;
printf ("12. Площадь треугольника %.4g.\n", sqrt (q));
/* 65.1.29. Вычислить сумму целых чисел от M до N путем прямого
суммирования. */
l = 0;
m = a;
while (1)
{
if (m > b) break;
l += m;
if (m == 32767) break;
m++;
}
printf ("13. Сумма чисел от %i до %i равна %i.\n", a, b, l);
/* 68.6.34. */
printf ("\nx\tsin x\t cosx\n");
printf ("-----------------------\n");
for (l = 0; l < 11; l++)
{
p = l / 10.;
printf ("%-.4g\t%-.4f\t %-.4g\n", p, sin (p), cos (p));
}
printf ("-----------------------\n\n");
/* 68.7.35. Напечатать в возрастающем порядке все трехзначные числа, в
десятичной записи которых нет одинаковых цифр. */
for (l = 1; l < 10; l++)
for (m = 0; m < 10; m++)
for (n = 0; n < 10; n++)
if (l - m && m - n && l - n) printf ("%i%i%i ", l, m, n);
/* 68.8.36. Дано целое n > 2. Напечатать все простые числа из диапазона
[2, n]. */
printf ("\n\n16. Простые числа: ");
for (l = 2; l <= a; l++)
{
m = sqrt (l);
n = 0;
for (o = 2; o < m + 1; o++) if (l % o == 0) n = 1;
if (n == 0) printf ("%i ", l);
if (l > 32766) break;
}
/* 70.1.37. С помощью приведенной программы определите на вашем
компьютере величину машинного epsilon. */
p = 1;
while (1 + p > 1) p /= 2;
printf ("\n\n17. Машинный эпсилон %.4g.\n", p);
/* 71.6.41. Проведите эксперимент на исследование целочисленного
переполнения, т.е. установите, что происходит с целой переменной, когда
ее значение превышает maxint. */
l = 32766;
printf ("18. Целочисленное переполнение: %i - %u, ", l, l);
l++;
printf ("%i - %u, ", l, l);
l++;
printf ("%i - %u,\n", l, l);
l++;
printf ("%i - %u.\n", l, l);
getch ();
printf ("\n");
}
d () {printf ("Решений нет.\n");}
e () {printf ("Решение - любое число.\n");}
f (float a) {printf ("x = %.4g.\n", a);}
g (float a, float b) {printf ("x1 = %.4g, x2 = %.4g.\n", a, b);}
h (float a, float b, float c) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g.\n", a, b, c);}
i (float a, float b, float c, float d) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g, x4 = %.4g.\n", a, b, c, d);}
/* */