Нужно создать массив в паскале, который содержит 1000 трехзначных чисел и найти наименьшее из них
Вот наброски:
program z_3;
uses crt;
var mas:array [1..1000] of integer;
i, min : integer;
begin
for i:=1 to 1000 do
mas[i] :=random (900) + 99;
for i:= 1 to 999 do begin
write (mas[i]:4);
if mas [i] < min then min:=mas[i];end;
writeln;
writeln('минимальное=',min);
end
a = [1, 100, 10, 2]
a = sorted(a, reverse=True)
if (len(a) > 2):
if(a[0] != a[1] and a[1] != a[2]):
print(a[1])
else:
print(0)
else:
print(0)
Объяснение:
Итак, как я понял, абсолютный минимум и максимум это самый большой и самый маленький элемент в списке, значит нам нужно вывести второй по величине. Сортируем массив с sorted(значит мы сортируем массив и записываем результат в a, заменяя старый), причем сортируем с reverse=True так как по умолчанию он сортирует по возрастанию, а нам нужно по убыванию. Затем мы проверяем длинну списка и если в ней есть хотя бы 3 элемента(0, 1, 2 - абсолютный максимум, искомый элемент и абсолютный минимум), то выводим искомый элемент(второй элемент списка, индекс у него 1 так как счет с 0), иначе выводим 0
upd: вложенный if сравнивает первый и второй и второй и третий элементы. Если они равны, то тоже выводим ноль
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <vector>
using namespace std;
int main () {
int n, numMin = 0, p = 0;
cin >> n;
vector <int> num(n);
for (int i = 0; i < n; i++)
cin >> num[i];
for (int i = 0; i < n; i++) {
int rav = 0;
for (int i = p; i < n; i++) {
if (num[numMin] == num[i]) {
rav++;
}
}
if (rav == 1) {
cout << num[numMin] << " ";
}
numMin++;
p++;
}
return 0;
}
На вход получаю:
5
1 3 3 3 2
На выход получаю:
1 3 2 (вместо 1 2)
1
Объяснение: