Задача 4 Урок 15
Primary tabs
Пользователь вводит массив целых чисел из 7 элементов.
Найдите из них два самых больших числа и выведите их на экран.
type myArr = array[1..7] of integer;
var a: myArr;
i, k, l, m: integer;
begin
m := 0;
for i := low(a) to high(a) do
begin
writeln('Vvedite element massiva nomer ', i);
readln(a[i]);
end;
writeln('Elementi massiva');
for i := low(a) to high(a) do
begin
write(a[i], ' ');
if a[i] > k then
k := a[i]
end;
for i := low(a) to high(a) do //без второго цикла может пропустить пример 87000025
begin
if (a[i] > l) and (a[i] < k) then
l := a[i]
else
inc(m); //требуется на случай, если все числа одинаковые, но исключить, когда только несколько чисел совпадают.
end;
writeln();
writeln('Samoe bolshoe chislo = ', k);
if m = 7 then
writeln('Vtoroe samoe bolshoe chislo otsutstvuet')
else
writeln('Vtoroe samoe bolshoe chislo = ', l);
readln();
end.
КОНСОЛЬ
Vvedite element massiva nomer 1 15 Vvedite element massiva nomer 2 15 Vvedite element massiva nomer 3 0 Vvedite element massiva nomer 4 -15 Vvedite element massiva nomer 5 26 Vvedite element massiva nomer 6 26 Vvedite element massiva nomer 7 90 Elementi massiva 15 15 0 -15 26 26 90 Samoe bolshoe chislo = 90 Vtoroe samoe bolshoe chislo = 26
- Log in to post comments
- 4272 reads
vedro-compota
Sun, 11/14/2021 - 13:23
Permalink
два числа могут быть
_____________
матфак вгу и остальная классика =)
Vitaliy123
Sun, 11/14/2021 - 14:19
Permalink
Решение с одним прочтением и двумя одинаковыми числами
type myArr = array[1..7] of integer; var a: myArr; i, k, l, m: integer; begin m := 0; for i := low(a) to high(a) do begin writeln('Vvedite element massiva nomer ', i); readln(a[i]); end; writeln('Elementi massiva'); for i := low(a) to high(a) do begin write(a[i], ' '); if a[i] > k then k := a[i]; if (a[i] > l) and (a[i] < k) then begin l := a[i]; inc(m); end; end; if m = 0 then l := k; writeln(); writeln('Samoe bolshoe chislo = ', k); writeln('Vtoroe samoe bolshoe chislo = ', l); readln(); end.КОНСОЛЬ
vedro-compota
Sun, 11/21/2021 - 12:06
Permalink
что есть пользователь будет
что есть пользователь будет вводить только отрицательные числа?
+ в условие добавлены примеры для проверки:
_____________
матфак вгу и остальная классика =)
Vitaliy123
Sun, 11/21/2021 - 21:59
Permalink
Это решение проходит указанные проверки
type myArr = array[1..7] of integer; var a: myArr; i, k, l: integer; begin for i := low(a) to high(a) do begin writeln('Введите элемент массива номер ', i); readln(a[i]); end; writeln('Элементы массива '); for i := low(a) to high(a) do begin write(a[i], ' '); if i = 1 then k := a[i] else if (i = 2) and (a[2] < a[1]) then begin l := a[i]; end else if a[i] > k then begin l := k; k := a[i] end else if (a[i] > l) and (a[i] <= k) then begin l := a[i]; end; end; writeln(); writeln('Самое большое число = ', k); writeln('Второе самое большое число = ', l); readln(); end.vedro-compota
Sun, 11/28/2021 - 13:06
Permalink
if i = 1 then
-- вынести за цикл
_____________
матфак вгу и остальная классика =)
Vitaliy123
Mon, 11/29/2021 - 20:51
Permalink
Первое присвоение до цикла
type myArr = array[1..7] of integer; var a: myArr; i, k, l: integer; begin for i := low(a) to high(a) do begin writeln('Введите элемент массива номер ', i); readln(a[i]); end; k := a[1]; if (a[2] <= a[1]) then begin l := a[2]; end else begin l := k; k := a[2]; end; writeln('Элементы массива '); for i := 3 to high(a) do begin write(a[i], ' '); if a[i] > k then //назначает новое k, а старое пишет в l, если новое k больше прошлого begin l := k; k := a[i] end else if (a[i] > l) and (a[i] <= k) then //находит второе большое число begin l := a[i]; end; end; writeln(); writeln('Самое большое число = ', k); writeln('Второе самое большое число = ', l); readln(); end.vedro-compota
Sun, 12/05/2021 - 13:10
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)