Урок 14 (Решенные задачи)

Урок 14 (Решенные задачи)

1)Напишите функцию, которая возвращает сумму трёх целых чисел.

var a,b,c,t: integer;

function ru36(z,g,h: integer): integer;
begin
  t := z + g + h;
  result := t;
end;

begin
  writeln('vvedite cisla a, b, c');
  readln(a,b,c);
  write(ru36(a,b,c));
end.

2) Напишите процедуру, которая выводит на экран сумму трёх целых чисел.
procedure ru36(z, y, x: integer);
begin
  write(z + y + x);
end;

begin
  ru36(8, 9, 10);
end.
3) Напишите процедуру, которая принимает переменную целого типа по ссылке, просит пользователя ввести значение в консоли и инициализирует переменную этим значением (убедитесь, что в теле программы значение изменилось).
var a: integer;

procedure ru36(var c: integer);
begin
  writeln('vvedite cislo');
  readln(a);
  c := a;
  write(c);
end;

begin
  write('vvedite cislo');
  ru36(a);
end.
4)Составьте программу, которая выводит на экран прямоугольный флаг N×M вида (с чередованием плюсов и минисов в строках):
- - - - - -
+ + + + + +
- - - - - -
+ + + + + +
- - - - - -

-- для вывода очередной строки используйте подпрограмму, принимающую на вход нужные агрументы.

var l: integer;


function f1(a: integer): integer;
begin
  a := 1;
  for a := a to N do
  write('-', ' ');
end;

function f2(b: integer): integer;
begin
  b := 1;
  for b := b to N do
  write('+', ' ');
end;

begin
  N := 9;
  M := 2;
  for l := l to M do
  begin
    f1(1);
    writeln();
    f2(2);
    writeln();
  end;
end.
5)Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N "ёлочкой", например для N=17
1
2 3
4 5 6
7 8 9 10
11 12 13 14
15 16 17

ПРИМЕЧАНИЕ: для вывода очередной строки используйте отдельную подпрограмму.

var N,M,b,a,c : integer;

function f1(x,L,M,z: integer):integer;
begin
  while (x <= L) do
   begin
    write(x, ' ');
    x := x + 1;
    M := M - 1;
    if (M = 0) then
     begin
      writeln();
      M := b + 1;
      b := M;
     end;
   end;
end;


begin
 M := 1;
 a := 1;
 writeln('vvedite cislo N');
 readln(N);
 b := M;
 f1(a,N,M,b);
end.
Romakip's picture

Задача номер 3. Добавлена проверка в теле программы на то, что значение переменное изменлось.

var a: integer;

procedure ru36(var c: integer);
begin
  writeln('vvedite cislo');
  readln(a);
  c := a;
  write(c);
end;

begin
  write('vvedite cislo');
  ru36(a);
  writeln(' ', a);
end.
Romakip's picture

Задача номер 4. Теперь вывод строки осуществляется засчет одной функции.

var l, N, M: integer;


function f1(a,b: integer): integer;
begin
  a := 1;
  for a := a to N do
   write('-', ' ');
  b := 1;
  writeln();
  for b := b to N do
   write('+', ' ');
end;

begin
  N := 8;
  M := 2;
  for l := l to M do
  begin
    f1(N, M);
    writeln();
  end;
end.
Romakip's picture

Исправлена задача номер 5. Теперь всего 4 переменных в программе, и одной действие в основном теле, после ввода числа.

var N,M,b,x : integer;

function f1(L: integer):integer;
begin
  M := 1;
  b := M;
  while (x <= L) do
   begin
    write(x, ' ');
    x := x + 1;
    M := M - 1;
    if (M = 0) then
     begin
      writeln();
      M := b + 1;
      b := M;
     end;
   end;
end;


begin
 writeln('vvedite cislo N');
 readln(N);
 f1(N);
end.