Turbo Pasca Сортировка

Тема в разделе "Pascal and Delphi", создана пользователем SergDS, 2 дек 2011.

  1. SergDS

    SergDS New Member

    Регистрация:
    2 дек 2011
    Сообщения:
    0
    Симпатии:
    0
    Здравствуйте, возникла проблема с задачей а именно вот с этим участком кода
    Код (Delphi):
    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;
    Вся программа
    Код (Delphi):
    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 элемента и вычислением его произведения, операторные скобки здесь не помогают как можно сделать чтобы до упорядочивания доходил первоначальный массив
     
  2. SergDS

    SergDS New Member

    Регистрация:
    2 дек 2011
    Сообщения:
    0
    Симпатии:
    0
    Хорошо, посоветуйте как тогда копировать данные из массива
    x:Array[1..n] of real;
    в массив
    r:Array[1..n] of real;
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    > Хорошо, посоветуйте как тогда копировать данные из массива
    поэлементно
    ты бы хоть задачу написал. а то просто какая-то куча кода, никто же не будет разбираться просто так. код не твой? :)
     
  4. SergDS

    SergDS New Member

    Регистрация:
    2 дек 2011
    Сообщения:
    0
    Симпатии:
    0
    Нет мой, всю задачу сам писал, вы мне просто скажите как можно из массива
    x:Array[1..n] of real;
    в массив
    r:Array[1..n] of real;
    все данные копировать
    я тупым присваивание сделал
    r:=x;
    но толку от этого не наблюдаю может всё это в процедуру мне загнать, буду рад любому ответу
    Код (Delphi):
    Program mas;
    Const n=4;
    Var
    f: boolean;
    x:Array[1..n] of real;
    r:Array[1..n] of real;
    s, max:real;
    i, j, 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]);
    r[i]:=x[i];
    end;
    Writeln(x[i]);
     
Загрузка...
Похожие Темы - Turbo Pasca Сортировка
  1. vivekast
    Ответов:
    0
    Просмотров:
    1.033
  2. Max69
    Ответов:
    0
    Просмотров:
    1.249
  3. Sabishka13
    Ответов:
    0
    Просмотров:
    1.188
  4. adam-mospan
    Ответов:
    3
    Просмотров:
    3.363
  5. ovaaal
    Ответов:
    1
    Просмотров:
    1.115

Поделиться этой страницей