Другие языки программирования и технологии

Заполнить случайным образом одномерный массив из n элементов и обменять местами последний и максимальный (в паскале)

Заполнить случайным образом одномерный массив из n элементов и обменять местами последний и максимальный элементы массива. Вывести оба массива на экран. ( в паскале)
Объявим массив из 100 элементов и переменную n, а также переменные для хранения максимального элемента, его позиции в массиве и переменную для цикла for:

var
a: array [1..100] of integer;
n, i, max, maxPos: integer;

Так как выводить массив будем дважды, объявим процедуру вывода массива (чтобы не повторять код). Выводить будем в цикле for от 1 до n. В конце добавим переход на новую строку:

procedure outputArray;
var i: integer;
begin
for i:=1 to n do
print(a[i]:4);
println;
end;

В основной программе нам нужно:
1) запросить размер массива n и проверить, чтобы n было от 2 до 100 (иначе запросить по новой);
2) заполнить первые n элементов массива случайными числами;
3) вывести исходный массив (мы уже описали процедуру outputArray);
4) найти позицию максимального элемента;
5) поменять местами его значение и значение последнего элемента;
6) вывести полученный массив.

Итак:

begin

1. Запрашиваем n в цикле, пока не получим нужное число:

repeat
write('Input array size: ');
readln(n);
if (n < 2) or (n > 100) then
writeln('Array size must be between 2 and 100');
until (n >= 2) and (n <= 100);

2. Запускаем генератор случайных чисел и заполняем массив при помощи функции Random числами от 0 до 999:

Randomize;
for i:=1 to n do
a[i]:=Random(1000);

3. Выводим полученный массив на экран:

writeln('Generated array:');
outputArray;

4. Ищем позицию максимального элемента. Принцип такой: сначала считаем максимальным первый элемент, а его значение сравниваем со вторым, третьим и так далее - пока не найдем что-то "покрупнее". Если нашли - запоминаем его позицию и значение и ищем дальше.

maxPos:=1;
max:=a[maxPos];

for i:=2 to n do
if a[i]>max then
begin
maxPos:=i;
max:=a[maxPos];
end;

5. Меняем местами максимальный элемент (с индексом maxPos) и последний элемент (n). Для этого нам нужна третья переменная - max. В ней уже хранится максимальное значение. Значит, максимальный элемент можно спокойно "затереть":

a[maxPos]:=a[n];
a[n]:=max;

6. Выводим то, что получилось:

println('After swapping:');
outputArray;

Всё :)

end.
ИЧ
Ильяс Чеченец .
77 837
Лучший ответ
вот тут куча примеров работы с массивами. есть заполнение случайным образом, есть поиск минимума и максимума и еще куча ненужного тебе, но не менее от этого полезного материвала
http://pascalabc.net/primeri-programm/programmi-i-algoritmi-dlya-nachinaiuschich

а тут прям попробовать можешь http://pascalabc.net/WDE/?file=AlgBegin/05_Arrays/02_FillRandom.pas

Похожие вопросы