Решение задачи №3 из главы 12.1

Решение задачи №3 из главы 12.1

Пользователь вводит в консоль символы (после каждого нажимая Enter), в ответ выводите символ '&', до тех пор пока пользователь не введёт '#', после чего завершите программу.

var a: char;// объявление символьной переменной
begin

  writeln('vvedite simvol:');
  readln(a); //вводим данные с клавиатуры
  repeat    // начало тела цикла
    writeln( '&' , ' '); //выводим символ & в ответ
    readln(a);
  until (a ='#'); // выход из цикла только если введен символ #
  writeln('Poka!!!');//завершение цикла
  readln();
end.      
vedro-compota's picture

Как будет работать это решение есть пользователь в первый же раз введёт символ #?
Допишите, чтобы эта ситуация тоже учитывалась.

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

gani84's picture

ОН выведет '#' значит что то не так

gani84's picture

var a: char;// объявление символьной переменной
begin

  writeln('vvedite simvol:');
  readln(a); //вводим данные с клавиатуры
  repeat    // начало тела цикла
    writeln( '&' , ' '); //выводим символ & в ответ
    writeln('vvedite simvol:');
    readln(a);
  until (a ='#'); // выход из цикла только если введен символ #
  writeln('Poka!!!');//завершение цикла
  readln();
end.  
vedro-compota's picture

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

собственно, вы так и не исправили замечание: http://fkn.ktu10.com/?q=comment/2679#com...

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

gani84's picture

var a: char;// объявление символьной переменной
begin
  repeat    // начало тела цикла
    writeln('vvedite simvol:');
    readln(a);
    writeln( '&' , ' '); //выводим символ & в ответ
  until (a ='#'); // выход из цикла только если введен символ #
  writeln('Poka!!!');//завершение цикла
  readln();
end.
vedro-compota's picture

практически верно, но условие задачи можно понимать и так, что на '#' вообще не нужно ничем отвечать -- сделайте чтобы в ответ на решетку сразу выводилось прощание, без вывода &

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

gani84's picture

var a: char;// объявление символьной переменной
begin
  repeat    // начало тела цикла
   writeln('vvedite simvol:');
   readln(a);
   if a ='#' then
      break;
   writeln( '&' , ' '); //выводим символ & в ответ
  until (a ='#'); // выход из цикла только если введен символ #
  writeln('Poka!!!');//завершение цикла
  readln();
end. 
vedro-compota's picture

if a ='#' then
      break;

Хорошо, это верно, а как обойтись без break но по-прежнему, чтобы:

на '#' вообще не нужно ничем отвечать -- сделайте чтобы в ответ на решетку сразу выводилось прощание, без вывода &

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

gani84's picture

Если честно не знаю. Он в любом случае должен цикл сделать. Или я чего то не до понимаю. Можете пояснить?

vedro-compota's picture

Если честно не знаю. Он в любом случае должен цикл сделать. Или я чего то не до понимаю. Можете пояснить?

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

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