Урок 14. Задача №4. Решение.

Урок 14. Задача №4.

Составьте программу, которая выводит на экран прямоугольный флаг N×M вида (с чередованием плюсов и минусов в строках):

- - - - - -
+ + + + + +
- - - - - -
+ + + + + +
- - - - - -

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

procedure myWrite(s : string);
begin
 write(s);
end;

procedure My_writeln();
begin
 writeln();
end;

var i, j, width, length : integer;
  plus, minus  : string;

begin
  plus := '+ ';
  minus := '- ';
  width := 5;
  length := 6;
  for i := 1 to width do
  begin
    while(j < length) do
    begin
      j += 1;
      if(i mod 2 = 1) then
        myWrite(minus)
      else
        myWrite(plus);
    end;
    j := 0;
    My_writeln();
  end;

  readln(); // Удержание консоль
end.// Завершение программы 
vedro-compota's picture

подразумевается, что подпрограмма будет отвечать за печать самой строки, а не только за печать символа переноса), т.е. она должна уметь выводить:

- - - - - -

или

+ + + + + +

(конечно, опираясь на какие-то переданные снаружи параметры, ведь строки разные)

_____________
матфак вгу и остальная классика =)

Firons's picture

procedure myWrite(x : integer; s : string);
var k : integer;
begin
 for k := 1 to x do
   write(s);
end;

procedure My_writeln();
begin
 writeln();
end;

var i, j, width, length : integer;
  plus, minus : string;

begin
  width := 5;
  length := 6;
  plus := '+ ';
  minus := '- ';
  for i := 1 to width do
  begin
    if(i mod 2 = 1) then
      myWrite(length, minus)
    else
      myWrite(length, plus);
    My_writeln();
  end;

  readln(); // Удержание консоль
end.// Завершение программы
                               
vedro-compota's picture

if(i mod 2 = 1) 

-- убрать в подпрограмму.

_____________
матфак вгу и остальная классика =)

Firons's picture

procedure myWrite(x: integer);
var j, length: integer;
  plus, minus: string;
begin
 length := 6;
 plus := '+ ';
 minus := '- ';
 for j := 1 to length do
 begin
   if(x mod 2 = 1) then
     write(minus)
   else
     write(plus);
 end;
end;

procedure My_writeln();
begin
 writeln();
end;

var i, width: integer;
begin
  width := 5;
  for i := 1 to width do
  begin
    myWrite(i);
    My_writeln();
  end;

  readln(); // Удержание консоль
end.// Завершение программы