Помощь - Поиск - Пользователи - Календарь
Полная версия: сортировка пузырьком
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
gin
здравствуйте, помогите найти ошибку в коде. всего то надо отсортировать масив из файла по возрастанию, а результат неправильный.
например, в файле записано:
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.

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

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



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

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

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

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

Вот ЭТО - "пузырек":
  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;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.