Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Поменять местами

Автор: Lady_Dark 31.10.2006 1:07

Покопалась, никак не могу найти, все не то...
А у самой что-то не получается... unsure.gif wacko.gif
Помогите чем можете!..

Автор: volvo 31.10.2006 1:11

Найти min/max можешь? А их индексы?

Автор: Lady_Dark 31.10.2006 1:19

Мин и макс может и найду, smile.gif , а вот с индексами... че то я не знаю...

"Дан одномерный массив А, состоящий из 2n элементов. Поменять местами первую и вторую его половины" - вот это могу. А вот с размером 10... не догоню как

Автор: Lady_Dark 31.10.2006 18:46

Можете подробно в коде самое важное написать?.. unsure.gif

Автор: мисс_граффити 31.10.2006 20:02

покажи, как ты умеешь искать мин и макс smile.gif
там надо будет добавить по одной строчке - это будет запоминание их индексов.
а потом поменять 2 числа - думаю, это ты умеешь.

Автор: Lady_Dark 7.11.2006 18:06

Вот:


const maxSize=50;
type vector=array [1..maxSize] of double;
type vector=array [1..minSize] of double;

var a: vector;
i,n,nMax,nMin,j,m: byte;
temp=double;
begin
write ('n=');
read (n);
{ввод массива}
for i:=1 to n do
begin
write ('a[',i,']=');
read (a[i]);
end;

begin
nMax:=1;
for i:=1 to n do
if a[i]>a[nMax]
then nMax:=i;
{если встретится больший элемент, то запомним его номер}
write ('номер=',nMax,'max значение=',a[nMax]:8:2);
end.



Автор: Malice 7.11.2006 18:54

Делаешь тоже самое для nMin и меняешь так:

temp:=a[nMax]; a[nMax]:=a[nMin]; a[nMin]:=temp;
, где temp - переменная типа double.

Автор: volvo 7.11.2006 18:55

Lady_Dark, прекрасно smile.gif ... Теперь проделываешь то же самое для нахождения номера минимального элемента, скажем, он у тебя будет называться nMin, и после того, как найдешь - меняешь местами элементы a[nMin] и a[nMax] через третью, буферную переменную...

Автор: Lady_Dark 14.11.2006 17:53

Тупо, не так, да? dry.gif


const maxSize=50;
type vector=array [1..maxSize] of double;
type vector=array [1..minSize] of double;

var a: vector;
i,n,nMax,nMin,j,m: byte;
temp=double;
begin
write ('n=');
read (n);
{ввод массива}
for i:=1 to n do
begin
write ('a[',i,']=');
read (a[i]);
end;

begin
nMax:=1;
for i:=1 to n do
if a[i]>a[nMax]
then nMax:=i;
{если встретится больший элемент, то запомним его номер}
write ('номер=',nMax,'max значение=',a[nMax]:8:2);
end;

begin
write ('m=');
read (m);
{ввод массива}
for j:=1 to m do
begin
write ('a[',i,']=');
read (a[i]);
end;

begin
nMin:=1;
for j:=1 to m do
if a[i]>a[nMin]
then nMin:=j;
{если встретится больший элемент, то запомним его номер}
write ('номер=',nMin,'min значение=',a[nMin]:8:2);
end;

begin
temp:=a[nMax]; a[nMax]:=a[nMin]; a[nMin]:=temp;
end.



Автор: volvo 14.11.2006 17:56

Цитата
if a[i]>a[nMin]
Знак на "меньше" забыла поменять...

Да и вводить массив во второй раз не нужно...

Автор: Lady_Dark 14.11.2006 18:35

http://www.nefory.narod.ru/ARRAY.PAS

бегин экспектед... =) =(

ААА! ИСПРАВЬТЕ МНЕ ЕЕ! =)))

Автор: lapp 14.11.2006 19:10

Цитата(Lady_Dark @ 14.11.2006 15:35) *

бегин экспектед... =) =(

ААА! ИСПРАВЬТЕ МНЕ ЕЕ! =)))

Ты написала coust вместо const во второй строчке..
Еще нужно убрать массу лишнего, типа повторный ввод массива, а также лишние begin'ы и end'ы.

И, пожалуйста, не нужно кричать (читай http://forum.pascal.net.ru/rules.html, п.6)