Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ сортировка пузырьком

Автор: gin 23.12.2006 4:44

здравствуйте, помогите найти ошибку в коде. всего то надо отсортировать масив из файла по возрастанию, а результат неправильный.
например, в файле записано:
10
1 2 12 3 8 9 1 5 40 14
а выдает:
1 1 2 0 5 8 9 0 14 40.
а где ошибка - не вижу.


program sort;
const nmax = 100;
var a : array [1..nmax] of integer;
n : integer;
i, j, k : integer;
dat, rez : text;
begin
assign(dat, 'data.txt');
reset(dat);
assign(rez, 'rezultat.txt');
rewrite(rez);
read(n);
for i := 1 to n do read(a[i]);
for i := 1 to n-1 do
begin
k := i;
for j := i+1 to n do
if a[j] <= a[k] then k := j;
a[i] := a[i] + a[k];
a[k] := a[i] - a[k];
a[i] := a[i] - a[k];
end;
for i := 1 to n do
write(a[i], ' ');
close(dat);
close(rez);
end.


Автор: мисс_граффити 23.12.2006 4:58

покажи мне, пожалуйста, строку, где ты читаешь элементы из файла.

Автор: gin 23.12.2006 5:16

Цитата

покажи мне, пожалуйста, строку, где ты читаешь элементы из файла.



read(n);
for i := 1 to n do read(a[i]);


Автор: volvo 23.12.2006 5:19

gin, разве ЭТО - из файла? По-моему, с клавиатуры...

Автор: gin 23.12.2006 5:26

не тот код взяла unsure.gif


read(dat, n);
for i := 1 to n do read(dat, a[i]);


Автор: volvo 23.12.2006 5:35

Угу.. Продолжаем... А где здесь, собственно, "пузырек"? В "пузырьке" ведь сравниваются соседние элементы, правда? А у тебя?

Вот ЭТО - "пузырек":

  for i := 1 to n - 1 do begin

for j := i + 1 to n do
if a[j] <= a[j - 1] then begin
a[j] := a[j] + a[j-1];
a[j-1] := a[j] - a[j-1];
a[j] := a[j] - a[j-1];
end;

end;