Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2017, 17:00   #121
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Кратко о моём опыте программирования на Turbo C

мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 22.11.2017, 17:05   #122
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
Кратко о моём опыте программирования на Turbo C

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 22.11.2017, 17:28   #123
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Потом была версия на "Borland C++ 3.1" для DOS (этой программы), затем на "Visual Basic 5.0" для Windows.
Шутка. Шутка в том, что не вся стопка - эта одна программа. Она просто сверху. Там ещё много чего есть.
В Visual Basic пришлось исправить одну неочевидную ошибку, связанную с тем, что там округление делается не до меньшего целого, как в C, а до ближайшего целого. Из-за этого возникало мелкое расхождение в результатах.
Согласно моему тестированию программа выдавала удовлетворительный результат (независимо от размера исходных данных) даже на древних (ещё по тем временам) 286-ых компьютерах (удалось такой собрать), а на современных претензий к оптимизации не было никаких.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 22.11.2017, 23:06   #124
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

min@y™, узнаю этот кадр
Black Fregat вне форума Ответить с цитированием
Старый 29.11.2017, 03:53   #125
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Программа, демонстрирующая возможности 16-цветной графики.
Код:
/*   Демонстрация цветовой палитры
     Язык Turbo C 2.0                  */

#include <conio.h>
#include <graphics.h>

main ()
{
   int a, b, c;
   int d [4] = {0, 8, 7, 15};

   detectgraph (&a, &b);
   initgraph (&a, &b, "");
   for (a = 0; a < 16; a++)
      for (b = 0; b <= a; b++)
         for (c = 0; c < 12; c++)
         {
            setcolor (a);
            line (a * 30 + c * 2, b * 30, a * 30 + 23, b * 30 + 23 - c * 2);
            line (a * 30, b * 30 + c * 2, a * 30 + 23 - c * 2, b * 30 + 23);

            setcolor (b);
            line (a * 30 + c * 2 + 1, b * 30, a * 30 + 23, b * 30 + 23 - c * 2 - 1);
            line (a * 30, b * 30 + c * 2 + 1, a * 30 + 23 - c * 2 - 1, b * 30 + 23);
         }

   getch ();
   cleardevice ();
   for (a = 0; a < 4; a++)
      for (b = 0; b <= a; b++)
         for (c = 0; c < 12; c++)
         {
            setcolor (d [a]);
            line (a * 30 + c * 2, b * 30, a * 30 + 23, b * 30 + 23 - c * 2);
            line (a * 30, b * 30 + c * 2, a * 30 + 23 - c * 2, b * 30 + 23);

            setcolor (d [b]);
            line (a * 30 + c * 2 + 1, b * 30, a * 30 + 23, b * 30 + 23 - c * 2 - 1);
            line (a * 30, b * 30 + c * 2 + 1, a * 30 + 23 - c * 2 - 1, b * 30 + 23);
         }

   getch ();
   closegraph ();
}
Изображения
Тип файла: png 1a.png (9.9 Кб, 66 просмотров)
Тип файла: png 2a.png (4.6 Кб, 68 просмотров)
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 29.11.2017, 08:17   #126
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Turbo C уже никому не нужен лет эдак двадцать.
Где-то в этом форуме относительно недавно поднималась тема (вроде в помощи студентам), что нужно решить задачки на турбо си для какого-то колледжа :D

Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 29.11.2017, 08:42   #127
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

ф топку такой колледж...
waleri вне форума Ответить с цитированием
Старый 27.01.2018, 16:00   #128
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Продолжаем решать задачи из учебника "Основы программирования".
Сначала были задачи, где нужно было вводить три целых числа. Их решения опубликованы в теме "Ввод чисел с клавиатуры". Потом я перешёл на DOS.
Код:
/*   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;
}
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 28.01.2018, 05:26   #129
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Продолжение того же самого.
В приложении файлы для распечатки и условия задач.
Код:
/*   p80
     Основы программирования - 2
     Язык Turbo C 2.0   */

