Решение задачи №6 из главы 9 - Поиск максимума из трех чисел

Задача №6 из главы 9

Пользователь вводит три числа, найдите из них максимальное.
ПРИМЕЧАНИЕ: здесь вам понадобятся вложенные if-блоки.

var a, b, c: integer; // секция объявления переменных
begin  // начало тела программы
    writeln('vvedite cislo A');
    readln(a);
    writeln('vvedite cislo B');
    readln(b);
    writeln('vvedite cislo C');
    readln(c);

    if (a > b) and (a > c) then //если A  больше В и С
    begin
      writeln('Naibolshhee chislo A =  ', a) // То выводим А
    end
    else begin
     if (b > a) and (b > c) then // вложенный оператор if ; если B  больше A и С
       writeln('Naibolshhee chislo B =  ', b) // То выводим B
     else
       writeln('Naibolshhee chislo C =  ', c); //Иначе выводим C
    end;
    readln(); // удерживаем консоль
end. // конец тела программы   
vedro-compota's picture

решение засчитано. форматровать вложенный блок нужно на то же число пробелов (/табов), что и основной блок.

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

vedro-compota's picture

В решении по смыслу вложенные блоки не используются, так как вы через and сразу сцепляете все условия в длинные выражения.

Переделайте решение (в ответном комментарии) по схеме:

if (a > b) then
........
else
......

-- чтобы остальной код был на месте многоточий.

Т.е. фактически вместо многоточий должен располагаться поиск "максимума из двух".

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

gani84's picture

 var a, b, c: integer; // секция объявления переменных
begin  // начало тела программы
    writeln('vvedite cislo A');
    readln(a);
    writeln('vvedite cislo B');
    readln(b);
    writeln('vvedite cislo C');
    readln(c);

    if (a > b) then  //если A  больше В и С
       if (a > c) then // вкладываем второе условие
          writeln('Naibolshhee chislo A =  ', a); // То выводим А

    if (b > a)  then  // если B  больше A и С
       if (b > c) then // вкладываем второе условие
          writeln('Naibolshhee chislo B =  ', b) // То выводим В
    else
          writeln('Naibolshhee chislo C =  ', c); //Иначе выводим C
    readln(); // удерживаем консоль
end. // конец тела программы  
vedro-compota's picture

сцепите два основных if-a через else, чтобы это была единая конструкция.

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

vedro-compota's picture

 if (a > b) then  //если A  больше В и С
       if (a > c) then // вкладываем второе условие
          writeln('Naibolshhee chislo A =  ', a); // То выводим А
 
    if (b > a)  then  // если B  больше A и С
       if (b > c) then // вкладываем второе условие
          writeln('Naibolshhee chislo B =  ', b) // То выводим В
    else
          writeln('Naibolshhee chislo C =  ', c); //Иначе выводим C

-- для одинаковых а и b не работает (пояснение на видео).

Правильно будет работать так:

    if (a > b) then  //если A  больше В и С
       begin
         if (a > c) then // вкладываем второе условие
            writeln('Naibolshhee chislo A =  ', a) // То выводим А
       end
    else
       if (b > c) then // вкладываем второе условие
          writeln('Naibolshhee chislo B =  ', b) // То выводим В
       else
          writeln('Naibolshhee chislo C =  ', c); //Иначе в 

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

gani84's picture

А где предпоследней ветке

else
   if (b > c) then // вкладываем второе условие
      writeln('Naibolshhee chislo B =  ', b) // То выводим В
<blockquote>{ где b > a рядом с b > c или не надо его указывать?}</blockquote>
   else
      writeln('Naibolshhee chislo C =  ', c); //Иначе в 
gani84's picture

Вот про эту сцепку тоже не сказано. Начинающему сложно понять смысл вопроса!!! Больше теории надо!!!

vedro-compota's picture

Вот про эту сцепку тоже не сказано.

про какую сцепку. Пишите все замечания и вопросы в полном виде с применением цитирования.

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

gani84's picture

приведите альтернативный вариант
В решении по смыслу вложенные блоки не используются, так как вы через and сразу сцепляете все условия в длинные выражения.
Переделайте решение (в ответном комментарии) по схеме:
if (a > b) then
........
else
......
-- чтобы остальной код был на месте многоточий.
Т.е. фактически вместо многоточий должен располагаться поиск "максимума из двух".

Я про это в самом начале после "решение засчитано".

gani84's picture

Я исправил там условия не хватало if (b > a) then

if (a > b) then  //если A  больше В и С
   begin
        if (a > c) then // вкладываем второе условие
           writeln('Naibolshhee chislo A =  ', a) // То выводим А
   end
else
   if (b > c) then // вкладываем второе условие
     begin
         if (b > a) then
             writeln('Naibolshhee chislo B =  ', b) // То выводим В
   else
        writeln('Naibolshhee chislo C =  ', c); //Иначе в
   end;  
vedro-compota's picture

1) не идеальное форматирование
2) есть begin и end которые можно не использовать

-- исправьте хотя бы один пункт.

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

gani84's picture

if (a > b) then  //если A  больше В и С
   begin
     if (a > c) then // вкладываем второе условие
        writeln('Naibolshhee chislo A =  ', a) // То выводим А
   end
else
   if (b > c) then // вкладываем второе условие
      writeln('Naibolshhee chislo B =  ', b) // То выводим В
   else
      writeln('Naibolshhee chislo C =  ', c); //Иначе в 

-----------------------------------------------------------------
А не

if (a > b) then  //если A  больше В и С
   begin
        if (a > c) then // вкладываем второе условие
           writeln('Naibolshhee chislo A =  ', a) // То выводим А
   end
else
   if (b > c) then // вкладываем второе условие
     begin
         if (b > a) then 
{Это Лишнее так как указано выше if (a > b) then 
   begin
        if (a > c) then 
           writeln('Naibolshhee chislo A =  ', a) 
----------------------------------------
То тогда лишнее if (b > a) then }
             writeln('Naibolshhee chislo B =  ', b) // То выводим В
   else
        writeln('Naibolshhee chislo C =  ', c); //Иначе в
   end; 
vedro-compota's picture

if (a > b) then  //если A  больше В и С
   begin
     if (a > c) then // вкладываем второе условие
        writeln('Naibolshhee chislo A =  ', a) // То выводим А
   end
else
   if (b > c) then // вкладываем второе условие
      writeln('Naibolshhee chislo B =  ', b) // То выводим В
   else
      writeln('Naibolshhee chislo C =  ', c); //Иначе в

-- это не сработает для чисел 4, 3 и 5 -- поймите почему и исправьте код.

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

gani84's picture

var a, b, c: integer; // секция объявления переменных
begin  // начало тела программы
    writeln('vvedite cislo A');
    readln(a);
    writeln('vvedite cislo B');
    readln(b);
    writeln('vvedite cislo C');
    readln(c);

    if (a > b) then  //если A  больше В и С
       begin
         if (a > c) then // вкладываем второе условие
            writeln('Naibolshhee chislo A =  ', a) // То выводим А
         else
            writeln('Naibolshhee chislo C =  ', c)
       end
    else
       if (b > c) then // вкладываем второе условие
          writeln('Naibolshhee chislo B =  ', b) // То выводим В
       else
          writeln('Naibolshhee chislo C =  ', c); //Иначе в
     readln();
end.   
vedro-compota's picture

решение верное, но не верен комментарий к строке:

if (a > b) then  //если A  больше В и С

-- проверяется меньше, чем написано в комментарии.

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

gani84's picture

var a, b, c: integer; // секция объявления переменных
begin  // начало тела программы
    writeln('vvedite cislo A');
    readln(a);
    writeln('vvedite cislo B');
    readln(b);
    writeln('vvedite cislo C');
    readln(c);

    if (a > b) then  //если A  больше В
     begin
         if (a > c) then // если А больше С
            writeln('Naibolshhee chislo A =  ', a) // То выводим А
         else
            writeln('Naibolshhee chislo C =  ', c) // Иначе выводим С
       end
     else
       if (b > c) then // если B больше С
          writeln('Naibolshhee chislo B =  ', b) // То выводим В
       else
          writeln('Naibolshhee chislo C =  ', c); //Иначе выводим С
     readln();
   end.
end.
vedro-compota's picture

решение засчитано.

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