§8. Примеры простейших программ

Теперь воспользуемся всеми полученными знаниями и рассмотрим примеры простейших программ. Условимся в примерах не различать заглавные и строчные буквы, а ключевые слова выделять жирным шрифтом.

Пример 3

Ввести координаты трёх вершин треугольника. Вывести его площадь. Гарантируется, что треугольник существует (ввод корректный).

Решение

Для решения этой задачи нам потребуется `6` переменных, в которые будут введены значения координат `(x1, y1, x2, y2, x3, y3)`. Можно сделать их целыми для простоты, а можно вещественными, чтобы решать задачу в более общем случае. Так же потребуются переменные, в которые мы запишем длины сторон треугольника `(a, b, c)` и площадь `(S)`. Эти переменные однозначно должны быть вещественными, так как при вычислении расстояния между точками нам придётся извлекать квадратный корень, и, соответственно, результат получится вещественным. И ещё предлагается ввести вещественную переменную `p`, в которой будет храниться полупериметр треугольника, так как площадь будет вычисляться по формуле Герона. Приведём полный текст программы:

   var x1,y1,x2,y2,x3,y3:integer; a,b,c,p,S:real;
      begin
         Write('Введите координаты вершин треугольника ');
         Readln(x1,y1,x2,y2,x3,y3);
         a:=sqrt(sqr(x1-x2)+sqr(y1-y2));
         b:=sqrt(sqr(x1-x3)+sqr(y1-y3));
         c:=sqrt(sqr(x2-x3)+sqr(y2-y3));
         p:=(a+b+c)/2;
         S:=sqrt(p*(p-a)*(p-b)*(p-c));
         Writeln('Площадь треугольника равна ',S:5:2);
         Readln;
      end.

Пример 4

Идёт `k`-ая секунда суток (`k` вводится). Вывести, сколько полных часов `h` и полных минут `m` прошло с начала суток.

Решение

В этой задаче все параметры целые. Решается она с помощью операций div и mod. Эти операции можно использовать для «срезания периодов» при переводе мелких единиц измерения в более крупные (например, секунд в минуты). Операция div нам выдаст количество полных периодов (сколько полных минут содержится в большом количестве секунд), а операция mod – количество единиц в последнем неполном периоде (сколько секунд не укладывается в полное количество минут). Приведём полный текст решения.

   var k,h,m:integer;
      begin
         Write('Введите номер секунды в сутках');
         Readln(k);
         h:=k div 3600;
         m:=k mod 3600 div 60;
         writeln('С начала суток прошло ',h,' часов и ',m,' минут');
         readln;
      end.

Пример 5

Вводится четырёхзначное число. Вывести произведение его цифр.

Решение

Эта задача показывает ещё одно применение операций div и mod – выделение цифр из целого числа. Описанное ниже решение работает только для случая, когда количество цифр в числе заранее известно. В противном случае придётся использовать циклический алгоритм. Приведём текст решения.

   var N,c1,c2,c3,c4:integer;
      begin
         Write('Введите целое четырёхзначное число');
         Readln(N);
         c1:=N div 1000;
         c2:=N div 100 mod 10;
         c3:=N div 10 mod 10;
         c4:=N mod 10;
         Writeln('Произведение цифр вашего числа равно',c1*c2*c3*c4);
         Readln;
      end.