Решение задачи №2 из главы 10

Решение задачи №2 из главы 10

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

var a,i:integer; //объявляем переменную счетчика
begin
  writeln('vvedite chislo');
  readln(a);

      if ((a mod 5) = 0) and  (a > 1) then
        for i:=a downto 1 do  // i пройдёт значения от i до 64
          write(i, ' ')//выводим в одну строку через пробел
   else
     write('Ochibka');
  readln(); // удерживаем консоль
end.  

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

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

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

vedro-compota's picture

if ((a mod 5) = 0) and (a > 1) then

это неверно, точнее не все на своих местах.

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

gani84's picture

var i, a: integer;
begin
  writeln('vvedite celoe chislo');
  readln(a); //вводим число
  if (a > 1) then //проверяем условие
    for i:=a downto 1 do
       if ((a mod 5) = 0) then
        write(a, ' ')
  else
     writeln('oshibka!');

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

но результат не совсем тот

почему не тот? Решение теперь в приципе верное. Теперь делимость проверяется уже внутри цикла -- что соответствует условию.

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

vedro-compota's picture

Переделал но результат не совсем тот

почему вы считаете что результат не тот?

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

gani84's picture

например я ввожу число 10
тогда он мне выводит:
vvedite celoe chislo
10
10 10 10 10 10 10 10 10 10 10

Хотя логика и алгоритм все правильно!!!

vedro-compota's picture

да вы правы, решение неверное. У вас выводится не то что надо .Какая переменная изменяется в цикле по вашему?

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

gani84's picture

Теперь все решил но не выполняется условие if ((a mod 5) = 0) then не могу понять почему??

var i, a: integer;
begin
  writeln('vvedite celoe chislo');
  readln(a); //вводим число
  if (a > 1) then //проверяем условие
    for i:=a downto 1 do
       if ((a mod 5) = 0) then
        write(i, ' ')
  else
     writeln('oshibka!');
  readln();
end. 

ИЛИ

var i, a: integer;
begin
  writeln('vvedite celoe chislo');
  readln(a); //вводим число
  if (a > 1) and ((a mod 5) = 0) then //проверяем условие
    for i:=a downto 1 do
      write(i, ' ')
  else
     writeln('oshibka!');
  readln();
end.