Язык Turbo C 2.0
Начальный курс C и C++ */
/* p85 - 16k, p89 - 17k, p91 - 22k, p92 - 23k, p95 - 25k
t2 - 27k, t5 - 28k, t7 - 29k, t10 - 31k */
#include <conio.h>
#include <ctype.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
sa (); /* нет решений */
sb (); /* решение - любое число */
sc (float); /* один корень */
ta (float, float); /* два корня */
tb (float, float, float); /* три корня */
tc (float, float, float, float); /* четыре корня */
ua (int, int); /* y = x ^ a */
ad (float); /* корни биквадратного уравнения */
ae (float, float); /* корни биквадратного уравнения */
float ya (int, int, int, int); /* расстояние между точками на плоскости */
main ()
{
int aa, ab, ac, ca, cb, cc; /* исходные данные */
int ba, bb, bc;
char da [80], db [20];
char dc [10] = {1, 23, 4, 7, 8, 0, 1, 9, 4, 7};
char ea [5] [20];
char fa [] = "String of Letters in Different Registers.";
float ga, gb, gc;
float ha, hb;
float ia; /* исходные данные */
float *ja;
int *ma, *mb;
int **na;
char *pa;
char *qa [] = {"exe", "com", "dat", "c", "pas", "cpp"};
int va, vb, vc; /* натуральные числа */
printf ("? (1-4) ");
scanf ("%i", &aa);
if (aa == 1) goto aaa; /* стандартные программы без ввода */
if (aa == 2) goto aab; /* стандартные программы с вводом */
if (aa == 3) goto aac; /* программы с произвольным вводом данных */
if (aa == 4) goto aad; /* ввод трех целых чисел */
printf ("\n");
return;
aaa:
strcpy (da, "Привет, ");
strcpy (db, "мир!");
puts (da);
puts (db);
strcat (da, db);
puts (da);
puts (db);
strcpy (ea [0], "Turbo Basic");
strcpy (ea [1], "Turbo Pascal");
strcpy (ea [2], "Borland C++");
strcpy (ea [3], "Turbo Prolog");
strcpy (ea [4], "Paradox");
printf ("Неотсортированный массив:");
for (ba = 0; ba < 10; ba++) printf (" %i", dc [ba]);
for (ba = 0; ba < 9; ba++)
for (bb = 0; bb < 9; bb++)
if (dc [bb] < dc [bb + 1])
{
bc = dc [bb];
dc [bb] = dc [bb + 1];
dc [bb + 1] = bc;
}
printf ("\nОтсортированный массив:");
for (ba = 0; ba < 10; ba++) printf (" %i", dc [ba]);
ga = 10.1;
ja = &ga;
gb = *ja;
printf ("\nga = %.4g, gb = %.4g.\n", ga, gb);
(*ja)++;
printf ("ga = %.4g, gb = %.4g.\n", ga, gb);
gb = 1 + *ja * gb;
printf ("ga = %.4g, gb = %.4g.\n", ga, gb);
ba = 10;
ma = &ba;
mb = ma;
printf ("%p %p ", ma, mb);
printf ("%i %i.\n", ba, *mb);
ga = 10.1;
ma = (int *) &ga;
gb = *ma;
printf ("ga = %.4g, gb = %.4g.\n", ga, gb);
ma = &ba;
printf ("%p, %p.\n", ma, ++ma);
printf ("Строка будет напечатана прописными буквами.\n");
ba = 0;
while (fa [ba]) printf ("%c", toupper (fa [ba++]));
printf ("\nСтрока будет напечатана строчными буквами.\n");
pa = fa;
while (*pa) printf ("%c", tolower (*pa++));
printf ("\n");
ba = 7;
ma = &ba;
na = &ma;
printf ("b = %i, m = %p, n = %p.\n", ba, ma, na);
(*ma)++;
printf ("b = %i, m = %p, n = %p.\n", ba, ma, na);
**na = 12;
printf ("b = %i, m = %p, n = %p.\n", ba, ma, na);
goto aaz;
aab:
printf ("Введите шесть целых чисел: ");
scanf ("%i%i%i%i%i%i", &aa, &ab, &ac, &ca, &cb, &cc);
printf ("Введите рациональное число: ");
scanf ("%f", &ia);
printf ("Введите строку: ");
gets (da); gets (da);
printf ("Строка \"%s\" имеет длину %i символов.\n", da, strlen (da));
/* 11.1. */
ba = aa * ca;
bb = ab * ac;
printf ("1. %i / %i / (%i / %i) = %i / %i.\n", aa, ab, ac, ca, ba, bb);
/* 6. Даны декартовы координаты трех вершин треугольника на плоскости.
Составить алгоритм определения площади треугольника. */
ga = ya (aa, ab, ac, ca);
gb = ya (aa, ab, cb, cc);
gc = ya (ac, ca, cb, cc);
ha = (ga + gb + gc) / 2;
hb = sqrt (ha * (ha - ga) * (ha - gb) * (ha - gc));
printf ("6. Площадь треугольника %.4g.\n", hb);
/* 7. Дана скорость ракеты при выходе за пределы атмосферы Земли.
Составить алгоритм определения того, как будет двигаться ракета после
выключения двигателей. Напомним величины трех космических скоростей:
7,5 км/с; 11,2 км/с; 16,4 км/с. */
printf ("7. ");
if (ia < 7.5)
printf ("Ракета упадет на Землю.\n");
else if (ia == 7.5)
printf ("Ракета будет двигаться по круговой орбите около Земли.\n");
else if (ia < 11.2)
printf ("Ракета будет двигаться по эллиптической орбите около Земли.\n");
else if (ia == 11.2)
printf ("Ракета улетит от Земли по параболе.\n");
else if (ia < 16.4)
printf ("Ракета будет двигаться по эллиптической орбите вокруг Солнца.\n");
else if (ia == 16.4)
printf ("Ракета улетит от Солнца по параболе.\n");
else
printf ("Ракета улетит от Солнца по гиперболе.\n");
goto aaz;
aac:
while (1)
{
do {
printf ("Файлы с расширением: ");
printf ("1. exe; 2. com; 3. dat; 4. c; 5. pas; 6. cpp; 7. quit.\n");
printf ("Ваш выбор: ");
ba = getche ();
printf ("\n");
} while (ba < '1' || ba > '7');
if (ba == '7') break;
strcpy (da, "dir *.");
strcat (da, qa [ba - '1']);
system (da);
printf ("\n");
}
goto aaz;
aad:
printf ("Введите три целых числа: ");
scanf ("%i%i%i", &aa, &ab, &ac);
/* 2. Составить алгоритм решения квадратного уравнения:
ax^2 + bx + c = 0. */
printf ("2. ");
if (aa == 0)
if (ab == 0)
if (ac == 0) sb (); else sa ();
else
sc ((float) -ac / ab);
else
{
ba = ab * ab - 4 * aa * ac;
if (ba < 0) sa (); else
if (ba == 0)
sc (-ab / 2. / aa);
else
ta ((-ab - sqrt (ba)) / 2 / aa, (-ab + sqrt (ba)) / 2 / aa);
}
/* 3. Вычислить n! */
ba = 1;
for (bb = 0; bb < aa; bb++) ba *= bb + 1;
printf ("3. %i! = %i.\n", aa, ba);
/* 4. Даны два натуральных числа M и N. Вычислить их наибольший общий
делитель НОД (M, N). */
ba = aa; bb = ab; bc = ac;
if (ba == -32768 || ba == 0) ba = 1;
if (bb == -32768 || bb == 0) bb = 1;
if (bc == -32768 || bc == 0) bc = 1;
if (ba < 0) ba = -ba;
if (bb < 0) bb = -bb;
if (bc < 0) bc = -bc;
va = ba; vb = bb; vc = bc;
while (ba - bb) if (ba < bb) bb -= ba; else ba -= bb;
printf ("4. НОД (%i, %i) = %i.\n", aa, ab, ba);
/* 5. Составить алгоритм вычисления степенной функции с целым
показателем y = x ^ k, где k - целое число. */
printf ("5. %i ^ %i = ", aa, ab);
if (aa == 0)
printf ("0.\n");
else
if (ab < 0)
printf ("%.4g.\n", 1. / ua (aa, -ab));
else
printf ("%i.\n", ua (aa, ab));
/* 8. Даны три положительных числа. Составить алгоритм, определяющий,
могут ли они быть длинами сторон треугольника. */
if (aa > 0 && ab > 0 && ac > 0 && aa + ab > ac &&
aa + ac > ab && ab + ac > aa)
printf ("8. Числа могут быть длинами сторон треугольника.\n");
else
printf ("8. Числа не могут быть длинами сторон треугольника.\n");
/* 9. Пусть компьютер способен выполнять только две арифметические
операции - сложение и вычитание. Составить алгоритмы:
а) умножения двух целых чисел;
б) целочисленного деления двух чисел;
в) получения остатка от целочисленного деления двух чисел. */
ba = 0;
for (bb = 0; bb < va; bb++) ba += vb;
printf ("9. %i * %i = %i, ", va, vb, ba);
ba = 0; bb = va;
while (bb >= vb) {bb -= vb; ba++;}
printf ("%i / %i = %i, %i %% %i = %i.\n", va, vb, ba, va, vb, bb);
/* 10. Построить алгоритм решения биквадратного уравнения, используя
как вспомогательный алгоритм решения квадратного уравнения:
ax^4 + bx^2 + c = 0. */
printf ("10. ");
if (aa == 0)
if (ab == 0)
if (ac == 0) sb (); else sa ();
else
ad ((float) -ac / ab);
else
{
ba = ab * ab - 4 * aa * ac;
if (ba < 0)
sa ();
else
if (ba == 0)
ad (-ab / 2. / aa);
else
ae ((-ab - sqrt (ba)) / 2 / aa, (-ab + sqrt (ba)) / 2 / aa);
}
/* 11. Составить алгоритм нахождения НОД трех натуральных чисел,
используя вспомогательный алгоритм нахождения НОД двух чисел. */
ba = va; bb = vb; bc = vc;
while (ba - bb) if (ba < bb) bb -= ba; else ba -= bb;
while (ba - bc) if (ba < bc) bc -= ba; else ba -= bc;
printf ("11. НОД (%i, %i, %i) = %i.\n", aa, ab, ac, ba);
aaz:
getch ();
printf ("\n");
}
sa () {printf ("Нет решений.\n");}
sb () {printf ("Решение - любое число.\n");}
sc (float a) {printf ("x = %.4g.\n", a);}
ta (float a, float b) {printf ("x1 = %.4g, x2 = %.4g.\n", a, b);}
tb (float a, float b, float c) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g.\n", a, b, c);}
tc (float a, float b, float c, float d) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g, x4 = %.4g.\n", a, b, c, d);}
ad (float a)
{
if (a < 0) sa (); else
if (a == 0) sc (0); else ta (-sqrt (a), sqrt (a));
}
ae (float a, float b)
{
if (a < 0) ad (b); else
if (a == 0)
if (b < 0) sc (0); else tb (-sqrt (b), 0, sqrt (b));
else
if (b < 0) ta (-sqrt (a), sqrt (a)); else
if (b == 0) tb (-sqrt (a), 0, sqrt (a)); else
tc (-sqrt (b), -sqrt (a), sqrt (a), sqrt (b));
}
ua (int a, int b)
{
int c, d;
c = 1;
for (d = 0; d < b; d++) c *= a;
return c;
}
float ya (int a, int b, int c, int d)
{
int e;
e = (c - a) * (c - a) + (d - b) * (d - b);
if (e < 0) e = 0;
return sqrt (e);
}

Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Комментарии 4