урок 12.1 задача 2

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

var f: integer;
begin
  writeln('Введите целое число');
  readln(f);
  if f > 1 then
    begin
      if f mod 23 = 0 then
        repeat
          writeln(f)
        until (f = 1);
    end
  else
   writeln('ошибка');
 
  readln();
end.
vedro-compota's picture

Как проверять:

  1. Если мы введем число 55, то программа должна вывести в ответ:
    23 46

    -- т.е. два числа

  2. Если мы введем число 5, то программа должна вывести в ответ ноль чисел (вообще ничего)
  3. Если мы введем число -4, то программа должна сообщить об ошибке

Сейчас бесконечный цикл (имеет место быть)

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

isaac_fan's picture

спасибо буду знать

isaac_fan's picture

var f: integer;
begin
  writeln('Введите целое число');
  readln(f);
  if f > 1 then
    begin
      repeat
      if f mod 23 = 0 then
       begin
          f := f - 1;
          writeln(f);
       end
        until (f = 1);
    end
  else
   writeln('ошибка');

  readln();
end.                
vedro-compota's picture

  1. Проверить на лишние операторные скобки
  2. Уточнить форматирование
  3. Добавить вывод консоли
  4. Сейчас программа попадает в бесконечный цикл

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

isaac_fan's picture

var f: integer;
begin
  writeln('Введите целое число');
  readln(f);
  if f > 1 then
    begin
      repeat
        if f mod 23 = 0 then

          writeln(f);
           f:=f-1;
        until (f = 1);
     end
  else
   writeln('ошибка');

  readln();
end.    

консоль :
22 23

vedro-compota's picture

Исправить форматирование (для проверки посмотреть разбор решения задачи 3)

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

isaac_fan's picture

var f: integer;
begin
  writeln('Введите целое число');
  readln(f);
  if f > 1 then
  begin
    repeat
      if f mod 23 = 0 then
 
        writeln(f);
         f:=f-1;
    until (f = 1);
   end
  else
   writeln('ошибка');
 
  readln();
end.
vedro-compota's picture

исправить еще раз, сейчас есть ошибки форматирования

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

isaac_fan's picture

var f: integer;
begin
  writeln('Введите целое число');
  readln(f);
  if f > 1 then
  begin
    repeat
      if f mod 23 = 0 then
        writeln(f);
          f:=f-1;
    until (f = 1);
   end
  else
    writeln('ошибка');
  
  readln();
end.
vedro-compota's picture

засчитано

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