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

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

Пользователь вводит массив целых чисел из 7 элементов. Найдите из них два самых больших числа и выведите их на экран.

Решил но совсем не правильно, работает

var a:array[1..7] of integer; i,max1, max2:integer;
begin
    max1:=a[1];// назначаем первый элемент максимальным
    max2:=a[2];
    for i:=3 to 7 do
    begin
      writeln('vvedite element massiva nomer ', i, ':');  // пояснение для пользователя
      readln(a[i]);  // считываем элемент i массива 'a' из консоли
    end;

    for i:=3 to 7 do
    begin
      if (a[i] > max1)
         then
             max1:=a[i];
      if (a[i] < max2) AND (max1 < max2)
         then
             max2:=a[i];
    end;
    writeln('Naibolshee znachenie 1 =', max1);
    writeln('Naibolshee znachenie 2 =', max2);
    readln();
end.
vedro-compota's picture

заполняйте все элементы массива

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

gani84's picture

Но проблема с определением max2

var a:array[1..7] of integer; i,max1, max2:integer;
begin

    for i:=1 to 7 do
    begin
      writeln('vvedite element massiva nomer ', i, ':');  // пояснение для пользователя
      readln(a[i]);  // считываем элемент i массива 'a' из консоли
    end;
     max1:=a[1];// назначаем первый элемент максимальным
     max2:=a[2];
    for i:=1 to 7 do
    begin
      if (a[i] > max1)
         then
           max1:=a[i];
         if max2 < max1
            then max2:=a[i];
         end;


    writeln('Naibolshee znachenie 1 =', max1);
    writeln('Naibolshee znachenie 2 =', max2);
    readln();
end.       
vedro-compota's picture

максимум 2 должен быть меньше максимума 1, но при этом больше или равен остальным элементам

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

gani84's picture

Вывод консоли
vvedite element massiva nomer 1:
12
vvedite element massiva nomer 2:
3
vvedite element massiva nomer 3:
555
vvedite element massiva nomer 4:
6
vvedite element massiva nomer 5:
7
vvedite element massiva nomer 6:
66
vvedite element massiva nomer 7:
8
Naibolshee znachenie 1 =555
Naibolshee znachenie 2 =3
var a:array[1..7] of integer; i,max1, max2:integer;
begin

    for i:=1 to 7 do
    begin
      writeln('vvedite element massiva nomer ', i, ':');  // пояснение для пользователя
      readln(a[i]);  // считываем элемент i массива 'a' из консоли
    end;
     max1:=a[1];// назначаем первый элемент максимальным
     max2:=a[2];
    for i:=1 to 7 do
    begin
      if (a[i] > max1)
         then
           max1:=a[i];
      if (max2 < max1) AND (max2>=a[i])
          then max2:=a[i];
    end;


    writeln('Naibolshee znachenie 1 =', max1);
    writeln('Naibolshee znachenie 2 =', max2);
    readln();
end.       
vedro-compota's picture

if (max2 < max1) AND (max2>=a[i])

-- условие неверно

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

gani84's picture

vvedite element massiva nomer 1:
1
vvedite element massiva nomer 2:
2
vvedite element massiva nomer 3:
3
vvedite element massiva nomer 4:
4
vvedite element massiva nomer 5:
5
vvedite element massiva nomer 6:
6
vvedite element massiva nomer 7:
7
Naibolshee znachenie 1 =7
Naibolshee znachenie 2 =7
var a:array[1..7] of integer; i,max1, max2:integer;
begin

    for i:=1 to 7 do
    begin
      writeln('vvedite element massiva nomer ', i, ':');  // пояснение для пользователя
      readln(a[i]);  // считываем элемент i массива 'a' из консоли
    end;
     max1:=a[1];// назначаем первый элемент максимальным
     max2:=a[2];
    for i:=1 to 7 do
    begin
      if (a[i] > max1)
         then
           max1:=a[i];
      if  (max2 < a[i])
          then max2:=a[i];
    end;


    writeln('Naibolshee znachenie 1 =', max1);
    writeln('Naibolshee znachenie 2 =', max2);
    readln();
end.             
vedro-compota's picture

Нет сравнения max1 c max2, Решение неверно.

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

gani84's picture

Вывод консоли
vvedite element massiva nomer 1:
1
vvedite element massiva nomer 2:
22222
vvedite element massiva nomer 3:
2
vvedite element massiva nomer 4:
3
vvedite element massiva nomer 5:
4
vvedite element massiva nomer 6:
5
vvedite element massiva nomer 7:
6

Naibolshee znachenie 1 =22222
Naibolshee znachenie 2 =6
var a:array[1..7] of integer; i,max1, max2:integer;
begin

    for i:=1 to 7 do
    begin
      writeln('vvedite element massiva nomer ', i, ':');  // пояснение для пользователя
      readln(a[i]);  // считываем элемент i массива 'a' из консоли
    end;

    max1:= a[1];
    max2:= a[2];

    for i:=1 to 7 do
    begin
        if (max1 < a[i]) then
            begin
                max2:= max1;
                max1:=a[i];
            end
        else
          if (max2 < a[i]) then
            begin
                max2:= a[i];
            end;
    end;

    writeln();
    writeln('Naibolshee znachenie 1 =', max1);
    writeln('Naibolshee znachenie 2 =', max2);
    readln();
end.       
vedro-compota's picture

Проверьте на последовательности:

1
1 
8 
9 
7 
10 
10

-- в ответе должны быть 9 и 10.

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

gani84's picture

Вывод консоли
vvedite element massiva nomer 1:
1
vvedite element massiva nomer 2:
1
vvedite element massiva nomer 3:
8
vvedite element massiva nomer 4:
9
vvedite element massiva nomer 5:
7
vvedite element massiva nomer 6:
10
vvedite element massiva nomer 7:
10

Naibolshee znachenie 1 =10
Naibolshee znachenie 2 =9
var a:array[1..7] of integer; i,max1, max2:integer;
begin

    for i:=1 to 7 do
    begin
      writeln('vvedite element massiva nomer ', i, ':');  // пояснение для пользователя
      readln(a[i]);  // считываем элемент i массива 'a' из консоли
    end;

    max1:= a[1];
    max2:= a[2];

    for i:=3 to 7 do
    begin
        if (max1 < a[i]) then
            begin
                max2:= max1;
                max1:=a[i];
            end
        else
          if (max2 > max1) then
            begin
                max2:=max1;
            end;
    end;

    writeln();
    writeln('Naibolshee znachenie 1 =', max1);
    writeln('Naibolshee znachenie 2 =', max2);
    readln();
end.
vedro-compota's picture

проверьте на входных данных:

1
2
10
3

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