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