Сегодня мы с вами продолжаем решать задачи Begin11-20. В этой статье не будет блок-схем вообще. «Почему?» — спросите вы. Потому что на данном этапе задачи настолько просты, и настолько дублируют друг друга, что смысла в подробном разборе просто нет.
Begin11. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их модулей.
Для того, чтобы решить данную задачу вы должны вспомнитьвстроенную в Паскаль функцию. Эта функция — abs. Кроме того, хотелось бы рассказать еще об одной интересной фишке. Наверняка, во время тестирования какой-либо программы вы сталкивались с проблемой типа Real. Считая корни, синусы, косинусы и прочее получается примерно такое число — 0.784674838737. Как избежать этого? Для этого после переменной прописываются определенные параметры. Например, write(a:5:2), где 5 — ширина поля вывода, а 2 количество знаков после запятой.
program Begin11; var a, b, summ, razn, proizv, chast: real; begin write('Введите два числа: '); read(a, b); a := abs(a); {используем функцию} b := abs(b); summ := a + b; proizv := a * b; chast := a / b; razn := a - b; writeln('Сумма модулей -- ', summ:5:2); writeln('Разность модулей -- ', razn:5:2); writeln('Частное модулей -- ', chast:5:2); writeln('Произведение модулей -- ', proizv:5:2); end.
Begin12. Даны катеты прямоугольного треугольника a и b.
Найти его гипотенузу c и периметр P: c = √(a2 + b2), P = a + b + c.
Ничего сложного в этой задаче нет.
program Begin12; var a, b, c, p: real; begin write('Введите два катета прямоугольного треугольника: '); read(a, b); c := sqrt(sqr(a) + sqr(b)); p := a + b + c; writeln('Периметр -- ', p:5:2); writeln('Гипотенуза -- ', c:5:2); end.
Begin13. Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2. S1 = π·(R1)2, S2 = π·(R2)2, S3 = S1 – S2. В качестве значения π использовать 3.14.
Не забываем указывать pi, как константу.
program Begin13; const pi = 3.14; var R1, R2, S1, S2, S3: real; begin write('Введите два радиуса: '); read(R1, R2); S1 := pi * sqr(R1); S2 := pi * sqr(R2); S3 := S1 - S2; writeln('Площадь большего круга -- ', S1:5:2); writeln('Площадь меньшего круга -- ', S2:5:2); writeln('Площадь кольца -- ', S3:5:2); end.
Begin14. Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью, учитывая, что L = 2·π·R, S = π·R2. В качестве значения π использовать 3.14.
program Begin14; const pi = 3.14; var L, S, R: real; begin write('Введите длину окружности: '); read(L); R := L / (2 * pi); S := pi * sqr(R); writeln('Площадь круга -- ', S:5:2); writeln('Радиус круга -- ', R:5:2); end.
Begin15. Дана площадь S круга. Найти его диаметр D и длину L окружности,ограничивающей этот круг, учитывая, что L = π·D, S = π·D2/4. В качестве значения π использовать 3.14.
program Begin15; const pi = 3.14; var L, S, D: real; begin write('Введите площадь окружности: '); read(S); D := sqrt(4 * S / pi); L := D * pi; writeln('Длина круга -- ', L:5:2); writeln('Диаметр круга -- ', D:5:2); end.
Begin16. Найти расстояние между двумя точками с заданными координатами x1 и x2 на числовой оси: |x2 – x1|.
На самом деле непонятно, почему именно х2-х1. Ведь число в модуле будет одинаковым. Что 8 — 9, что 9 -8 равняются единице.
program Begin16; const pi = 3.14; var X1, X2, Rast: real; begin write('Введите координаты двух точек на оси x: '); read(X1, X2); Rast := abs(X2 - X1); writeln('Расстояние между двумя точками -- ', Rast:5:2); end.
Begin17. Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму.
Иногда, если не понимаешь условие задачи, полезно составить рисунок к задаче.
program Begin17; var X1, X2, X3: real; begin write('Введите координаты трех точек на оси x: '); read(X1, X2, X3); writeln('AC = ', abs(X3-X1)); writeln('BC = ', abs(X3-X2)); writeln('AC + BC = ', abs(X3-X1)+ abs(X3-X2)); end.
Begin18. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC.
Посмотрев на рисунок, мы понимаем, что нахождение длины отрезков не меняется. Кстати, попробуйте составить эту программу, используя только три переменных!
program Begin18; var X1, X2, X3: real; begin write('Введите координаты трех точек A, B, C : '); read(X1, X2, X3); writeln('AC = ', abs(X3-X1)); writeln('BC = ', abs(X3-X2)); writeln('AC * BC = ', abs(X3-X1)* abs(X3-X2)); end.
Begin19.Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.
Для того, чтобы наглядно увидеть что от нас требуется, составим такой прямоугольник на листе бумаге. И увидим, что на что надо умножать.
program Begin19; var X1, X2, Y1, Y2, P, S, a, b: real; begin write('Введите координаты двух точек х1 у1 х2 у2 : '); read(X1, Y1, X2, Y2); a := abs(X2 - X1); b := abs(Y2 - Y1); P := 2 * (a + b); S := a * b; writeln('Периметр прямоугольника -- ', P:5:2); writeln('Площадь прямоугольника -- ', S:5:2); end.
Begin20. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2) на плоскости.
Расстояние вычисляется по формуле √(x2 — x1)2+(y2 — y1)2.
program Begin20; var a, x1, x2, y1, y2: real; begin write('Введите x1, y1: '); readln(x1, y1); write('Введите x2, y2: '); readln(x2, y2); a := sqrt(sqr(x2 - x1) + sqr(y2 - y1)); writeln('Расстояние между точками -- ', a:5:2); end.
На сегодня все. С Новым Годом!
Поиграем? Кто поймает кота? 🙂
его фиг поймаешь!!
Ага 🙂
поймал))
Со 3 раза поймал
в задаче 13 есть условие, которое не выполняется
Ошибка в задании Begin 18.
writeln(‘AC + BC = ‘, abs(X3-X1)* abs(X3-X2)); {не правильно)
writeln(‘AC*BC = ‘, abs(X3-X1)*abs(X3-X2)); {правильный вывод на экран}
Нужно найти произведение, а не сумму
Поймаааал!!!
в сафари кот неподвижен, ловить не приходится)
можно спросить ,а вот допустим write(S:5:2) или write(S:0:2) ,что означают цифры 0,5,2
Это формат вывода. Поэкспериментируйте с разными числами и вы увидите, как меняется вывод. Первая цифра — это количество знаков до запятой, а вторая — после. Если первая цифра равно нулю, то тогда число выводится неизменным до запятой. А вот второй цифрой можно округлить число, например, до сотых, как это сделано в задачах выше.
В 18 задание на мой взгляд ошибка в коде: переменную АС вы представляете как х3-х1, но ведь С стоит между А и Б , соответственно код на переменную АС получается таковым writeln(‘AC = ‘, abs(X2-X1));
А зачем в 16 задачи мы вводим константу pi?