Задача 7 Урок 9

Задача 7 Урок 9:

Пользователь вводит четыре числа, найдите из них максимальное -- решите через вложенные блоки if в полной форме (без использования логических операций).
Примечание: решение с помощью AND более удобно на практике, но для тренировки понимания тут мы решаем через вложенные блоки.

var a, b, c, d : integer;
begin
  writeln('vvedite a, b, c, d');
  readln(a, b, c, d);
  if (a > b) then
  begin
     if (a > c) then
           writeln ('a naibolshee')
     else
           writeln ('d naibolshee')
  end
  else if
       (b > c) then
       begin
          if (b > d) then
             writeln ('b naibolshee')
       end
  else if
       (c > d) then
       begin
        writeln ('c naibolshee')
       end
  else
        writeln ('d naibolshee');
readln();
end. 

Консоль:

vvedite a, b, c, d
1
2
3
4
d naibolshee
vedro-compota's picture

подумать над решением еще, структура кода тут должна быть как во втором варианте максимума из трех http://fkn.ktu10.com/?q=node/14790
+ все операторы в данном решении лучше сделать в полной форме

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

vedro-compota's picture

1)

  if (a > b) then
  begin
     if (a > c) then
           writeln ('a naibolshee')

-- этого не достаточно чтобы сделать вывод, что а - наибольшее число, надо же еще сравнить его с d.

2)

 else if
       (b > c) then
       begin
          if (b > d) then
             writeln ('b naibolshee')
       end
  else if
       (c > d) then
       begin
        writeln ('c naibolshee')
       end

-- форматирование, else должен быть под if к которому относится

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

var a, b, c, d : integer;
begin
  writeln('vvedite a, b, c, d');
  readln(a, b, c, d);
  if (a > b) then
     begin
     if (a > c) then
         if (a > d) then
           writeln ('a naibolshee')
           end
  else if (b > c) then
            begin
            if (b > d) then
               writeln ('b naibolshee')
               end
  else if (c > d) then
        writeln ('c naibolshee')
  else
        writeln ('d naibolshee');
readln();
end.
vedro-compota's picture

отформатировано неверно, нужно будет обсудить на консультации

begin должен быть по соответствующим if, а else под соответствующим begin

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

var a, b, c, d : integer;
begin
  writeln('vvedite a, b, c, d');
  readln(a, b, c, d);
  if (a > b) then
  begin
    if (a > c) then
    begin
      if (a > d) then
        writeln ('a naibolshee')
      else
        writeln ('d naibolshee')
    end
  end
  else if (b > c) then
       begin
         if (b > d) then
           writeln ('b naibolshee')
       end
  else if (c > d) then
         writeln ('c naibolshee')
  else
    writeln ('d naibolshee');
readln();
end.
vedro-compota's picture

первая часть отформатирована нормально, а вот вторая нет:

 else if (b > c) then
       begin
         if (b > d) then
           writeln ('b naibolshee')
       end
  else if (c > d) then
         writeln ('c naibolshee')
  else
    writeln ('d naibolshee');

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

var a, b, c, d : integer;
begin
  writeln('vvedite a, b, c, d');
  readln(a, b, c, d);
  if (a > b) then
  begin
    if (a > c) then
    begin
      if (a > d) then
        writeln ('a naibolshee')
      else
        writeln ('d naibolshee')
    end
  end
  else if (b > c) then
    begin
      if (b > d) then
      writeln ('b naibolshee')
    end
  else if (c > d) then
    writeln ('c naibolshee')
  else
    writeln ('d naibolshee');
readln();
end.                
vedro-compota's picture

по-идее не сработают комбинации:

// 1 3 2 4
// 4 3 5 4 

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

var a, b, c, d : integer;
begin
  writeln('vvedite a, b, c, d');
  readln(a, b, c, d);

  if (a > b) then
  begin
    if (a > c) then
    begin
      if (a > d) then
        writeln ('a naibolshee')
      else
        writeln ('d naibolshee')
    end
  end

  else
  if (b > c) then
  begin
    if (b > d) then
      writeln ('b naibolshee')
    else
      writeln ('d naibolshee')
  end

  else
  if (c > d) then
    writeln ('c naibolshee')
  else
    writeln ('d naibolshee');
