Решение задач. День второй. Задачи Begin11-20


begin11-20

Сегодня мы с вами продолжаем решать задачи 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, а внутренний радиус равен R2S1 = π·(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|.

На самом деле непонятно, почему именно х21. Ведь число в модуле будет одинаковым. Что 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.

На сегодня все. С Новым Годом!

Поиграем? Кто поймает кота? 🙂

  1. Ошибка в задании Begin 18.
    writeln(‘AC + BC = ‘, abs(X3-X1)* abs(X3-X2)); {не правильно)
    writeln(‘AC*BC = ‘, abs(X3-X1)*abs(X3-X2)); {правильный вывод на экран}
    Нужно найти произведение, а не сумму

  2. Это формат вывода. Поэкспериментируйте с разными числами и вы увидите, как меняется вывод. Первая цифра — это количество знаков до запятой, а вторая — после. Если первая цифра равно нулю, то тогда число выводится неизменным до запятой. А вот второй цифрой можно округлить число, например, до сотых, как это сделано в задачах выше.

  3. В 18 задание на мой взгляд ошибка в коде: переменную АС вы представляете как х3-х1, но ведь С стоит между А и Б , соответственно код на переменную АС получается таковым writeln(‘AC = ‘, abs(X2-X1));

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *