with
Ada.Text_IO,
Ada.Integer_Text_IO,
Ada.Numerics.Discrete_Random;
procedure N74139928 is
subtype TSize is Integer range 1 .. 100;
subtype TRandN is TSize range 10 .. TSize'Last;
subtype TValue is Integer range -99 .. 99;
package RandN is new Ada.Numerics.Discrete_Random(TRandN);
package RandV is new Ada.Numerics.Discrete_Random(TValue);
use
Ada.Text_IO,
Ada.Integer_Text_IO,
RandN,
RandV;
n: TRandN;
GenN: RandN.Generator;
GenV: RandV.Generator;
C: Character;
begin
Reset(GenN);
n := Random(GenN);
declare
a: array (1 .. n) of TValue;
imax1, imax2: TSize := TSize'First;
j: Integer;
t: TValue;
begin
Reset(GenV);
Put_Line("Исходный массив A(" & Integer'Image(n) & "):");
for i in a'Range loop
loop
a(i) := Random(GenV);
j := i - 1;
while j >= a'First and then a(i) /= a(j) loop
j := j - 1;
end loop;
exit when j < a'First;
end loop;
Put(a(i), 4);
if i = a'First or else a(i) > a(imax1) then
imax2 := imax1;
imax1 := i;
elsif a(i) > a(imax2) then
imax2 := i;
end if;
end loop;
New_Line;
Put_Line("Два наибольших элемента: ");
Put_Line("A(" & TSize'Image(imax1) & ") = " & TValue'Image(a(imax1)));
Put_Line("A(" & TSize'Image(imax2) & ") = " & TValue'Image(a(imax2)));
t := a(imax1);
a(imax1) := a(imax2);
a(imax2) := t;
Put_Line("Массив после перестановки: ");
for i in a'Range loop
Put(a(i), 4);
end loop;
end;
Get_Immediate(C);
end N74139928;
P.S. Массив создаётся с помощью генератора псевдослучайных чисел.
Элементы массива неповторяющиеся, иначе, при одинаковых по значению двух максимальных элементах, не будет заметно, что они поменялись.
Другие языки программирования и технологии
линейный массив. в линейном массиве найти два наибольших числа и переставить их помогите пожалуйста,заранее спасибо)
отсортируй массив по убыванию и переставь 2 первых элемента местами. или пройди дважды массив и определи 2 максимальных
переставить куда?
За пару сотен сделаю )
Похожие вопросы
- Кто знает фотошоп, помогите пожалуйста. Заранее Спасибо. Вопрос внутри
- Массивы. как в массиве найти 3 наименьших числа не используя сортировку если можно код
- Вводится последовательность чисел, 0 – конец последовательности. Найти два наибольших числа (VB) прошу помощи
- Найти самое большое число с++
- Как найти сумму цифр пятизначного числа в турбо паскаль? Помогите, пожалуйста!!!
- Подскажите где можно найти фотошоп Cs4 русф, или же русификотор для него заранее спасибо
- Паскаль. В линейном массиве найти два максимальных элемента.
- Составьте программу, отыскивающую наибольший элемент массива A(N) из числа принадлежащим интервалу {min,(min+max\2))
- помогите пожалуйста с массивом А- массив из 10 целых чисел найти число больше 10 сообщить его номер.
- помогите пожалуйста сделать мне практическую по массивам, пожалуйста!!!