урок 13.1 задача 7

урок 13.1

Пользователь вводит целое положительное число, если оно не соответствует критериям (то есть не является положительным), выведете сообщение об ошибке, в противном случае выведете на экран все числа от 1 до введённого пользователем.

var
  i,j:integer;
begin
  while (i>1) do
  begin
    writeln('ведите число');
    readln(i);
    if (i<1) then
      writeln ('ошибка!'); break
    else
     if (i>1) then
       for j:=1 to i do
         writeln(j,' ');
  end;
  readln()l
end.     
vedro-compota's picture

1) Программа не запускается
2)

while (i>1) do

-- почему начинаем с такой проверки в цикле?
По-идее надо начать с получения числа от пользователя

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

isaac_fan's picture

var
  i,j:integer;
begin
  writeln('ведите число');
  readln(i);
  while (i>1) do
  begin
     if (i>1) then
       for j:=1 to i do
         writeln(j,' ');
         break;
  end;
  if (i<1) then
    writeln ('ошибка!');
  readln();
end.                          
vedro-compota's picture

проблемы с форматированием + какой тут алгоритм? Должно быть что-то вроде

  • 1) получили число
  • 2) Проверили положительное ли
  • 3) Если да - то запускаем цикл
  • 4) Иначе - сообщение об ошибке

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

isaac_fan's picture

var
  i,j:integer;
begin
  writeln('ведите число');
  readln(i);
  if ((i mod 2)=0) then
    while (i>1) do
    begin
     if (i>1) then
       for j:=1 to i do
         writeln(j,' ');
         break;
    end;
  if ((i mod 2)=1) then
    writeln('....ошиБКа....');
end.                             
vedro-compota's picture

  1. проверить форматирование
  2. проверить работу для значения -2
  3. проверить на соответствие условию

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

isaac_fan's picture

var
  i,j:integer;
begin
  writeln('ведите число');
  readln(i);
  if ((i mod 2)=0) then
    while (i>1) do
    begin
      if (i>1) then
       for j:=1 to i do
       begin
         writeln(j,' ');
         break;
       end;
    end;
  else
    writeln('....ошиБКа....');
end.