Найти максимальное число из трех

Задача

Определить какое из трех, введенных пользователем, чисел максимальное и вывести его на экран.

Решение

Описание переменных: 

В программе будет три переменные для чисел, вводимых пользователем: n1, n2, n3. Также для упрощения алгоритма введем четвертую переменную, в которую по ходу выполнения кода будет помещено максимальное значение: max.

Алгоритм решения задачи: 

  1. Сравнить первое и второе число (n1 и n2). Переменной max присвоить значение переменной, содержащей большее значение.
  2. Сравнить значение переменной max с третьим числом, введенным пользователем (n3). Если значение n3 окажется больше, чем max, то присвоить max значение третьего числа. Если же значение max окажется больше, то ничего не делать.

Программа на языке Паскаль: 

var
    a1, a2, a3, max: integer;
 
begin
    write ('Введите три числа: ');
    readln (a1, a2, a3);
 
    if a1 >= a2 then
        max := a1
    else
        max := a2;
 
    if a3 > max then
        max := a3;
 
    writeln ('Максимальное из них: ', max);
 
readln
end.

Примечания: 

Три числа не обязательно могут быть разными. Достаточно предусмотреть вариант равенства значений только в первом операторе if.

Тема

Условные операторы

Уровень

Простые задачи

Комментарии

Var a,b,c,max:integer;
begin
Readln (a,b,c);
If (a>b) then max:=a else max:=b;
If (c>max) then max:=c;
Writeln ('Большее из чисел ', max);
End.

var
n1,n2,n3:integer;
begin
readln(n1,n2,n3);
if (n1>=n2) and (n1>=n3) then writeln('max=',n1) else if n2>=n3 then writeln('max=',n2)                                                       else writeln('max=',n3);
end.

есть момент: если хотя бы два числа ввести одинаковые, то программа выведет только одно из них и никак не учтет этот момент. А вот чтобы все это учесть программа несколько длиннее получается...

var a1,a2,a3: integer;
 begin
   write ('vvedite 3 celyh chisla 4ere3 probel ');
  readln (a1,a2,a3);
  if a1>a2 then begin
   if a1<a3 then writeln ('max chislo a3= ',a3) else
    if a1=a3 then writeln ('max chislo a1=a3= ',a3) else
    writeln ('max chislo a1= ',a1);
   end
  else
    if a1<a2 then begin
       if a2>a3 then writeln ('max chislo a2= ',a2) else
        if a2=a3 then writeln ('max chislo a2=a3= ',a2) else
        writeln ('max chislo a3= ',a3) end
    else
     if a1>a3 then writeln ('max chislo a1=a2= ',a1) else
      begin
       if a3>a1 then writeln ('max chislo a3= ',a3) else
        writeln ('vse chisla odinakovie a1=a2=a3= ',a1);
      end;
  readln;
  end.

в обоих сравнениях можно использовать как знак =, так и >=. это никоим образом не влияет на результат.

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

Ответ на от Гость

const
  n = 30;
 
var
  mas: array[1..50]of integer;
  max, i: integer;
 
begin
  for i := 1 to n do 
    begin mas[i] := random(21) - 3;
       write(mas[i],'; ');
    end;
 writeln; max := mas[1];
 
 for i := 1 to n do 
    if max < mas[i] then max := mas[i];
 
  writeln('максимальное из введенных чисел = ',max,' имеет индекс положения');
  for i:=1 to n do
  if mas[i]=max then write(i,';');
end.

Добавить комментарий