Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/27: Рейтинг темы: голосов - 27, средняя оценка - 4.67
2 / 2 / 2
Регистрация: 11.05.2010
Сообщений: 84
1

Сортировка двумерного массива по столбцам

03.11.2011, 00:54. Просмотров 5496. Ответов 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
uses crt;
const
     nmax=100;
type
    arr=array[0..nmax,0..nmax] of integer;
var
   z:arr;
   s,i,j,buf,n,m,p:integer;
begin
     Writeln('ВВод матрицы');
     writeln('Ввод кол-вo строк');
     readln(n);
     writeln('Ввод кол-во стоблцов');
     readln(m);
     for i:=1 to n do
         begin
             for j:=1 to m do
             begin
             Writeln('Ввод ',i,' ',j,'элемента матрицы');
             readln(z[i,j]);
             end;
             end; for j:=1 to m do
             begin
                 for i:=1 to n do
                 if z[i,j]>z[i+1,j] then
                 begin
                buf:=z[i,j];
               z[i,j]:=z[i+1,j];
               z[i+1,j]:=buf;
                   end; end;
          for i:=1 to n do
         for j:=1 to m do
         begin
         write(z[i,j]:4);
         if j=m then writeln();
         end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2011, 00:54
Ответы с готовыми решениями:

Сортировка двумерного массива по строкам и по столбцам (методом вставки, обмена и выбора)
Завтра зачёт по информатике я не знаю как сделать 3 программы помогите, вот условия: 1: это лаба...

Подсчет суммы по столбцам двумерного массива
задача: сформировать линейный массив из N эл-тов на основе квадратной матрицы NxN путем подсчета...

Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам.
Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам.

Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам.
помогите пожалуйста!!!... дана матрица вещественных чисел. упорядочить ее строки по неубыванию...

2
26 / 26 / 10
Регистрация: 30.10.2011
Сообщений: 68
03.11.2011, 01:12 2
Так. Ну, во-первых для удобства чтения хорошо бы в 23-й строчке разделить "end;" и "for...", поскольку первый закрывает предыдущий блок программы (блок ввода данных). И как следует показать это табуляцией.

Во-вторых во втором прогоне по столбцам, Вы используете очень странный метод сортировки (который, собственно, и не работает). Основной ошибкой там является тот факт, что i у Вас принимает значения от 1 до n, а внутри используется в качестве индекса как i и как i+1. В таком случае, если у Вас во входных данных n окажется равным 100, то программа попросту вылетит, поскольку произойдёт обращение к элементу в 101-й строке, которого попросту не существует. А если n будет меньше, то обращение произойдёт к элементу, который Вы с клавиатуры в процессе программы не вводили. И если он окажется меньше, чем предыдущий (n-ый), то в матрице у Вас появится каша, которая будет зависеть от случайных параметров, но никак не от того, что было введено.

Я бы советовал найти какой-нибудь метод сортировки одномерного массива и написать следующее:
Pascal
1
2
3
for j:=1 to m do begin
 {тут дожен быть код сортировки одномерного массива a[i], в котором все a[i] нужно заменить на a[i,j]}
end;
Если совсем непонятно - напишите что именно. Объясню и набросаю пример.
0
2 / 2 / 2
Регистрация: 11.05.2010
Сообщений: 84
07.11.2011, 19:57  [ТС] 3
получилось, не получается вот что. По заданию нужно отсортировать эл матрицы по неубыванию, а сами столбцы по возростанию произведения четных элементов столбцов.вот у меня чего то столбцы не сортирует,если i делится без остатка - я произведение записываю в I,0 ячейку, сравниваю и меня местами, но не выходит....Где ошибся?
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
68
69
uses crt;
const
     nmax=100;
type
    arr=array[0..nmax,0..nmax] of integer;
var
   z:arr;
   s,i,j,buf,n,m,p,k:integer;
begin
     Writeln('ВВод матрицы');
     writeln('Ввод кол-вo строк');
     readln(n);
     writeln('Ввод кол-во стоблцов');
     readln(m);
     for i:=1 to n do
         begin
             for j:=1 to m do
             begin
             Writeln('Ввод ',i,' ',j,'элемента матрицы');
             readln(z[i,j]);
             end;
             end;
     {*************************************************СОРТИРОВКА элементов СТОЛБЦОВ}
            for j:=1 to m do
   begin
 
      for k:=1 to n do
      for i := n downto k+1 do
         if z[i-1,j]>z[i,j] then
         begin
            buf:=z[i,j];
            z[i,j]:=z[i-1,j];
            z[i-1,j]:=buf;
         end;
      end;
   {************************************************** /CОРТИРОВКА  СТОЛБЦОВ}
         for j:=1 to m do
              begin
         s:=1;
         for i:=1 to n do
         if i mod 2 = 0 then
             s:=s *( z[i,j]);
             z[i,0]:=s;
             s:=1;
              end;
           for p:=1 to m do
           for i:=1 to n-1 do
               if z[i,0]>z[i+1,0] then
                  begin
               buf:=z[i,0];
               z[i,0]:=z[i+1,0];
               z[i+1,0]:=buf;
                  for j:=1 to m do
                   begin
                buf:=z[i,j];
                z[i,j]:=z[i,j+1];
                z[i,j+1]:=buf;
                   end;
                  end;
         for i:=1 to n do
         for j:=1 to m do
         begin
         write(z[i,j]:4);
         if j=m then writeln();
         
         end;
 
 
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2011, 19:57

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

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

сумма элементов двумерного массива по столбцам
1. Преобразовать массив в два таким образом, чтобы в одном хранились положительные элементы, а во...

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

Вычислть сумму элементов двумерного массива по столбцам
Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам


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

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

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