readln();
end.
   // 1 3 2 4 работает
// 4 3 5 4 не работает

var a,b,c,d: integer;
begin
  writeln ('vvedite a,b,c,d');
  readln (a,b,c,d);

  if (a > b) then
  begin
    if (a > c) then
    begin
      if (a > d) then
        writeln ('a naibolshee')
      else
        writeln ('d naibolshee');
    end
  end

  else
  if (b > c) then
  begin
    if(b > d) then
      writeln('b naibolshee')
    else
      writeln('d naibolshee')
  end

  else
  if (c > d) then
    writeln('c naibolshee')
  else
    writeln('d naibolshee');
  readln;
  end.            
vedro-compota's picture

исправить форматирование

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

var a,b,c,d: integer;
begin
    writeln ('vvedite a,b,c,d');
    readln (a,b,c,d);

    if (a > b) then
    begin
        if (a > c) then
        begin
            if (a > d) then
                writeln ('a naibolshee')
            else
                writeln ('d naibolshee');
        end
    end

    else
        if (b > c) then
        begin
            if(b > d) then
                writeln('b naibolshee')
            else
                writeln('d naibolshee')
        end

    else
        if (c > d) then
            writeln('c naibolshee')
        else
            writeln('d naibolshee');
    readln;
end.
vedro-compota's picture

пока откладываем. форматирование неверно

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

var a,b,c,d: integer;
begin
  writeln ('vvedite a,b,c,d');
  readln (a,b,c,d);

  if (a > b) then
  begin
    if (a > c) then
      if (a > d) then
        writeln ('a naibolshee')
      else
        writeln ('d naibolshee');
  end

  else
    if (b > c) then
    begin
      if(b > d) then
        writeln('b naibolshee')
      else
        writeln('d naibolshee')
    end

  else
    if (c > d) then
      writeln('c naibolshee')
    else
      writeln('d naibolshee');
  readln;
end.  
vedro-compota's picture

4 3 5 4 -- не сработает

+ перепроверить форматирование

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

vedro-compota's picture

решить вторую задачу из 9ого урока http://fkn.ktu10.com/?q=node/8539

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

Урок 9 задача 2

Исправьте форматирование.

if ( 5 > 7) then // проверка выражения  и начало тела ветки истинности
begin
  writeln('5 > 7 верно');
  writeln('5 > 7 верно');
end

else //  начало ложной ветки (её тела)
begin
  writeln('5 > 7 неверно');
  writeln('5 > 7 неверно');
end; // конец ложной ветки и оператор ветвления 

Урок 9 задача 7

var a,b,c,d: integer;
begin
  writeln ('vvedite a,b,c,d');
  readln (a,b,c,d);

  if (a > b) then
    if (a > c) then
      if (a > d) then
        writeln ('a naibolshee')
      else
        writeln ('d naibolshee')
    else
      if (b > c) then
        if(b > d) then
          writeln('b naibolshee')
        else
          writeln('d naibolshee')
      else
        if (c > d) then
          writeln('c naibolshee')
        else
          writeln('d naibolshee');
  readln();
end. 
vedro-compota's picture

проверить вариант

1 2 3 4

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

vedro-compota's picture

Урок 9 задача 2

-- решить отдельно

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

var a,b,c,d: integer;
begin
  writeln ('vvedite a,b,c,d');
  readln (a,b,c,d);

  if (a > b) then
    if (a > c) then
      if (a > d) then
        writeln ('a naibolshee')
      else
        writeln ('d naibolshee')
    else
      if (c > d) then
        writeln('c naibolshee')
      else
        writeln('d naibolshee')
  else
    if (b > c) then
       if (b > d) then
         writeln('b naibolshee')
       else
        writeln('d naibolshee')
    else
      if (c > d) then
        writeln('c naibolshee')
      else
        writeln('d naibolshee');
  readln();
end.        
vedro-compota's picture

засчитано

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