singlepost

Помогите плиз с задачей на паскале << На главную или назад  

в массиве из 10 чисел отсортировать в порядке возрастания все положительные числа. Отрицательные и нулевые оставить на своих местах

program laboratorn11;
uses crt;
var
a:array[1..10] of real;
i,j:integer;
x:real;
begin
for i:=1 to 10 do
begin
writeln('Enter A[',I,']=');
readln(a[i]);
end;
writeln('Sortorovka po vozrastaniyu');
for i:=1 to 10 do write(a[i]:6:2,'');
writeln;
j:=0;
for i:=1 to 10 do
begin
if a[i]>=0 then
begin
if a[j-1]>a[j] then
begin
x:=a[j];
a[j]:=a[j-1];
a[j-1]:=x;
end;
end;
end;
if J>0 then
begin
for i:=1 to 10 do
write(a[i]:6:2);
writeln;
end
else
wtiteln('NO_POSITIVE_ELEMENT');
readkey
end.

Как правильно написать эту задачку, я попытался, но безрезультатно =((

Заранее спс =)

13 ответов в теме “Помогите плиз с задачей на паскале”

  1. 13
    Дмитрий Бондаренко ответил:

    большое спс =)

  2. 12
    Антон Кононов ответил:

    чьорт. я ступил)) вместо положительных чисел сортировал отрицательные. Ну короче надо чуть поменять и будет работать.

  3. 11
    Антон Кононов ответил:

    а чо? работает? ^_^

  4. 10
    Алексей Сторожев ответил:

    var
    a: array [1..10] of integer;
    i,j,c,n: integer;
    begin
    randomize;
    n := 10;
    for i:=1 to n do
    begin
    a[i] := random (10) – 5;
    write (a[i],' ');
    end;
    writeln;
    for i:=1 to n-1 do
    if (a[i] > 0) then
    for j:=i+1 to n do
    if (a[j] > 0) and (a[i] > a[j]) then
    begin
    c := a[i];
    a[i] := a[j];
    a[j] := c;
    end;
    for i:=1 to n do
    write (a[i],' ');
    writeln;
    readln;
    end.
    работает 100%

  5. 9
    Дмитрий Бондаренко ответил:

    спс большое =)

  6. 8
    Антон Кононов ответил:

    ну ё-маё программер. ну ща…

    var min: real;
    a,b:array [1..10] of real;
    i:integer;

    function GetMin(var amin: real; def: real): real;
    var i:integer;
    begin
    GetMin := def;
    for i:=1 to 10 do if (a[i]<GetMin) and (a[i]>amin) and (a[i]<0) then GetMin:=a[i];
    amin := GetMin;
    end;

    begin
    {тут ввод данных в массив а сделай сам}
    min:=a[1];
    for i:=1 to 10 do
    if a[i]>=0 then b[i]:=a[i] else b[i]:=GetMin(min, a[i]);
    {вывод массива b на экран}
    end.

    вроде так. пишу из головы. не факт, что с первого раза заработает =)

    ps. поправил код…
    pps. еще поправил…
    ppps. подумал и еще дописал =)
    pppps. о блин! забыл что числа отрицательные только. дописал в функцию "and (a[i]<0)". хотя подозреваю что это условие лишнее ;)

  7. 7
    Дмитрий Бондаренко ответил:

    Второй массив можно, если можете, то напишите пожалуйста код =)

  8. 6
    Антон Кононов ответил:

    интересное условие: "if a[i]>=0 then". а в задаче вроде сказано, что нулевые мы не трогаем.

    далее у тебя идет пузырьковая сортировка: "if a[j-1]>a[j] then
    begin
    x:=a[j];
    a[j]:=a[j-1];
    a[j-1]:=x;
    end;". А она отсортирует не только отрицательные, но и все соседние к ним (в данном случае).

  9. 5
    Жека Кирпичев ответил:

    Дмитрий, в твоем сообщении не содержится вопроса. Это значит, что тебе и так все понятно, и тему можно удалить?

  10. 4
    Дмитрий Бондаренко ответил:

    а как тогда написать? сортировкой выбором?

  11. 3
    Дмитрий Бондаренко ответил:

    нет, щас будет вопрос =)

  12. 2
    Антон Кононов ответил:

    я даж не знаю как бы я делал. пару мыслей есть. ну вот например:
    перебираем элементы массива циклом. если элемент неотрицательный, то ничего не деалем, а если отрицательный, то заменяем его на b[i] = GetMin(amin); где GetMin – функция на входе имеет число и на выходе число (ищет минимальный из отрицательных чисел, но не меньше amin)
    После этого amin меняется на новое найденное значение.

    Решение будет небольшое по коду, но потребуется второй массив. У тебя по условию можно второй массив использовать?

    Если мое решение не понятное – напишу код.

  13. 1
    Алексей Гридин ответил:

    А зачем же выводить, что положительных чисел нет? Тебе даётся массив, массив же ты и должен выдать на выходе. Если чисел нужных нет – значит они уже отсортированны)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.