Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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



Ответ
 
Опции темы
Старый 04.12.2016, 07:42   #51
jura_k
неформал
Форумчанин
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 220
Репутация: 21
По умолчанию

Ну вот представьте, что вы пианист, а учиться лень. Более того: на дух не перевариваете официальную теорию. Примерно такая же ситуация. Всё, что я делаю - пытаюсь прочитать хоть какую-то книгу.

Конкретно вот эту книгу - "Основы программирования" - я уже прочитал один раз лет 13 назад...
Но только сейчас, когда взял в руки ещё раз, понял, какая же ерунда там написана, и что её просто невозможно читать.
К тому же там Паскаль. (Непереводимый чукотский акцент.)
Вот и начинаю каждый раз с начала - потому что не получается.

Добавлено: одна только подборка задач чего стоит. Иди туда! Иди сюда! А теперь вот так. А теперь вот этак.
Цирк, а не задачник.
__________________
Мой рабочий стол: sf.uploads.ru/HK58m.png

Последний раз редактировалось jura_k; 04.12.2016 в 07:45.
jura_k вне форума   Ответить с цитированием
Старый 19.12.2016, 06:53   #52
jura_k
неформал
Форумчанин
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 220
Репутация: 21
По умолчанию

В очередной раз решил все те же задачи из задачника. Новая редакция.
В этой программе сгруппированы задачи, которым для работы нужно либо 6 чисел, либо одно рациональное число.

Код:

/*   p11
     Язык Turbo C 2.0
     Основы программирования
     Переменные: int - 6, float - 1   */

/*   1 - 21k, 2 - 22k, 3 - 23k, 5 - 24k   */

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

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


main ()
{
   int a, b, c, d, e, f;   /*   исходные данные   */
   float g;                /*   исходные данные   */
   float j, k, l, m;
   int s, t, u, v;

   printf ("Введите шесть целых чисел: ");
   scanf ("%i%i%i%i%i%i", &a, &b, &c, &d, &e, &f);
   printf ("Введите рациональное число: ");
   scanf ("%f", &g);

   /*   11.1.1.   */

   printf ("1. %i / %i / (%i / %i) = %i / %i.\n", a, b, c, d, a * d, b * c);

   /*   21.1.6. Даны декартовы координаты трех вершин треугольника на
   плоскости. Составить алгоритм определения площади треугольника.   */

   j = p (a, b, c, d);
   k = p (a, b, e, f);
   l = p (c, d, e, f);
   m = q (j, k, l);
   printf ("2. Площадь треугольника %.4g.\n", m);

   /*   21.2.7. Дана скорость ракеты при выходе за пределы атмосферы Земли.
   Составить алгоритм определения того, как будет двигаться ракета после
   выключения двигателей. (Напомним величины трех космических скоростей:
   7,5 км/с; 11,2 км/с; 16,4 км/с.)   */

   printf ("3. ");
   if (g < 7.5)  printf ("Ракета упадет на Землю.\n");
   else if (g == 7.5)  printf ("Ракета будет двигаться по круговой орбите вокруг Земли.\n");
      else if (g < 11.2)  printf ("Ракета будет двигаться вокруг Земли по эллипсу.\n");
	 else if (g == 11.2)  printf ("Ракета улетит от Земли по параболе.\n");
	    else if (g < 16.4)  printf ("Ракета будет двигаться вокруг Солнца по эллипсу.\n");
	       else if (g == 16.4)  printf ("Ракета улетит от Солнца по параболе.\n");
		  else printf ("Ракета улетит от Солнца по гиперболе.\n");

   /*   64.2.28. В следующем фрагменте программы вычисляется сумма конечного
   числа членов гармонического ряда
   1 + 1 / 2 + 1 / 3 + ... + 1 / i + ...
   Суммирование прекращается, когда очередное слагаемое становится меньше
   epsilon или целая переменная i достигает значения maxint.   */

   j = 0;
   s = 1;
   while (1)
   {
      k = 1. / s;
      if (k < g)  break;
      j += k;
      if (s == 32767)  break;
      s++;
   }

   printf ("4. Сумма гармонического ряда равна %.4g.\n", j);

   /*   68.4.32. Вычислить сумму квадратов всех целых чисел, попадающих в
   интервал (ln x, exp x).   */

   j = g > 0 ? g : 1;
   k = log (j);
   l = exp (j);
   s = k;
   if (s <= k)  s++;
   t = l;
   if (t == l)  t--;
   u = 0;
   for (v = s; v < t + 1; v++)  u += v * v;
   printf ("5. Сумма квадратов целых чисел %i.\n", u);

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


float p (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 q (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);
}

__________________
Мой рабочий стол: sf.uploads.ru/HK58m.png
jura_k вне форума   Ответить с цитированием
Старый 20.12.2016, 06:21   #53
jura_k
неформал
Форумчанин
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 220
Репутация: 21
По умолчанию

А в этой программе нужно вводить только три целых числа.
Код:

/*   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);}
/* */

__________________
Мой рабочий стол: sf.uploads.ru/HK58m.png
jura_k вне форума   Ответить с цитированием
Старый 01.01.2017, 13:55   #54
jura_k
неформал
Форумчанин
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 220
Репутация: 21
По умолчанию

Готовый результат.

__________________
Мой рабочий стол: sf.uploads.ru/HK58m.png
jura_k вне форума   Ответить с цитированием
Старый 14.01.2017, 08:49   #55
jura_k
неформал
Форумчанин
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 220
Репутация: 21
По умолчанию

Продолжение того же самого.
Скачать всё:
https://yadi.sk/d/wVfCy0pJ38tAsS



__________________
Мой рабочий стол: sf.uploads.ru/HK58m.png
jura_k вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




20:02.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
таргетированный трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru