Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 5
1

Сортировка массива методом пузырька

08.06.2014, 19:04. Показов 1893. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех. Прошу помощи у знающих людей с написанием программы.

Итак, условия - дан числовой массив 15x15, который берется из текстового файла. Нужно отсортировать числа массива по возрастанию от наименьшего к большему и вывести его в другой текстовый файл.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const
     n=15;
var
     f:text;
     a:array[1..225] of integer;
     i,j,s,e,c:integer;
begin
     assign(f,'E:\input.txt');
     reset(f);
              write ('Исходный массив: ');
              for i:=1 to n do
              for j:=1 to n do
              begin
                   read(f,a[i]);
                   write(a[i],' ');
              end;
     c:=224;
     for i:=1 to c do
 
     begin
          if a[i]>a[i+1] then
             begin
                  s:=a[i];
                  a[i]:=a[i+1];
                  a[i+1]:=s;
             end;
     end;
     c:=c-1;
 
     for i:=1 to c do
     begin
          if a[i]>a[i+1] then
             begin
                  s:=a[i];
                  a[i]:=a[i+1];
                  a[i+1]:=s;
             end;
     end;
end.
И собственно проблема, вроде разобрался с сортировкой, но не могу разобраться с выводом и записью массива в файл, помогите пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2014, 19:04
Ответы с готовыми решениями:

Сортировка массива методом пузырька и методом выбора
Что значит: сортировка массива методом пузырька и методом выбора.

Сортировка массива методом пузырька
В чемпионате по футболу приняли участие 7 команд. Сумма очков каждой команды хранится в массиве...

Сортировка массива методом пузырька по возрастанию и убыванию
Всем привет, помогите отсортировать одномерный масив методом пузырька. Только мне нужно чтоб парные...

Сортировка первых N<12 элементов массива по возрастанию методом пузырька
Здравствуйте! Помогите пожайлуста! Составить программу упорядочения первых N&lt;12 элементов по...

8
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2014, 19:26 2
Вот вариант сортировки двухмерного массива,предложенный UI.
У вас будет 15х15
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses crt;
const
  R = 5;
  C = 10;
var
  a : array[1 .. R, 1 .. C] of integer;
 
function Col(i : Integer) : Integer;
begin
 Result := Succ(Pred(i) mod C)
end;
function Row(i : Integer) : Integer;
begin
 Result := Succ(Pred(i) div C)
end;
 
var
  i, j : Integer;
  T : Integer;
begin
randomize;
writeln('Исходная матрица');
for i:=1 to r do
 begin
  for j:=1 to c do
   begin
    a[i,j]:=random(100);
    write(a[i,j]:4)
   end;
  writeln
 end;
for i := 1 to R * C do
for j := R * C downto Succ(i) do
if a[Row(j - 1), Col(j - 1)] > a[Row(j), Col(j)] then
 begin
   T := a[Row(j - 1), Col(j - 1)];
   a[Row(j - 1), Col(j - 1)] := a[Row(j), Col(j)];
   a[Row(j), Col(j)] := T;
 end;
writeln('Отсортированная матрица');
for i:=1 to r do
 begin
  for j:=1 to c do
  write(a[i,j]:4);
  writeln
 end;
end.
1
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 5
08.06.2014, 19:32  [ТС] 3
Цитата Сообщение от Puporev Посмотреть сообщение
Вот вариант сортировки двухмерного массива,предложенный UI.
У вас будет 15х15
К сожалению данная вами программа вообще не запускается. Неизвестный идентификатор пишет.

С моим кодом можете помочь ? Вся проблема с выводом.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2014, 19:41 4
Цитата Сообщение от AntonDJ Посмотреть сообщение
Вся проблема с выводом.
Да нет, не только, массив должен быть двумерным
Pascal
1
a:array[1..n,1..n] of integer;
Добавлено через 4 минуты
Цитата Сообщение от AntonDJ Посмотреть сообщение
К сожалению данная вами программа вообще не запускается.
Нормально запускается, не сочиняйте, просто нужно чуть поправить под Турбо Паскаль.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
uses crt;
const
  R = 5;
  C = 10;
var
  a : array[1 .. R, 1 .. C] of integer;
 
function Col(i : Integer) : Integer;
begin
 Col := Succ(Pred(i) mod C)
end;
function Row(i : Integer) : Integer;
begin
 Row := Succ(Pred(i) div C)
end;
 
var
  i, j : Integer;
  T : Integer;
begin
randomize;
writeln('Исходная матрица');
for i:=1 to r do
 begin
  for j:=1 to c do
   begin
    a[i,j]:=random(100);
    write(a[i,j]:4)
   end;
  writeln
 end;
for i := 1 to R * C do
for j := R * C downto Succ(i) do
if a[Row(j - 1), Col(j - 1)] > a[Row(j), Col(j)] then
 begin
   T := a[Row(j - 1), Col(j - 1)];
   a[Row(j - 1), Col(j - 1)] := a[Row(j), Col(j)];
   a[Row(j), Col(j)] := T;
 end;
writeln('Отсортированная матрица');
for i:=1 to r do
 begin
  for j:=1 to c do
  write(a[i,j]:4);
  writeln
 end;
readln
end.
Добавлено через 33 секунды
Цитата Сообщение от AntonDJ Посмотреть сообщение
С моим кодом можете помочь ? Вся проблема с выводом.
Бог поможет.
1
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 5
08.06.2014, 19:44  [ТС] 5
Цитата Сообщение от Puporev Посмотреть сообщение
Нормально запускается, не сочиняйте, просто нужно чуть поправить под Турбо Паскаль.
К сожалению я не особо знаю язык, как вы наверное уже поняли.

Да, сейчас все работает, спасибо, а с вводом и выводом поможете разобраться ?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2014, 20:01 6
Лучший ответ Сообщение было отмечено AntonDJ как решение

Решение

Вот гибрид из двух программ.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses crt;
const n=15;
 
function Col(i:integer):integer;
begin
 Col:=Succ(Pred(i) mod n)
end;
function Row(i:integer):integer;
begin
 Row:=Succ(Pred(i) div n)
end;
 
var f:text;
    a:array[1..n,1..n] of integer;
    i,j,t:integer;
begin
clrscr;
assign(f,'input.txt');
reset(f);
writeln('Исходный массив: ');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    read(f,a[i,j]);
    write(a[i,j]:4);
   end;
  writeln
 end;
close(f);
for i:=1 to n*n do
for j:=n*n downto Succ(i) do
if a[Row(j-1),Col(j-1)]>a[Row(j),Col(j)] then
 begin
   t:=a[Row(j-1),Col(j-1)];
   a[Row(j-1),Col(j-1)]:=a[Row(j),Col(j)];
   a[Row(j),Col(j)]:=t;
 end;
writeln('Отсортированный массив');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln
 end;
readln
end.
Добавлено через 1 минуту
Если не знаешь, то
succ(i) номер следующего элемента
pred(i) номер предыдущего элемента
1
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 5
08.06.2014, 20:29  [ТС] 7
Цитата Сообщение от Puporev Посмотреть сообщение
Вот гибрид из двух программ.
Огромное спасибо. Последний вопрос, сделал вывод в файл output, но почему-то выводит в строчку, а не матрицей, не подскажите как правильно сделать ?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2014, 20:32 8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
writeln('Отсортированный массив');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    write(a[i,j]:4);
    writeln(f,a[i,j]:4);
   end;
  writeln;
  writeln(f)
 end;
close(f);
readln
end.
1
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 5
08.06.2014, 20:59  [ТС] 9
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
uses crt;
const n=15;
 
function Col(i:integer):integer;
begin
 Col:=Succ(Pred(i) mod n)
end;
function Row(i:integer):integer;
begin
 Row:=Succ(Pred(i) div n)
end;
 
var f:text;
    a:array[1..n,1..n] of integer;
    i,j,t:integer;
begin
clrscr;
assign(f,'E:\input.txt');
reset(f);
writeln('Исходный массив: ');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    read(f,a[i,j]);
    write(a[i,j]:4);
   end;
  writeln
 end;
close(f);
for i:=1 to n*n do
for j:=n*n downto Succ(i) do
if a[Row(j-1),Col(j-1)]>a[Row(j),Col(j)] then
 begin
   t:=a[Row(j-1),Col(j-1)];
   a[Row(j-1),Col(j-1)]:=a[Row(j),Col(j)];
   a[Row(j),Col(j)]:=t;
 end;
  assign(f,'E:\output.txt');
rewrite(f);
writeln('Отсортированный массив');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    write(a[i,j]:4);
    writeln(f,a[i,j]:4);
   end;
  writeln;
  writeln(f)
 end;
close(f);
readln
end.
Вот полный код, сейчас вывод происходит в 1 столбик.

Добавлено через 4 минуты
А, все, разобрался извиняюсь. Огромное спасибо вам за помощь.
0
08.06.2014, 20:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2014, 20:59
Помогаю со студенческими работами здесь

Сортировка одномерного массива по убыванию методом «Пузырька». Процедуры
Помогите пожалуйста с задачей. Заранее спасибо Описать процедуру, сортировки одномерного массива...

Сортировка двумерного массива методом пузырька: что не так в программе?
Всем привет! Не могу разобраться почему не работает сортировка методом пузырька в такой программе....

Ускоренная сортировка методом пузырька и методом слияния
Друзья помогите. Условие задачи: Составить две программу, которые реализуют алгоритм ускоренной...

Сортировка массива методом "Пузырька"
Ребята Помогите Надо составить Программу &quot;Сортировка Массива Методом &quot;Пузырька&quot; &quot; Надеюсь на Вас...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru