
Известный
   
Текущее настроение: 
Вст. ник |
Цитата
Группа: Жители
Сообщений: 946
Регистрация: 29.05.2013
Пользователь №: 68270
Из: Тольятти
Награды: 4
Подарки: 19
Имя: jura_k
Пол: М
Репутация: 57

|
Ещё раз то же самое. 20 задач, 10 килобайт кода, 28 килобайт исполняемого файла. Условия задач: » Кликните сюда для просмотра оффтоп текста.. « 11.1.1. алг Деление дробей нач цел a, b, c, d, m, n; ввод a, b, c, d; m = a * d; n = b * c; вывод m, n; кон 13.1.2. Составить алгоритм решения квадратного уравнения ax^2 + bx + c = 0. 16.1.3. Дано целое положительное число n. Вычислить n! 18.1.4. Даны два натуральных числа M и N. Вычислить их наибольший общий делитель НОД (M, N). 19.1.5. Составить алгоритм вычисления степенной функции с целым показателем y = x^k, где k - целое число, x != 0. 21.1.6. Даны декартовы координаты трех вершин треугольника на плоскости. Составить алгоритм определения площади треугольника. 21.2.7. Дана скорость ракеты при выходе за пределы атмосферы Земли. Составить алгоритм определения того, как будет двигаться ракета после выключения двигателей. (Напомним величины трех космических скоростей: 7,5 км/с; 11,2 км/с; 16,4 км/с.) 21.3.8. Даны три положительных числа. Составить алгоритм, определяющий, могут ли они быть длинами сторон треугольника. 21.4.9. Пусть компьютер способен выполнять только две арифметические операции - сложение и вычитание. Составить алгоритмы: а) умножения двух целых чисел; б) целочисленного деления двух чисел; в) получения остатка от целочисленного деления двух чисел. 21.5.10. Построить алгоритм решения биквадратного уравнения, используя как вспомогательный алгоритм решения квадратного уравнения. 21.6.11. Составить алгоритм нахождения НОД трех натуральных чисел, используя вспомогательный алгоритм нахождения НОД двух чисел. 33.1.12. Оттранслируйте с алгоритмического языка алгоритм выбора наибольшего значения из трех. 46.1.13. Для следующих формул записать соответствующие арифметические выражения: а) a + bx + cyz; б) ((ax - b)x + c)x - d; в) (a + b) / c + c / ab; г) (x + y) / a1 * a2 / (x - y); д) 10^4 alpha - 3 1/5 beta; е) (1 + x / 2! + y / 3!) / (1 + 2 / (3 + xy)). 47.2.14. Записать математические формулы, соответствующие следующим выражениям: а) (p + q) / (r + s) - p * q / (r * s); б) 1e3 + beta / (x - gamma * delta); в) a / b * (c + d) - (a - b) / b / c + 1e-8. 47.3.15. Почему аргумент функции всегда записывают в скобках? Например, пишут ln (5), а не ln 5? 47.4.16. Для следующих формул записать соответствующие арифметические выражения: а) (1 + x)^2; б) sqrt (1 + x^2); в) cos^2 x^2; г) log2 x/5; д) arcsin x; е) (exp x + exp -x) / 2; ж) x ^ sqrt 2; з) (1 + x) ^ 1/3; и) sqrt (x^8 + 8^x); к) (xyz - 3.3 abs (x + y ^ 1/4)) / (10^7 + ln 4!); л) (beta + sin^2 pi^4) / (cos 2 + abs ctg gamma). 47.5.17. Вычислить значения выражений: а) trunc (6.9); б) trunc (6.2); в) 20 div 6; г) 2 div 5; д) round (6.9); е) round (6.2); ж) 20 mod 6; з) 2 mod 5; и) 3 * 7 div 2 mod 7 / 3 - trunc (sin (1)). 47.6.18. Определить тип выражения: а) 1 + 0.; б) 20 / 4; в) sqr (4); г) sqrt (16); д) sin (0); е) trunc (-3.14). 47.7.19. Если y - вещественная переменная, а n - целая, то какие из следующих операторов присваивания правильные, а какие нет: а) y = n + 1; б) n = y - 1; в) n = 4.; г) y = trunc (y); д) y = n div 2; е) y = y div 2; ж) n = n / 2; з) n = sqr (sqrt (n)). 47.8.20. Поменять местами значения целых переменных x и y, не используя дополнительные переменные. Найдя такой алгоритм, определить, в чем его недостаток по сравнению с методом обмена через третью переменную. Можно ли его применять для вещественных чисел? ----- 48.9.21. Присвоить целой переменной h значение цифры, стоящей в разряде сотен в записи положительного целого числа k (например, если k = 28796, то h = 7). 48.10.22. Целой переменной S присвоить значение суммы цифр трехзначного целого числа k. 48.11.23. Какую задачу решает следующая программа? Можно ли того же самого результата достичь более простым способом? program test type natur = 1..maxint; var n: natur; x: real; begin readln (n); x = 0; while n > 0 do begin x = x + 1; n = n - 1; end; writeln (x); end. 56.1.24. Что будет напечатано в результате работы программы, если в качестве исходных данных заданы числа 10 и -20? program roots; var b, c, d: real; begin read (b, c); d = sqrt (sqr (b) - 4 * c); writeln ('x1 = ', (-b + d) / 2, ', x2 = ', (-b - d) / 2); end. 56.2.25. Что будет напечатано в результате работы программы, если последовательно вводятся два значения 34, 79? program less; var x: real; t: boolean; begin read (x); t = x < round (x); read (x); t = t and (x < trunc (x)); writeln (t); end. 56.3.26. Что будет напечатано в результате работы программы, если последовательно вводятся три числа: 36, -6, 2345? program abc; var a, b: integer; begin read (a, b, a); writeln (a, b:2, a:5); end. 57.4.27. Составьте программу вычисления суммы двух целых чисел, которая будет вести диалог с пользователем в следующем виде (на месте многоточий - вводимые и выводимые числа): ВВЕДИТЕ ДВА СЛАГАЕМЫХ a = . . . . . b = . . . . . РЕЗУЛЬТАТ ВЫЧИСЛЕНИЙ a + b = . . . . . 62.1.28. Вычислить значения логических выражений: а) k mod 7 = k div 5 - 1, k = 15; б) odd (trunc (10 * p)), p = .182; в) not odd (n), n = 0; г) t and (p mod 3 = 0), t = true, p = 10101; д) (x * y != 0) and (y > x), x = 2, y = 1; е) a or not b, a = false, b = true. а) (1 = 3 - 1) = false; б) odd (1) = true; в) true; г) true and true = true; д) true and false = false; е) fasle or false = false. 62.2.29. Если a = true и x = 1, то какое значение получит логическая переменная d после выполнения оператора присваивания: а) d = x < 2; б) d = not a or odd (x); в) d = ord (a) != x. а) true; б) false or true = true; в) 1 != 1 = false. 62.3.30. Написать оператор присваивания, в результате выполнения которого логическая переменная t получит значение true, если высказывание истинно, и значение false в противном случае для следующих высказываний: а) из чисел x, y, z только два равны между собой; б) x положительное число; в) каждое из чисел x, y, z положительно; г) только одно из чисел x, y, z положительно; д) p делится нацело на q; е) цифра 5 входит в десятичную запись трехзначного целого числа k. а) a = x == y && x != z || (x == z || y == z) && x != y; б) a = x > 0; в) a = x > 0 && y > 0 && z > 0; г) a = x > 0 && y <= 0 && z <= 0 || x <= 0 && (y > 0 && z <= 0 || y <= 0 && z > 0); д) a = p % q == 0; е) a = k % 10 == 5 || k / 10 % 10 == 5 || k / 100 == 5. 63.1.31. По длинам трех сторон треугольника a, b, c вычислить его площадь. 64.2.32. В следующем фрагменте программы вычисляется сумма конечного числа членов гармонического ряда: 1 + 1 / 2 + 1 / 3 + ... + 1 / i + ... Суммирование прекращается, когда очередное слагаемое становится меньше epsilon или целая переменная i достигает значения maxint. 65.1.33. Вычислить сумму целых чисел от M до N путем прямого суммирования. 67.1.34. Получить на экране коды букв латинского алфавита. 67.3.35. Составить программу, по которой будет вводиться последовательность символов до тех пор, пока не встретится маленькая или большая латинская буква z. Подсчитать, сколько раз среди вводимых символов встречалась буква W. 68.4.36. Вычислить сумму квадратов всех целых чисел, попадающих в интервал (ln x, exp x), x > 1. 68.5.37. Вычислить количество точек с целочисленными координатами, попадающих в круг радиуса R (R > 0) с центром в начале координат. 68.6.38. Напечатать таблицу значений функции 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 68.7.39. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр. 68.8.40. Дано целое n > 2. Напечатать все простые числа из диапазона [2, n]. ----- Решение задач: » Кликните сюда для просмотра оффтоп текста.. « Код /* p11 Основы программирования Язык Turbo C 2.0 */
/* 1 - 15k, 2 - 22k, 4 - 23k, 6 - 24k, 10 - 26k 13 - 27k, 20 - 28k */
#include <conio.h> #include <math.h> #include <stdio.h>
aa (); ab (); ac (float); ad (float, float); ae (float, float, float); af (float, float, float, float); ag (int); /* перевод целого числа в натуральное */
float aj (int, int, int, int); /* расстояние между двумя точками на плоскости */ float ak (float, float, float); /* площадь треугольника по формуле Герона */
main () { int a, b, c, d, e, f; /* ввод данных */ float g; /* ввод данных */ int j, k, l; /* натуральные числа */ int m, n, o; float p, q, r;
printf ("? (1-3) "); scanf ("%i", &a); if (a == 1) goto aaa; /* 3 int */ if (a == 2) goto aab; /* 6 int, 1 float */ if (a == 3) goto aac; /* специальный ввод */ printf ("\n"); return;
aaa: printf ("Введите три целых числа: "); scanf ("%i%i%i", &a, &b, &c);
/* 13.1.2.2. Составить алгоритм решения квадратного уравнения ax^2 + bx + c = 0. */
printf ("2. "); if (a == 0) if (b == 0) if (c == 0) ab (); else aa (); else { p = (float) -c / b; ac (p); } else { m = b * b - 4 * a * c; if (m < 0) aa (); else if (m == 0) { p = -b / 2. / a; ac (p); } else { p = (-b - sqrt (m)) / 2 / a; q = (-b + sqrt (m)) / 2 / a; ad (p, q); } }
/* 16.1.3.3. Дано целое положительное число n. Вычислить n! */
m = 1; n = a + 1; for (o = 2; o < n; o++) m *= o; printf ("3. %i! = %i.\n", a, m);
/* 18.1.4.4. Даны два натуральных числа M и N. Вычислить их наибольший общий делитель НОД (M, N). */
m = j = ag (a); n = k = ag (b); l = ag (c); while (m - n) if (m > n) m -= n; else n -= m; printf ("4. НОД (%i, %i) = %i.\n", a, b, m);
/* 21.3.8.8. Даны три положительных числа. Составить алгоритм, определяющий, могут ли они быть длинами сторон треугольника. */
if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)
printf ("8. Числа могут быть длинами сторон треугольника.\n"); else printf ("8. Числа не могут быть длинами сторон треугольника.\n");
/* 21.4.9.9. Пусть компьютер способен выполнять только две арифметические операции - сложение и вычитание. Составить алгоритмы: а) умножения двух целых чисел; б) целочисленного деления двух целых чисел; в) получения остатка от целочисленного деления двух чисел. */
m = 0; for (n = 0; n < k; n++) m += j; printf ("9. %i * %i = %i, ", j, k, m); m = j; n = 0; while (m >= k) {m -= k; n++;} printf ("%i / %i = %i, %i %% %i = %i.\n", j, k, n, j, k, m);
/* 21.5.10.10. Построить алгоритм решения биквадратного уравнения, используя как вспомогательный алгоритм решения квадратного уравнения. */
printf ("10. "); if (a == 0) if (b == 0) if (c == 0) ab (); else aa (); else { p = (float) -c / b; if (p < 0) aa (); else if (p == 0) ac (0); else ad (-sqrt (p), sqrt (p)); } else { m = b * b - 4 * a * c; /* дискриминант биквадратного уравнения */ if (m < 0) aa (); else if (m == 0) { p = -b / 2. / a; if (p < 0) aa (); else if (p == 0) ac (0); else ad (-sqrt (p), sqrt (p)); } else { p = (-b - sqrt (m)) / 2 / a; q = (-b + sqrt (m)) / 2 / a; if (p < 0) if (q < 0) aa (); else if (q == 0) ac (0); else ad (-sqrt (q), sqrt (q)); else if (p == 0) if (q < 0) ac (0); else ae (-sqrt (q), 0, sqrt (q)); else if (q < 0) ad (-sqrt (p), sqrt (p)); else if (q == 0) ae (-sqrt (p), 0, sqrt (p)); else af (-sqrt (q), -sqrt (p), sqrt (p), sqrt (q)); } } /* 1 */
/* 21.6.11.11. Составить алгоритм нахождения НОД трех натуральных чисел, используя как вспомогательный алгоритм находения НОД двух чисел. */
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 ("11. НОД (%i, %i, %i) = %i.\n", a, b, c, m);
/* 33.1.12.12. Оттранслируйте с алгоритмического языка алгоритм выбора наибольшего значения из трех. */
printf ("12. "); if (a >= b && a >= c) printf ("Первое число больше.\n"); else if (b >= a && b >= c) printf ("Второе число больше.\n"); else printf ("Третье число больше.\n");
/* 48.9.21.13. Присвоить целой переменной h значение цифры, стоящей в разряде сотен в записи положительного целого числа k (например, если k = 28796, то h = 7). */
printf ("13. h = %i.\n", a / 100 % 10);
/* 48.10.22.14. Целой переменной S присвоить значение суммы цифр трехзначного целого числа k. */
m = 0; n = a; while (n) { m += n % 10; n /= 10; }
printf ("14. Сумма цифр числа %i.\n", m);
/* 63.1.31.16. По длинам трех сторон треугольника a, b, c вычислить его площадь. */
printf ("16. Площадь треугольника %.4g.\n", ak (a, b, c));
/* 64.2.32.17. В следующем фрагменте программы вычисляется сумма конечного числа членов гармонического ряда: 1 + 1 / 2 + 1 / 3 + ... + 1 / i + ... Суммирование прекращается, когда очередное слагаемое становится меньше epsilon или целая переменная i достигает значения maxint. */
p = 0; m = a; while (m > 0) p += 1. / m--; printf ("17. Сумма гармонического ряда %g.\n", p);
/* 65.1.33.18. Вычислить сумму целых чисел от M до N путем прямого суммирования. */
m = 0; /* сумма */ n = a; /* счетчик */ while (1) { if (n > b) break; m += n; if (n == 32767) break; n++; }
printf ("18. Сумма чисел от %i до %i равна %i.\n", a, b, m);
/* 67.1.34.19. Получить на экране коды букв латинского алфавита. */
printf ("19.\n"); for (m = 'a'; m <= 'z'; m++) printf ("%c - %-3i ", m, m); printf ("\n");
goto aaz;
aab: printf ("Введите шесть целых чисел: "); scanf ("%i%i%i%i%i%i", &a, &b, &c, &d, &e, &f); printf ("Введите рациональное число: "); scanf ("%f", &g);
/* 11.1.1.1. Деление дробей. */
printf ("1. %i / %i : %i / %i = %i / %i.\n", a, b, c, d, a * d, b * c);
/* 19.1.5.5. Составить алгоритм вычисления степенной функции с целым показателем y = x^k, где k - целое число, x != 0. */
if (!g) p = 0; else { p = 1; if (a > 0) for (m = 0; m < a; m++) p *= g; if (a < 0) for (m = 0; m > a; m--) p /= g; }
printf ("5. %g ^ %i = %g.\n", g, a, p);
/* 21.1.6.6. Даны декартовы координаты трех вершин треугольника на плоскости. Составить алгоритм определения площади треугольника. */
p = aj (a, b, c, d); q = aj (a, b, e, f); r = aj (c, d, e, f); printf ("6. Площадь треугольника %g.\n", ak (p, q, r));
/* 21.2.7.7. Дана скорость ракеты при выходе за пределы атмосферы Земли. Составить алгоритм определения того, как будет двигаться ракета после выключения двигателей. (Напомним величины трех космических скоростей: 7,5 км/с; 11,2 км/с; 16,4 км/с.) */
printf ("7. Ракета "); if (g < 7.5) printf ("упадет на Землю"); else if (g == 7.5) printf ("будет двигаться вокруг Земли по кругу"); else if (g < 11.2) printf ("будет двигаться вокруг Земли по эллипсу"); else if (g == 11.2) printf ("будет двигаться вокруг Солнца по кругу"); else if (g < 16.4) printf ("будет двигаться вокруг Солнца по эллипсу"); else if (g == 16.4) printf ("улетит от Солнца по параболе"); else printf ("улетит от Солнца по гиперболе");
printf (".\n");
goto aaz;
aac: /* 57.4.27.15. Составьте программу вычисления суммы двух целых чисел, которая будет вести диалог с пользователем в следующем виде (на месте многоточий - вводимые и выводимые числа):
ВВЕДИТЕ ДВА СЛАГАЕМЫХ a = . . . . . b = . . . . . РЕЗУЛЬТАТ ВЫЧИСЛЕНИЙ a + b = . . . . . */
printf ("15. Введите два слагаемых:\na = "); scanf ("%i", &a); printf ("b = "); scanf ("%i", &b); printf ("Результат вычислений:\na + b = %i\n\n", a + b);
/* 67.3.35.20. Составить программу, по которой будет вводиться последовательность символов до тех пор, пока не встретится маленькая или большая латинская буква z. Подсчитать, сколько раз среди вводимых символов встречалась буква W. */
printf ("20. Введите символ: "); b = 0; while (1) { a = getche (); if (a == 'z') break; if (a == 'W') b++; }
printf ("\nБуква W встретилась %i раз.\n", b);
aaz: j++; k++; l++; getch (); printf ("\n"); }
aa () {printf ("Нет решений.\n");} ab () {printf ("Решение - любое число.\n");} ac (float a) {printf ("x = %.4g.\n", a);} ad (float a, float b) {printf ("x1 = %.4g, x2 = %.4g.\n", a, b);} ae (float a, float b, float c) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g.\n", a, b, c);} af (float a, float b, float c, float d) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g, x4 = %.4g.\n", a, b, c, d);}
ag (int a) { if (a == -32768) a = 32767; if (a < 0) a = -a; if (!a) a = 1; return a; }
float aj (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); }
float ak (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); }
--------------------
Вот почему букеты из шаров придумали, а аниме-библиотеку – нет? Ведь то же самое (bunch – связка).
--------------------
Подарки: (Всего подарков: 19 )
|