Показать сообщение отдельно
Старый 08.01.2013, 15:00   #2 (permalink)
Student
Member
 
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ошибку я уже исправил, но есть другая просьба: можете помочь оформить эту задачку через "функцию": макс. и мин. искать в программе, а менять элементы местами с помощью вызова функции. Помогите, кто может, не умею использовать функции!!

Вот рабочий код:

uses crt;

Const nmax = 100;
Var temp, k, r,p,
v_min, v_max,
max, min,
i_max,i_min,
i, j, n: Integer;
mas : Array [1..nmax] Of Integer;

Begin

write('Vhodnye dannye dly n=');
readln(n);
Write('v_min= ');
ReadLn(v_min);
Write('v_max= ');
ReadLn(v_max);
WriteLn;

WriteLn('Ishodny vector:');
randomize;
for i:=1 to n do
begin
mas[i]:=random(v_max-v_min+1)+v_min;
write(mas[i]:4);
end;
WriteLn;

max:=mas[1];
i_max:=1;

For i:=1 To n Do
If (mas[i]>max) Then
Begin
max:=mas[i];
i_max:=i;
End;

min:=mas[1];
i_min:=1;

for i:=1 to n do
If (mas[i]<min) Then
Begin
min:=mas[i];
i_min:=i;
End;


writeln;
WriteLn('Max chislo=',max, ' index:',i_max);
WriteLn('Min chislo=',min, ' index:',i_min);
WriteLn;


r:=i_min-i_max;
k:=abs(r);
p:=0;

write('длина между max и min=',k);
writeln;


if i_max>i_min then
begin
for i:=i_min+1 to (i_min+(k div 2)) do
begin
p:=p+1;
temp:=mas[i];
mas[i]:=mas[i_max-p];
mas[i_max-p]:=temp;
end;
end;


if i_max<i_min then
begin
for i:=i_max+1 to (i_max+(k div 2)) do
begin
p:=p+1;
temp:=mas[i];
mas[i]:=mas[i_min-p];
mas[i_min-p]:=temp;
end;
end;



For i:=1 to n do
write(mas[i]:4);
writeln;
readln;

end.
Student вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070