Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 373
от 17.05.2007, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 254, Экспертов: 69
В номере:Вопросов: 1, Ответов: 4


Вопрос № 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

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, DancaN!

Даны действительные числа 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;

Buffer := Mas[Index1];{производится замена}
Mas[Index1] := Mas[index2];
Mas[Index2] := Buffer;
Writeln('Поменяли наибольший и наименьший');
Writeln('Резульат');

For i:=1 to 20 do {Вывод массива на экран}
Write(' ',mas[i]:3:1);

Buffer := Mas[Index1];{Восстановили начальное состояние массива}
Mas[Index1] := Mas[index2];
Mas[Index2] := Buffer;

Buffer := Mas[Index1];{производится замена}
Mas[Index1] := Mas[20];
Mas[20[ := Buffer;

Writeln('А сдесь поменяли наибольший и последний');
Writeln('Результат');

For i:=1 to 20 do
Write(' ',mas[i]:3:1);

Readkey;
End.

---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 1-ый класс)
Ответ отправлен: 14.05.2007, 09:49


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное