Решение задачи №7 из главы 11

Решение задачи №7 из главы 11

Пользователь вводит целые числа, в ответ выводите символ #. Если введенное пользователем число равно 22, то завершите цикл не выводя ничего в ответ. Решите эту задачу 2-мя способами:
С использованием if()
С использованием break;

var a: integer;
begin
    a:=1; //инициализация переменной

    while (a < 22) do
    begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      if  (a=22) then  //если равно 22
         break; //то прерываем программу
      writeln('#'); //Выводим #
    end;
    readln(); //Удерживаем консоль
end.           
vedro-compota's picture

у вас только один способ?

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

gani84's picture

var a: integer;
begin
    a:=1; //инициализация переменной

    while (a < 22) do
    begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      if  (a=22) then  //если равно 22
         writeln('poka') //то прерываем программу
      else
         writeln('#'); //Выводим #
    end;
    readln(); //Удерживаем консоль
end.
vedro-compota's picture

почти правильно, но по условию:

завершите цикл не выводя ничего в ответ

доработайте.

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

gani84's picture

var a: integer;
begin
    a:=1; //инициализация переменной

    while (a < 22) do
    begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      if  (a=22) then  //если равно 22
      else
          writeln('#'); //Выводим #
    end;
    readln(); //Удерживаем консоль
end.

vedro-compota's picture

if  (a=22) then  //если равно 22
      else
          writeln('#'); //Выводим #

переделайте теперь на вариант без else -- чтобы не было пустой ветки как сейчас.

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

gani84's picture

var a: integer;
begin
    a:=1; //инициализация переменной

    while (a < 22) do
    begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      if  (a=22) then  //если равно 22
        writeln('') //Выводим пустую
      else
        writeln('#');
    end;
    readln(); //Удерживаем консоль
end.    
vedro-compota's picture

if  (a=22) then  //если равно 22
        writeln('') //Выводим пустую
      else
        writeln('#');

нет, в вашем случае достаточно оператора if в неполной форме -- только с веткой then. Подумайте как это сделать

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

vedro-compota's picture

while (a < 22) 

-- это условие тоже не верно, если пользователь введет число 56 цикл должен продолжать работать.

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

gani84's picture

var a: integer;
begin
    a:=1; //инициализация переменной

    while (a <> 22) do
    begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      if  (a = 22) then  //если равно 22
           writeln(' '); //Выводим пустую
      if (a <> 22) then
           writeln('#');//Выводим #
    end;
    readln(); //Удерживаем консоль
end.   
vedro-compota's picture

      if  (a = 22) then  //если равно 22
           writeln(' '); //Выводим пустую
      if (a <> 22) then
           writeln('#');//Выводим #

неправильно. внимательно почитайте условие задачи. Там написано что-то выводе пустой строки?
нет. Здесь достаточно одного оператора if не неполной форме.

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

gani84's picture

Ну там же в ответ надо выводить #

vedro-compota's picture

Ну там же в ответ надо выводить #

да, а зачем второй if?

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

gani84's picture

var a: integer;
begin
    a:=1; //инициализация переменной
    while (a <> 22) do

begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      writeln('#');
      if  (a = 22) then  //если равно 22
           writeln(''); //Выводим пустую
      readln(); //Удерживаем консоль
end;
end.    
vedro-compota's picture

if (a = 22) then //если равно 22
writeln(''); //Выводим пустую

зачем в этом случае выводить пустую строку?

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

gani84's picture

var a: integer;
begin
    a:=1; //инициализация переменной
    while (a <> 22) do

begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      writeln('#');
      if  (a = 22) then  //если равно 22
           writeln( ); //Выводим пустую
      readln(); //Удерживаем консоль
end;
end.        
vedro-compota's picture

Вы предлагали вариант:

var a: integer;
begin
    a:=1; //инициализация переменной
 
    while (a <> 22) do
    begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); //вводим первое число
      if  (a=22) then  //если равно 22
        writeln('') //Выводим пустую
      else
        writeln('#');
    end;
    readln(); //Удерживаем консоль
end.

на это вам было сказано, что:

в вашем случае достаточно оператора if в неполной форме -- только с веткой then. Подумайте как это сделать

Но вы пока что ничего не придумали. Поэтому изучите это решение и постарайтесь понять в чем разница:

var a: integer;
begin
    while (a <> 22) do
    begin
      writeln('Vvedite cheloe cislo A:');
      readln(a); // считываем очередное число
      if  (a <> 22) then  // НЕ если равно 22
        writeln('#');
    end;
    readln(); //Удерживаем консоль
end. 

-- т.е. нужно было просто убрать ветку else, а внутреннее условие заменить на обратное.

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

gani84's picture

Теперь понял а я стандартно решал, не знал что есть такой вариант

if  (a <> 22) then  // НЕ если равно 22
        writeln('#');