Задача — Поменять местами минимальный и максимальный элементы
— программирование на Pascal, Си, Кумир, Basic-256, Python
В массиве случайных целых чисел поменять местами минимальный и максимальный элементы.
Эта задача состоит из двух частей:
- Поиск минимума и максимума (а лучше их индексов).
- Обмен минимального и максимального элемента местами.
Поиск минимума:
- Присвоить переменной первый индекс массива.
- Перебрать все элементы массива в цикле, начиная со второго. Проверить каждый, не меньше ли он элемента под индексом, записанным в переменной п.1. Если это так, то присвоить этой переменной текущий индекс.
Поиск максимума выполняется также, только проверяется, не больше ли текущий элемент того, чей индекс хранится в переменной.
Пример обмена местами минимума и максимума массива:
- Присвоить буферной переменной значение минимума.
- Записать по индексу минимума максимум массива.
- Записать по индексу максимума значение, хранимое в буферной переменной.
Pascal const N = 15;
var
arr: array[1..N] of integer;
min, max, i: byte;
b: integer;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100);
write(arr[i],’ ‘);
end;
writeln;
min := 1;
max := 1;
for i:=2 to N do begin
if arr[i] < arr[min] then
min := i;
if arr[i] > arr[max] then
max := i;
end;
writeln(’arr[‘,min,’]=’,arr[min],’ arr[‘,max,’]=’,arr[max]);
b := arr[min];
arr[min] := arr[max];
arr[max] := b;
for i:=1 to N do
write(arr[i],’ ‘);
writeln;
end. 94 64 42 1 72 3 88 52 3 67 32 15 31 32 65
arr[4]=1 arr[1]=94
1 64 42 94 72 3 88 52 3 67 32 15 31 32 65 Язык Си #include <stdio.h>
#define N 15
main() {
int arr[N], i, min, max, b;
srand(time(NULL));
min = 0;
max = 0;
for (i=0; i<N; i++) {
arr[i] = rand() % 100;
printf("%d ", arr[i]);
if (arr[i] < arr[min]) min = i;
if (arr[i] > arr[max]) max = i;
}
printf("n");
printf("arr[%d]=%d arr[%d]=%dn",min+1,arr[min],max+1,arr[max]);
b = arr[min];
arr[min] = arr[max];
arr[max] = b;
for (i=0; i<N; i++)
printf("%d ", arr[i]);
printf("n");
} Python from random import random
N = 15
arr = [0]*N
for i in range(N):
arr[i] = int(random()*100)
print(arr[i],end=’ ‘)
print()
# 1-й вариант
mn = min(arr)
mx = max(arr)
imn = arr.index(mn)
imx = arr.index(mx)
print(’arr[%d]=%d arr[%d]=%d’ % (imn+1, mn, imx+1, mx))
arr[imn],arr[imx] = arr[imx],arr[imn]
# 2-й вариант (классический)
#~ mn = 0
#~ mx = 0
#~ for i in range(N):
#~ if arr[i] < arr[mn]:
#~ mn = i
#~ elif arr[i] > arr[mx]:
#~ mx = i
#~ print(‘arr[%d]=%d arr[%d]=%d’ % (mn+1, arr[mn], mx+1, arr[mx]))
#~ b = arr[mn] #~ arr[mn] = arr[mx] #~ arr[mx] = b
for i in range(15):
print(arr[i],end=’ ‘)
print()
В языке программирования Питон есть функции min() и max(), возвращающие соответственно минимальный и максимальный элементы последовательностей. Метод index() возвращает индекс (номер) элемента в последовательности.
КуМир алг
нач
цел N = 15
целтаб arr[1:N]
цел mn, mx, i, b
нц для i от 1 до N
arr[i] := irnd(100)
вывод arr[i], " "
кц
вывод нс
mn := 1
mx := 1
нц для i от 2 до N
если arr[i] < arr[mn] то
mn := i
все
если arr[i] > arr[mx] то
mx := i
все
кц
вывод "arr[", mn, "]=", arr[mn], нс
вывод "arr[", mx, "]=", arr[mx], нс
b := arr[mn]
arr[mn] := arr[mx]
arr[mx] := b
нц для i от 1 до N
вывод arr[i], " "
кц
кон 37 67 3 48 54 89 27 22 46 20 14 35 28 70 51
arr[3]=3
arr[6]=89
37 67 89 48 54 3 27 22 46 20 14 35 28 70 51 Basic-256 N = 10
dim arr(N)
for i=0 to N-1
arr[i] = int(rand*100)
print arr[i]+" ";
next i
print
min = 0
max = 0
for i=1 to N-1
if arr[i] < arr[min] then min = i
if arr[i] > arr[max] then max = i
next i
print "arr["+(min+1)+"]="+arr[min] print "arr["+(max+1)+"]="+arr[max]
b = arr[min] arr[min] = arr[max] arr[max] = b
for i=0 to N-1
print arr[i]+" ";
next i
print 37 78 17 99 97 49 78 9 54 24
arr[8]=9
arr[4]=99
37 78 17 9 97 49 78 99 54 24