S
SergDS
Здравствуйте, возникла проблема с задачей а именно вот с этим участком кода
Вся программа
При попытки сортировки происходит следующие
1)Если первым эли ментом при сортировки находиться max значение то он почему то выдает произведение и дополнительно сортирует только еще одно значение находящиеся за max
2)Если последим эли ментом при сортировки находиться max то происходит тоже что и описано в 1 пункте
3) Всё нормально работает если max не в конце и не вначале
4) Так же возникает проблема при сортировки отрицательных чисел он из просто не сортирует
Не могу понять как её решить , как можно организовать работу со значениями массива x часть которых еще не была измени на поиском max элемента и вычислением его произведения, операторные скобки здесь не помогают как можно сделать чтобы до упорядочивания доходил первоначальный массив
Код:
repeat
f:=false;
for i:=1 to n+1 do
begin
if x[i] > x[i+1] then
begin
f:=true;
buf:=x[i];
x[i]:=x[i+1];
x[i+1]:=buf;
end;
end;
Writeln('Uporadovachinie:',buf:8:2);
until not f;
Вся программа
Код:
Program mas;
Const n=4;
Var
f: boolean;
x:Array[1..n] of real;
s, max, r:real;
i, q: Integer;
buf:real;
Begin
s:=1;
q:=0;
Writeln('Vvedite chisla');
{$I-}
For i:=1 to n do
begin
Write(i,')');
Readln(x[i]);
end;
{$I+}
if IOResult > 32767 then
Writeln('error I/O');
readln;
max:=x[1];
For i:=2 to n do
begin
If max < x[i] then
begin
max:=x[i];
If x[i] = max then q:=i;
end;
If max <> x[1] then
begin
For i:=q+1 to n do
s:=x[i]*s;
if s = 1 then Writeln('Proizvedenie:', '0');
Writeln('Proizvedenie:',s:8:2);
end
else
If max = x[1] then
begin
For i:=q+2 to n do
s:=x[i]*s;
Writeln('Proizvedenie:',s:8:2);
end;
end;
repeat
f:=false;
for i:=1 to n+1 do
begin
if x[i] > x[i+1] then
begin
f:=true;
buf:=x[i];
x[i]:=x[i+1];
x[i+1]:=buf;
end;
end;
Writeln('Uporadovachinie:',buf:8:2);
until not f;
readln;
end.
При попытки сортировки происходит следующие
1)Если первым эли ментом при сортировки находиться max значение то он почему то выдает произведение и дополнительно сортирует только еще одно значение находящиеся за max
2)Если последим эли ментом при сортировки находиться max то происходит тоже что и описано в 1 пункте
3) Всё нормально работает если max не в конце и не вначале
4) Так же возникает проблема при сортировки отрицательных чисел он из просто не сортирует
Не могу понять как её решить , как можно организовать работу со значениями массива x часть которых еще не была измени на поиском max элемента и вычислением его произведения, операторные скобки здесь не помогают как можно сделать чтобы до упорядочивания доходил первоначальный массив