Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/120: Рейтинг темы: голосов - 120, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 3

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

22.03.2015, 16:25. Показов 22378. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо написать программу. В которой двумерный массив заполненный случайными числами от А до Б, нужно отсортировать методом пузырька, при этом размерность массива вводится с клавиатуры. Вообщем проблема в сортировки примеров с одномерным массивом масса, а многомерных нет. Во вторник экзамен прошу помочь!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2015, 16:25
Ответы с готовыми решениями:

Сортировка Массива методом пузырька
Помогите с задачей. Задача: "Выполнить сортировку одномерного массива по возрастанию методом пузырька." Добавлено через 58...

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

Сортировка двумерного массива методом вставки
Сортировка двумерного массива методом вставки

6
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
23.03.2015, 13:51
tacinka125, как вариант, развернуть многомерный массив в одномерный, отсортировать его, и сделать обратное преобразование.
0
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 3
24.03.2015, 23:43  [ТС]
Я так и думал но нарисовалась еще одна проблема в размере массива мне его нужно задавать. В паскале размерность почему то только константы, мне и столбцы и строки нужно вводить заранее большим числом, а строить только по введенным величинам? плюс Второй массив тоже придется делать заранее большим?

Добавлено через 2 минуты
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
const
    m = 1000;
 
var
    arr: array[1..m] of integer;
    i, j, k,u,a,y: integer;
 
begin
 
writeln ('Vvedite dlinu massiva  ');
read(a);
writeln ('Zadayte interval cisel dlya zapolneniya massiva ot A do B');
readln(u);
read (y);
 
    randomize;
 
    write ('Исходный массив: ');
    for i := 1 to a do begin
        arr[i] :=u+ random(y);
        write (arr[i]:4);
    end;
    writeln; writeln;
 
 
    for i := 1 to a-1 do
        for j := 1 to a-i do
            if arr[j] > arr[j+1] then begin
                k := arr[j];
                arr[j] := arr[j+1];
                arr[j+1] := k
            end;
 
    write ('Отсортированный массив: ');
    for i := 1 to a do
        write (arr[i]:4);
 
    writeln;
 
readln
end. 
вот моя программа. Только у меня получилось с одномерным\массивом а для двумерного никак(
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
25.03.2015, 15:20
Это же PascalABC. И наверное здесь есть динамические массивы и матрицы.
Pascal
1
2
3
4
5
6
7
8
var
  a: array of array of integer;
begin
  SetLength(a, m, n);
  for i:=0 to m-1 to
    for j:=0 to n-1 do
      a[i, j]:=i*10+j;
end.
По поводу сортировки.
Можно знаешь как сделать. Не трогая матрицу, делать преобразование индексов. И процедура сортировки даже не догадается, что уже не с массивом работает.
Т.е. получаешь на вход процедуры сортировки матрицу вместо массива. Все действия по сортировки такие, как с массивом. Организуешь обычные два цикла по i (от 0 до m*n-1) и j (не помню, но соответствующие). Но к элементам матрицы обращаешься так
a[i div n, i mod n] или a[j div n, j mod n].
Может я что-то поднапутал с a[i div n, i mod n], но идея всё равно такая.

Добавлено через 24 минуты
У меня нет PascalABC, но на FreePascal это компилируется и работает
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
program MatrixSort;
 
type
  TMatrix = array of array of integer;
 
  procedure SortMatrix(var a: TMatrix; m, n: integer);
  var
    i, j: integer;
    t: integer;
  begin
 
    for i := 0 to (m * n - 1) do
      for j := 0 to (m * n - 1) - i - 1 do
        if a[j div n, j mod n] > a[(j + 1) div n, (j + 1) mod n] then
        begin
          t := a[j div n, j mod n];
          a[j div n, j mod n] := a[(j + 1) div n, (j + 1) mod n];
          a[(j + 1) div n, (j + 1) mod n] := t;
        end;
  end;
 
var
  m, n: integer;
  i, j: integer;
  a: TMatrix;
begin
  {ввод размерности и заполнение матрицы}
  m := 2;
  n := 8;
  SetLength(a, m, n);
  for i := 0 to m - 1 do
    for j := 0 to n - 1 do
      a[i, j] := 10 * (m - i) + (n - j);
  {матрица до сортировки}
  writeln('Before:');
  for i := 0 to m - 1 do
  begin
    for j := 0 to n - 1 do
      Write(a[i, j]: 4);
    writeln;
  end;
  {вызов процедуры сортировки}
  SortMatrix(a, m, n);
  {матрица после сортировки}
  writeln('After');
  for i := 0 to m - 1 do
  begin
    for j := 0 to n - 1 do
      Write(a[i, j]: 4);
    writeln;
  end;
end.
Результат работы
Before:
28 27 26 25 24 23 22 21
18 17 16 15 14 13 12 11
After
11 12 13 14 15 16 17 18
21 22 23 24 25 26 27 28
Если что, замени динамические массивы на обычные.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
25.03.2015, 15:25
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Это же PascalABC. И наверное здесь есть динамические массивы и матрицы.
В простом АВС этого нет, а в АВС.net есть.
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
25.03.2015, 15:31
Спасибо. Постараюсь запомнить.

Добавлено через 3 минуты
Тогда в проге из поста #4 заменить
Pascal
1
2
type
  TMatrix = array [0..99, 0..99] of integer;
и удалить строку 30 - SetLength.
0
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 3
25.03.2015, 18:40  [ТС]
Спасибо огромное. Но с моими знаниями в программировании. Я замутил нечто ужасное но оно работает как надо. И выводит все красиво))

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
55
56
57
58
59
60
61
62
63
64
65
66
67
const
    m = 1000;
 N=30;
 T =30;
