Вопрос № 86527: Здравствуйте, пожалуйста помогите со следеющей задачей....
Даны действительные числа a1,a2,....a20 (все попарно различные). Поменять в этой последовательности местами:
а) наибольший и наименьший элемент;
б) наибольший и последний член.<b...
Вопрос № 86.527
Здравствуйте, пожалуйста помогите со следеющей задачей....
Даны действительные числа a1,a2,....a20 (все попарно различные). Поменять в этой последовательности местами:
а) наибольший и наименьший элемент;
б) наибольший и последний член.
Заранее благодарен!
Отправлен: 12.05.2007, 01:00
Вопрос задал: DancaN (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Устинов С.Е.
Здравствуйте, DancaN!
А где именно у Вас сложность?
a) Находим индекс минимального и индекс максимального элемента и меняем их местами.
const n=20;
var a:array[1..n] of real;
i,min,max:integer;
t:real;
begin
for i:=1 to n do readln(a[i]);
min:=1; max:=1;
for i:=2 to n do
begin
if a[min] > a[i] then min:=i;
if a[max] < a[i] then max:=i;
end;
t:=a[min];
a[min]:=a[max];
a[max]:=t;
for i:=1 to n do writeln(a[i]:5:2);
end.
б) находим индекс максимального элемента и меняем его местами с последним.
const n=20;
var a:array[1..n] of real;
i,max:integer;
t:real;
begin
for i:=1 to n do readln(a[i]);
max:=1;
for i:=2 to n do if a[max] < a[i] then max:=i;
t:=a[n];
a[n]:=a[max];
a[max]:=t;
for i:=1 to n do writeln(a[i]:5:2);
end.
Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 12.05.2007, 01:16
Отвечает: Gh0stik
Здравствуйте, DancaN!
Пункт "а". const n=20;
var a:array[1..n] of real;
imn,imx,i:integer;
t:real;
begin
writeln('Input massiv:');
for i:=1 to n do
begin write('a[',i,']='); read(a[i]);end; {ввод данных}
imn:=1; imx:=1;
for i:=2 to n do
begin
if a[imn] > a[i] then imn:=i;
if a[imx] < a[i] then imx:=i; {поиск индексов максимального и минимального элементов}
end;
t:=a[imn];
a[imn]:=a[imx];
a[imx]:=t; {перестановка элементов}
for i:=1 to n do writeln(a[i]:5:2);
end.
Пункт "б". const n=20;
var a:array[1..n] of real;
imn,imx,i:integer;
t:real;
begin
writeln('Input massiv:');
for i:=1 to n do
begin write('a[',i,']='); read(a[i]);end;
imn:=1; imx:=1;
for i:=2 to n do
begin
if a[imn] > a[i] then imn:=i;
if a[imx] < a[i] then imx:=i;
end;
t:=a[imx];
a[imx]:=a[n];
a[n]:=t;
for i:=1 to n do writeln(a[i]:5:2); {вывод результата на экран}
end.
Как видите первая часть общая для обоих случаев, различны только условия перестановки.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 12.05.2007, 01:16
Отвечает: Djec
Здравствуйте, DancaN!
В приложении исходник, который находит и меняет местами наибольший и наименьший элементы, т.е. пункт а)
Для пункта б) необходимо строчки
A[i_Min] := Max;
A[i_Max] := Min;
Заменить на
If i_Max = 20
then
WriteLn( 'Максимальный на последнем месте и последовательность осталось без изменений' );
else
begin
A[i_Max] := A[20];
A[20] := Max;
end;
А кусок нахождения минимального
Min := A[1];
i_Min := 1;
...
If A[i] < Min
then
begin
Min := A[i];
i_Min := i;
end;
можно опустить тогда. И переменные из описания тоже убрать.
Будут вопросы обращайтесь.
Приложение:
--------- Никогда не сдавайся, даже если боишься проиграть
Ответ отправил: Djec (статус: 2-ой класс)
Ответ отправлен: 12.05.2007, 11:30
Даны действительные числа a1,a2,....a20 (все попарно различные). Поменять в этой последовательности местами:
а) наибольший и наименьший элемент;
б) наибольший и последний член.
Это выполняется в одной проге.
Program p1;
uses crt;
Var
Mas : array[1..20] of Real;
Min,Max,buffer : Real;
Index1,Index2,i: Integer;
Begin
Clrscr;
For i:=1 to 20 do
Begin
Write('Введите ',i,'-й элемент --> ');
readln(Mas[i]);
End;
Clrscr;
For i:=1 to 20 do
Write(' ',mas[i]:3:1);
Max:=Mas[1];
For i:=1 to 20 do {Ищем максимальный элемент}
If Mas[I] > Max
Then
Begin
Max:=Mas[i];
Index1 := i;
End;
Min:=mas[i];{Ищем минимальный элемент}
For i:=1 to 20 do
If Mas[I] < Min
Then
Begin
Min:=Mas[i];
Index2 := i;
End;