Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


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

Задание: 1) в векторе найти макс. и мин. элементы.
2) элементы между макс. и мин. элементами поменять местами (первый с последним, 2ой с предпоследним и т.д.) - так называемый "поплавок". Например:
входной вектор: 123456789
мин.=1 макс.=9
выходной вектор: 187654329

помогите со вторым заданием, пожалуйста - не всегда правильно выводит
очень нужна помощь - задание нужно сделать до завтра
Вот код:

uses crt;

Const nmax = 100;
Var temp, k, r,
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);

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
temp:=mas[i];
mas[i]:=mas[i_max-i+1];{ошибка скорее всего здесь}
mas[i_max-i+1]:=temp;
end;
end;


if i_max<i_min then
begin
for i:=i_max+1 to (i_max+(k div 2)) do
begin
temp:=mas[i];
mas[i]:=mas[i_min-i+1];{ошибка скорее всего здесь}
mas[i_min-i+1]:=temp;
end;
end;



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

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

Старый 08.01.2013, 14:05
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Созданные участниками форума обсуждения которые имеют сходства с вашим

Помогите исправить ошибку
Помогите исправить программу С#
Помогите исправить ошибку в программе
Помогите исправить программу на Delphi

Старый 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
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:28.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.