var
    arr: array[1..m] of integer;
    arr2: array[1..n,1..t] of integer;
  
    i, j, k,u,a,y,b,g,p,r: integer;
 
begin
 
writeln ('Vvedite kol-vo strok massiva  ');
read(a);
writeln ('Vvedite kol-vo stolbcov massiva  ');
read(b);
writeln ('Zadayte interval cisel dlya zapolneniya massiva ot A do B');
readln(u);
read (y);
g:=a*b;
    randomize;
 
    for i := 1 to g do begin
        arr[i] := random(y)+u;
        end;
    writeln; writeln ('ishodniy massiv');
     writeln;
    for i:=1 to a do
  for j:=1 to b do
  begin
    r:=r+1;
    arr2[i,j]:=arr[r];
  end;
  
  for i:=1 to a do 
  begin 
  for j:=1 to b do 
  write(arr2[ i,j],'  '); writeln end;
  
  writeln;
  writeln;
 
 
    for i := 1 to g-1 do
        for j := 1 to g-i do
            if arr[j] > arr[j+1] then begin
                k := arr[j];
                arr[j] := arr[j+1];
                arr[j+1] := k
            end;
 writeln ('Sortirovanniy massiv');
  writeln;
 for i:=1 to a do
  for j:=1 to b do
  begin
    p:=p+1;
    arr2[i,j]:=arr[p];
  end;
  
  for i:=1 to a do 
  begin 
  for j:=1 to b do 
  write(arr2[ i,j], '  '); writeln end;
 
 
readln
end.

всем спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2015, 18:40
Помогаю со студенческими работами здесь

Сортировка двумерного массива методом вставки
помогите пожалуйста,эту программу так,чтобы сортировались символы,а не цифры. Program p2; Uses crt; Var k,n,j,i,X:integer; ...

Сортировка двумерного массива любым методом сортировки
Отсортировать в двумерном массиве случайных символов А элементы каждого столбца по алфавиту любым методом сортировки(сортировка простым...

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

Сортировка методом пузырька
Какая из этих программ более правильная? Различаются 13 и 14 строки. uses crt; var a:array of integer; i,j,n,b:integer; begin ...

Сортировка методом «пузырька»
Помогите пожалуйста.Целочисленный массив состоит из значений диапазона от 100 до 200. Направление сортировки: по возрастанию.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru