Создать проект, который позволяет рассчитать площадь прямоугольного футбольного поля, если его длина Х, а ширина У, площадь S.
Опишите модель решения поставленной задачи, соблюдая следующие пункты:
a) Входные данные программы Впечатывайте здесь ответ
b) Выходные данные программы Впечатывайте здесь ответ
c) Цель проектирования программы Впечатывайте здесь ответ
d) Назначение программы Впечатывайте здесь ответ
e) Область применения программы Впечатывайте здесь ответ
var
s: string;
ms: array of string;
begin
Write('Введите три слова через пробел: ');
Readln(s);
ms := s.Split(' ');
Writeln(ms[0] + ' ' + ms[2] + ' ' + ms[1])
end.
Вторая программа реализуется в любой версии Pascal. Её недостаток в том, что она правильно работает только тогда, когда введена фраза из трех слов, разделенных пробелом. Это простейший линейный алгоритм.
var
s, s1, s2, s3: string;
n, p: integer;
begin
Write('Введите три слова через пробел: ');
Readln(s);
n := Length(s);
p := Pos(' ', s);
s1 := Copy(s, 1, p - 1);
s3 := Copy(s, p + 1, n - p);
p := Pos(' ', s3);
s2 := Copy(s3, 1, p - 1);
n := Length(s3);
s3 := Copy(s3, p + 1, n - p);
Writeln(s1 + ' ' + s3 + ' ' + s2)
end.
Третья программа также реализуема в любой версии Pascal и содержит "классический" работы со строкой, состоящий в последовательном анализе каждого символа. Имеет защиту на случай, если слов будет больше или меньше трех.
var
s: string;
ms: array[1..3] of string;
i, n, p, j: integer;
begin
Write('Введите три слова через пробел: ');
Readln(s);
{
Алгоритм: Просматриваем все символы строки начиная с позиции p
и при обнаружении пробела в позиции q заносим в массив очередное слово,
копируя q-p символов, начиная с p. Затем заносим в p значение q+1
и продолжаем просмотр. При старте принимаем p=1
}
p := 1; j := 0; n := Length(s);
for i := 1 to n do
if s[i] = ' ' then
begin
j := j + 1;
if j <= 3 then begin{ если введено больше двух пробелов }
ms[j] := Copy(s, p, i - p);
p := i + 1
end
end;
if j < 3 then ms[3] := Copy(s, p, n - p + 1);
Writeln(ms[1] + ' ' + ms[3] + ' ' + ms[2])
end.
Все три программы опробованы и результаты их работы одинаковы:
Введите три слова через пробел: Зебра полосатая лошадь
Зебра лошадь полосатая
10(2) = 1 * 2^1 + 0 * 2^0 = 2 + 0 = 2
10(2) + 10(10) = 2(10) + 10(10) = 12(10)
Чтобы перевести число из системы счисления с основанием b, можно представить его в виде суммы:
Всё точно так же, как и в десятичной системе, только меняем 10 на основание системы счисления, например,
Другой избежать большого количества возведений в степень и записать, например, так:
Берем первую цифру – умножаем на b, прибавляем вторую цифру – умножаем на b, прибавляем третью цифру – ... – умножаем на b, прибавляем последнюю цифру.
Чтобы перевести из десятичной в систему с основанием b, нужно по сути сделать в обратном порядке то, что написано выше: либо восстановить разложение в сумму, либо выписать остатки от деления на b в обратном порядке. Например, переведем 27(4) в десятичную систему счисления:
27(4) = 1 * 16 + 2 * 4 + 3 * 1 = 1 * 4^2 + 2 * 4^1 + 3 * 4^0 = 123(4)
27 : 4 = 6 (ост. 3)
6 : 4 = 1 (ост. 2)
1 : 4 = 0 (ост. 1)
Выписываем в обратном порядке: 27(10) = 123(4)