/*   1 - 22k, 3 - 23k, 6 - 24k, 9 - 25k   */


#include <conio.h>
#include <math.h>
#include <stdio.h>

float xa (int, int, int, int);   /*   расстояние между двумя точками на плоскости   */
float xd (float, float, float);   /*   площадь треугольника по формуле Герона   */


main ()
{
   int a, b, c, d, e, f, g, h;   /*   ввод данных   */
   float j, k, l, m, n;
   int p, q, r, s, t;
   float v, w, y;   /*   ввод данных   */

   printf ("? (1-4) ");
   scanf ("%i", &a);
   if (a == 1) goto aaa;   /*   8 int   */
   if (a == 2) goto aab;   /*   int     */
   if (a == 3) goto aac;   /*   1 int, 3 float   */
   if (a == 4) goto aad;   /*   нет ввода   */
   printf ("\n");
   return;

aaa:
   printf ("Введите 8 целых чисел: ");
   scanf ("%i%i%i%i%i%i%i%i", &a, &b, &c, &d, &e, &f, &g, &h);

   /*   80.4.16. Определить площадь выпуклого четырехугольника по заданным
   координатам вершин. Использовать подпрограмму-функцию вычисления длины
   отрезка и подпрограмму-процедуру вычисления площади треугольника по
   формуле Герона.   */

   j = xa (a, b, c, d);
   k = xa (c, d, g, h);
   l = xa (g, h, a, b);
   m = xd (j, k, l);   /*   площадь первого треугольника   */
   j = xa (c, d, e, f);
   l = xa (e, f, g, h);
   n = xd (j, k, l);   /*   площадь второго треугольника   */
   printf ("16. Площадь четырехугольника %.4g.\n", m + n);

   goto aaz;

aab:
   printf ("Введите целое число: ");
   scanf ("%i", &a);

   /*   82.1.17. Вычислить n-ный элемент арифметической прогрессии:
   a1 = 1, a2 = 3, a3 = 5, ...   */

   p = 1;
   for (q = 1; q < a; q++)  p += 2;
   printf ("17. %i-ый элемент арифметической прогрессии %i.\n", a, p);

   /*   83.2.18. Просуммировать первые n элементов геометрической
   прогрессии, не пользуясь формулой для суммы первых n членов прогрессии:
   a1 = 1, a2 = 2, a3 = 4, a4 = 8, ...   */

   p = 1;
   r = p;
   for (q = 1; q < a; q++)
   {
      p *= 2;
      r += p;
   }

   printf ("18. Сумма %i элементов геометрической прогрессии %i.\n", a, r);

   /*   83.3.19. Вывести на печать первые n чисел Фибоначчи. Подсчитать,
   сколько среди них четных чисел.   */

   p = q = 1;   /*   числа Фибоначчи           */
   t = 0;       /*   количество четных чисел   */

   printf ("19. Числа Фибоначчи:");
   if (a > 0)
   {
      printf (" %i", p);
      for (r = 1; r < a; r++)
      {
	 printf (" %i", q);
	 if (q % 2 == 0)  t++;
	 s = p + q;
	 p = q;
	 q = s;
      }
   }

   printf ("\nКоличество четных чисел: %i.\n", t);

   goto aaz;

aac:
   printf ("Введите целое число: ");
   scanf ("%i", &a);
   printf ("Введите 3 вещественных числа: ");
   scanf ("%f%f%f", &v, &w, &y);

   /*   84.4.20. Для заданного вещественного x и малой величины epsilon
   (например, epsilon = 0,000001) вычислить сумму ряда
   1 + x + x^2 / 2! + x^3 / 3! + ...,
   включив в нее только слагаемые, превышающие epsilon.   */

   j = w;
   if (j < 0)  j = -j;
   if (j == 0)  j = 1;   /*   ограничитель ряда - epsilon   */
   k = 1;   /*   очередной член ряда   */
   l = 0;   /*   сумма ряда   */
   p = 1;   /*   номер члена ряда   */

   while (1)
   {
      if (fabs (k) < j  ||  fabs (k) > 1e10)  break;
      l += k;
      k *= v / p++;
   }

   printf ("20. Сумма ряда %g.\n", l);

   /*   85.5.21. Для заданного натурального N и вещественного x (x > 0)
   вычислить значение выражения:
   sqrt (x + sqrt (x + ... + sqrt (x)...)).   */

   j = v;
   if (j < 0)  j = -j;   /*   исходное число x      */
   k = 0;                /*   очередной член ряда   */
   for (p = 0; p < a; p++)  k = sqrt (j + k);
   printf ("21. Значение выражения %g.\n", k);

   /*   88.5.24. Функцию 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.   */

   printf ("24. x = %.4g, y0 = %.4g, epsilon = %.4g.\n", v, w, y);
   m = v;   /*   значение x         */
   j = w;   /*   значение yk        */
   k = y;   /*   значение epsilon   */
   if (k < 0)  k = -k;
   if (k == 0)  k = 1;
   if (m < 0)  m = 0;

   while (1)
   {
      printf ("%.6g  ", j);
      if (j == 0  ||  v < 0)  break;
      l = j;
      j = .5 * (j + v / j);
      if (fabs (j - l) < k)  break;
   }

   printf ("\nsqrt (%.4g) ў %.6g, ", v, j);
   printf ("sqrt (%.4g) = %.6g.\n", v, sqrt (m));
   goto aaz;

aad:
   /*   87.6.22. В ходе лечебного голодания масса пациента за 30 дней
   снизилась с 96 до 70 кг. Было установлено, что ежедневные потери массы
   пропорциональны массе тела. Вычислить, чему была равна масса пациента
   через k дней после начала голодания для k = 1, 2, ..., 29.   */

   printf ("22. Снижение массы:\n");
   j = exp (1 / 30. * log (70 / 96.));   /*   коэффициент снижения массы   */
   k = 96;
   for (p = 0; p < 31; p++)
   {
      printf ("день %-2i - %.4g кг", p, k);
      if (p % 3 > 1  ||  p > 29) printf ("\n"); else printf ("  \t");
      k *= j;
   }

   /*   88.5.23. Вычислить и вывести все члены числового ряда:
   1, 1 / 2!, 1 / 3!, ..., 1 / N!,
   превышающие значение 10^-5.   */

   j = 1; p = 1;
   printf ("\n23. Члены ряда:\n");
   while (j > 1e-5)
   {
      printf ("%.4g  ", j);
      j /= ++p;
   }

   printf ("\n");

aaz:
   getch ();
   printf ("\n");
}


float xa (int a, int b, int c, int d)
{
   int e;
   e = (a - c) * (a - c) + (b - d) * (b - d);
   if (e < 0)  e = 0;
   return sqrt (e);
}

float xd (float a, float b, float c)
{
   float d, e;
   d = (a + b + c) / 2;
   e = d * (d - a) * (d - b) * (d - c);
   if (e < 0)  e = 0;
   return sqrt (e);
}
Вложения
Тип файла: doc p11j.doc (49.0 Кб, 5 просмотров)
Тип файла: doc p80j.doc (43.0 Кб, 11 просмотров)
Тип файла: txt p12a.txt (4.0 Кб, 123 просмотров)
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 30.01.2018, 06:05   #130
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Да хоть бы уже "Змейку" или "Тетрис" написали, а то так и "останетесь в девках".
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C под DOS jura_k Общие вопросы C/C++ 26 01.08.2015 09:03
Из Dos под Win Nozema Фриланс 3 30.10.2009 17:34
C++ под DOS. Функции Xeon332 Общие вопросы C/C++ 34 29.11.2008 18:01
borland C++под DOS Xeon332 Помощь студентам 9 20.09.2008 20:50