Решение задачи №5 из главы 13.1

Решение задачи №5 из главы 13.1

Пользователь вводит первое целое число-ограничитель m. А затем начинает вводить целые числа по одному, пока не введёт число, большее числа-ограничителя.
Если очередное целое число больше 1, то в ответ на каждое такое число программа должна выводить все целые числа от единицы до этого числа.
Примечание: это задача на вложенные циклы, в качестве внешнего надо использовать while, а в качестве внутреннего можно использовать или for или while.

var m, a, i: integer;
begin
  writeln('vvedite celoe chislo');
  readln(m); //вводим число ограничитель
  writeln('vvedite vtoroe celoe chislo');
  readln(a); //вводим второе число
  while (m > a) do //
    begin
      for i := 1 to a do // выводим равенства очередной строки, счётчик как правый множитель
      write(i, ' '); // переносим строку
      readln();
    writeln('vvedite vtoroe celoe chislo');
  readln(a); //вводим число
    end;
  writeln('zaversheno!');
  readln();
end.
vedro-compota's picture

в принципе решение очень похоже на верное, но оно не точно по тексту:

Если очередное целое число больше 1, то в ответ на каждое такое число программа должна выводить все целые числа от единицы до этого числа.

-- исправьте.
+ одна погрешность в форматировании.

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

gani84's picture

var m, a, i: integer;
begin
  writeln('vvedite celoe chislo ogranichitel');
  readln(m); //вводим число ограничитель
  writeln('vvedite vtoroe celoe chislo');
  readln(a); //вводим второе число
  while (m > a) do //
    begin
      if (a > 1) then
      for i := 1 to a do // выводим равенства очередной строки, счётчик как правый множитель
          write(i, ' '); // переносим строку
          readln();
      writeln('vvedite vtoroe celoe chislo');
      readln(a); //вводим число
    end;
  writeln('zaversheno!');
  readln();
end.          
vedro-compota's picture

while (m > a) do //

неправильное сравнение.

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

gani84's picture

var m, a, i: integer;
begin
  writeln('vvedite celoe chislo ogranichitel');
  readln(m); //вводим число ограничитель
  while (m <> a) do //
    begin
      writeln('vvedite vtoroe celoe chislo');
      readln(a); //вводим число
      if (m = a) then break
      else
      if (a > 1) then
         for i := 1 to a do // выводим равенства очередной строки, счётчик как правый множитель
             write(i, ' '); // переносим строку
             readln();
    end;
  writeln('zaversheno!');
  readln();
end.
vedro-compota's picture

 while (m <> a) 

тоже неправильное сравнение

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

gani84's picture

var m, a, i: integer;
begin
  writeln('vvedite celoe chislo ogranichitel');
  readln(m); //вводим число ограничитель
  while (m >= a) do //
    begin
      writeln('vvedite vtoroe celoe chislo');
      readln(a); //вводим число
      if (m = a) then break
      else
      if (a > 1) then
         for i := 1 to a do // выводим равенства очередной строки, счётчик как правый множитель
             write(i, ' '); // переносим строку
             readln();
    end;
  writeln('zaversheno!');
  readln();
end.         
vedro-compota's picture

если ввести

m = 15

и

a = 18

-- сработает неправильно. Исправьте

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

gani84's picture

var m,a, i: integer;
begin
  writeln('vvedite celoe chislo ogranichitel');
  readln(m); //вводим число ограничитель
  while (m >= a) do //
    begin
      writeln('vvedite vtoroe celoe chislo');
      readln(a); //вводим число
      if (m < a) then break
      else
      if (a > 1) then
         for i := 1 to a do // выводим равенства очередной строки, счётчик как правый множитель
             write(i, ' '); // переносим строку
             readln();
    end;
  writeln('zaversheno!');
  readln();
end.
vedro-compota's picture

переменная a не инициализирована.
Решение засчитано.

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