Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 26
1

Перестроить строки матрицы так, чтобы они были расположены по возрастанию в лексикографическом порядке

19.12.2012, 15:50. Просмотров 1365. Ответов 3
Метки нет (Все метки)

Дана матрица А из целых чисел размером MxN. Перестроить строки матрицы так, чтобы они были расположены по возрастанию в лексикографическом порядке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2012, 15:50
Ответы с готовыми решениями:

Переставить элементы массива так, чтобы они были расположены по убыванию
Сортировка выбором. Дана последовательность чисел a1,a2,...an. Требуется переставить элементы так,...

Отсортировать элементы матрицы так, чтобы при прохождении по схеме, они были бы упорядочены по не убыванию
Дано натуральное N (1<=N<=10), целочисленный квадратный массив-матрица (aij), 0<= i ,j <N....

Заданы два упорядоченных по возрастанию массива. Соединить их в один массив, так чтобы элементы были упорядоченны по возрастанию
Заданы два упорядоченных по возрастанию массива А и В, состоящих из N и M вещественных элементов...

Переставьте строки и столбцы матрицы так, чтобы значения элементов были упорядочены по убыванию
Дана двумерная матрица целых чисел А. Переставьте строки и столбцы матрицы так, чтобы значения...

3
35 / 35 / 33
Регистрация: 21.12.2012
Сообщений: 64
24.12.2012, 01:20 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
43
44
45
46
47
48
const
  n=5;
  m=6;
var
  mas:array[1..n,1..m] of integer;
  a:integer;
  j,k,i:byte;
 
begin
randomize;
for j:=1 to m do
for i:=1 to n do
mas[i,j]:=random(10);
 
Writeln('Начальный массив');
 
for j:=1 to m do
begin
for i:=1 to n do
write(mas[i,j],' ');
writeln;
end;
 
 
for j:=1 to m do
begin
for k:=1 to n do
for i:=1 to n-1 do
if mas[i,j]>mas[i+1,j] then
begin
a:=mas[i,j];
mas[i,j]:=mas[i+1,j];
mas[i+1,j]:=a
end;
end;
 
 
Writeln('Новый массив');
 
for j:=1 to m do
begin
for i:=1 to n do
write(mas[i,j],' ');
writeln;
end;
readln;
readln;
end.
1
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 26
25.12.2012, 08:36  [ТС] 3
eNet, благодарю.
0
142 / 148 / 116
Регистрация: 15.11.2012
Сообщений: 535
Записей в блоге: 2
30.12.2012, 21:24 4
Вот такой вариант я запустил один раз - зависло. потом еще раз 10 хорошо отработало. Т.е., может быть не все условия проставлены
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
const n = 15; m = 4;
type Tmatrix = array[1..n,1..m] of integer;
 
{glavnaya rekursivnaya procedura}
procedure lexMatr(var a_Matr: Tmatrix; stb,nach,kon:byte);
var i,d:byte;
{procedura sortirovki v intervale strok}
procedure Sort(var a_Matr:Tmatrix; stb,perv,posl:byte);
var     i,j,k :byte;
        t :integer;
begin
    for k:=1 to posl-1 do {внешний счётчик}
        for i:=perv to posl-k do
            if a_Matr[i,stb]>a_Matr[i+1,stb] then
                                for j:=1 to m do begin
                                        t:=a_Matr[i,j];
                                        a_Matr[i,j]:=a_Matr[i+1,j];
                            a_Matr[i+1,j]:=t;
                                end;
end;
begin
        Sort(a_Matr,stb,nach,kon);
        i:=nach;
        while (i<kon) and (stb<m)do
        if a_Matr[i,stb]=a_Matr[i+1,stb] then begin
            d:=i;
        while (i<kon)and(a_Matr[i,stb]=a_Matr[i+1,stb]) do Inc(i);
                lexMatr(a_Matr,stb+1,d,i);
        end else Inc(i);
end;
{_-^-_-^-_-^-_-^-_-^-_-^-_}
var i,j:byte;
    a:Tmatrix;
BEGIN
{sozdat' sluchainuyu matricu}
randomize;
for i:=1 to n do begin
    for j:=1 to m do begin
        a[i,j]:=random(10);
        write(a[i,j]:3);
    end;
    writeln;
end;
writeln;
i:=1; j:=1;
lexMatr(a,j,i,n);
{vyvod na ekran}
for i:=1 to n do begin
    for j:=1 to m do
        write(a[i,j]:3);
    writeln;
end;
 
END.
Добавлено через 3 часа 30 минут
наткнулся на интереснейший вариант решения этой задачи из книги Л.М. Поддубная, В.Ф. Шаньгин Мне нравится Паскаль
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
const   n = 5;
        l = 4;
var     i :integer;
        name :array[1..n,1..l] of char;
procedure Sort;
var     stroka :array[1..l] of char;
        pr :boolean;
        j :integer;
begin
        pr:=true;
        while pr do begin
                pr:=false;
                for j:=1 to N-1 do
                    if name[j]>name[j+1] then
                        begin
                            stroka:=name[j];
                            name[j]:=name[j+1];
                            name[j+1]:=stroka;
                            pr:=true
                        end
        end
end;
BEGIN
        writeln('vvedite stroki matritsy: ');
{        readln;}
        for i:=1 to n do readln(name[i]);
        SORT;
        writeln('uporyadochenno: ');
        for i:=1 to n do writeln(name[i])
end.
Константа n - это число строк, а l - кол-во символов в строке. Можно вводить и слова и цифры, правда только всё из диапазона char, т.е. с большими цифрами не получится, а может и получится... но в любом случае очень любопытно
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2012, 21:24

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

задано число от 0 до 65537. получить из него другое число, чтобы цифры в нем были расположены по возрастанию
Пример 31579 - 13579, то есть отсортировать цифры в числе

Переставить строки матрицы так, чтобы строки стали расположены по убыванию в лексикографическом порядке
Дана матрица А из целых чисел размером NxM. Переставить строки матрицы так, чтобы строки стали...

Переставить элементы так, чтобы они были расположены по возрастанию
3. Дан массив В, состоящий из n элементов. Элементы массива ввести в программе. Переставить...

Переставить строки матрицы так, чтобы суммы элементов строк были расположены в порядке их возрастания
Задать двумерный массив размерами m и n. Обработать массив согласно заданию, вывести на печать...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.