2. Предложенные ниже алгоритмы записаны разными способами. Определите, что делает каждый из предложенных алгоритмов, и реализуйте их на языке Pascal.

1. Алгоритмический язык.

Этот алгоритм склеивает первую букву и часть от 7 буквы до конца слова.

ввод а
n := Длина(а)
m := 1
b := Извлечь(а, m)
нц для i от 7 до n
 с := Извлечь(а, i)
 b := Склеить(b, с)
кц
вывод b

Реализация на Pascal:

var n, m: integer; st, b, c: string;
begin
  write('Введите строку: ');
  readln(st);
  n := Length(st);
  m := 1;
  b := copy(st, m, 1);
  for var i := 7 to n do
  begin
    c := copy(st, i, 1);
    b := concat(b, c);
  end;
  writeln(b);
end.

2. Python.

Этот алгоритм высчитывает «гармонический ряд», т.е. с клавиатуры вводится, например, число 5 и высчитывается сумма дробей, знаменатель каждой следующей дроби увеличивается на единицу, пока не станет равным нашей введённой пятёрки: 1/1 + 1/2 + 1/3 + 1/4 + 1/5.

a = int(input())
k = 0
s = 1
while k < a:
 k = k + 1
 s = s + 1.0/k
print(s)

Реализация на Pascal:

var a, k: integer; s: real;
begin
  write('Введите число: ');
  readln(a);
  k := 0;
  s := 1;
  while k < a do
  begin
    k := k + 1;
    s := s + 1.0/k;
  end;
  writeln(s);
end.

3. Basic.

Алгоритм определяет, сколько раз введённое число делится с остатком на 3 и записывает это количество в переменную L. А в переменную M записывается количество целочисленных делений на 3 для введённого числа.

INPUT X
L = 0
M = 0
WHILE X > 0
 M = M + 1
 IF X MOD 3 <> 0 THEN
 L = L + 1
 END IF
 X = X \ 3
WEND
PRINT L
PRINT M

Реализация на Pascal:

var m, l, x: integer;
begin
  write('Введите число: ');
  readln(x);
  l := 0;
  m := 0;
  while x > 0 do
  begin
    m := m + 1;
    if x mod 3 <> 0 then
      l := l + 1;
    x := x div 3;
  end;
  writeln(l);
  write(m);
end.

4. С++.

int F(int x)
{
 return x*x + 16*x + 15;
}
int main()
{
 int a, b;
 cin >> a >> b;
 int M = 0;
 for (int t = a; t <= b; t++)
if (F(t) > 0)
M = M + 1;
cout << M;
return 0;
}

Реализация на Pascal:

var a, b, m, t: integer;
begin
  write('Введите числа: ');
  readln(a);
  readln(b);
  m := 0;
  t := a;
  while t <= b do
  begin
    if t*t + 16*t + 15 > 0 then
      m := m +1;
    t:= t + 1;
  end;
  write(m);
end.
Другие задания