Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с сортировкой методом пузырька (http://www.tehnari.ru/f41/t43996/)

Major_Pain 28.12.2010 19:30

Помогите с сортировкой методом пузырька
 
Дан массив с (n) .Переписать в мас¬сив х ненулевые элементы массива с раз¬деленные на 5. Затем упорядочить методом «пузырька» по воз¬растанию новый массив.

программа даже не запускается, вот моё решение:
program o;const n=10; var
c:array[1..n] of real;
x:array[1..n] of real;
i,j,l,s:integer; f:boolean; t:real;
begin
randomize;
for i:=1 to n do
begin
for i:=1 to n do
c[i]:=random(100)-50;
end;
for i:=1 to n do
for j:=1 to n do
begin
if c[i]<>0 then
x[j]:=c[i]/5;
end;
for j:=1 to n do
s:=0;
begin
if x[j]=x[j] then s:=s+1; end;
writeln('s=',s);
repeat
f:=true;
for j:=1 to n-1 do
begin
if x[j]<x[j+1] then
begin
t:=x[j];
x[j]:=x[j+1];
x[j+1]:=t;
f:=false;
for j:=1 to n do
writeln('x[j]=',x[j]);
end; end;
until f=true;

end.

artos 28.12.2010 19:39

Может readln перед end. поставить? А то и выкидывает из проги как будто не запускалась вообще

Major_Pain 28.12.2010 20:09

не, толку от этого нету, чё-то в сортировке не то, я понять никак не могу(

shrek=) 29.12.2010 11:38

Я вижу решение этой программы так:
Код:

const n=10;
var
c:array[1..n] of integer;
x:array[1..n] of real;
i,j,s:integer;
l:real;
begin
randomize;
for i:=1 to n do begin
c[i]:=random(10);
end;
s:=0;
for i:=1 to n do
begin
if c[i]<>0 then begin
s:=s+1;
x[s]:=c[i]/5;
end;
end;
for i:=1 to s-1 do begin
for j:=i to s do
if x[i]>=x[j] then begin
l:=x[i];
x[i]:=x[j];
x[j]:=l;
end;
end;
for i:=1 to s do
writeln (x[i]:4:1);
readln
end.


AlexZir 29.12.2010 13:28

Алгоритм сортировки реализован неправильно, нужно поправить. Есть эталонный алгоритм, можно сравнить и найти разницу.

shrek=) 30.12.2010 05:13

Можно использовать вот этот алгоритм:
Код:

for i:=1 to s-1 do
    for j:=i+1 to s do
      if a[i]>a[j] then
        begin
          l:=a[i];
          a[i]:=a[j];
          a[j]:=l;
        end;


Major_Pain 02.01.2011 16:21

ооооо, работает, спасибо!


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.