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

Произвести сортировку элементов квадратной матрицы в соответствии с заданной схемой

22.12.2009, 23:12. Показов 1548. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите пожалуйста с задачкой
условие: произвести сортировку элементов квадратной матрицы в соответствии с заданной схемой упорядочивания(код ниже), порядком сортировки (по неубыванию) и методом упорядочивания (выборкой).
запрещается вводить дополнительные массивы, вся сортировка проходит в исходном двумерном массиве
схему упорядочивания нужно представить в виде процедуры.

проблема у меня в совмещении всех трёх частей сортировки.

вот схема упорядочивания:
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
uses crt;
var
n,x,y: integer;
begin
 clrscr;
   writeln('введите n');
     readln(n);        {считывается размер массива}
       writeln('введите координаты:(строка,столбец)');
         readln(x,y);      {считывается строка, затем столбец}
   if (x<0) or (y<0) or (x>n) or (y>n) then  {ограничение на входные данные }
     begin
       writeln('неверные данные');
       readln;
       exit;
     end;
 
 if (x=n) and (y=n) and ((x<>1)and(y<>1)) then  
    y:=y-1;  
 
 if (x=1) and (y=1) then
   begin
   writeln('нет следующего, окончание анализа');readln;exit; 
   end;
 
 if (n mod 2=0) then    
 
   begin   if ((x=n)or(x=1)) and (y mod 2=0) and (x<>y) then
      y:= y-1
      else  if ((x+y)mod 2=0) and ((x<>n)or(y<>n)) and((x-y)<=0) then
       begin
           x:=x+1; 
           y:=y-1; 
       end
      else  if ((y=n)or(y=1)) and (x mod 2=1) then
      x:=x-1
      else  if ((x+y)mod 2=1)  then
      begin
         x:=x-1;
         y:=y+1;
      end;
 
   end
 
  else                      
 
   begin 
        if ((x+y) mod 2=1) and (x<>1) and (y<>n) then
      begin
         x:=x-1;
         y:=y+1;
      end
      else  if ((y=1)and(x mod 2=1)) or ((y=n)and(x mod 2=0)) then
      x:=x-1
      else  if ((x+y)mod 2=0) and (x<>n) and (y<>1) then
       begin 
          x:=x+1;
          y:=y-1;
       end 
      else if (((x=n)and(y mod 2=1)) or ((x=1)and(y mod 2=0))) and  (y<>n) then y:=y-1;
   end;
 
writeln(‘next=,x,’ ‘,y);
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2009, 23:12
Ответы с готовыми решениями:

Произвести сортировку элементов квадратной матрицы в соответствии с заданной схемой
Произвести сортировку элементов квадратной матрицы в соответствии с заданной схемой Порядок...

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

Произвести сортировку элементов в каждом четном столбце матрицы Х
Числовые элементы матрицы Х(10Х10) записаны последовательно в текстовом файле Input.txt и...

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

4
0 / 0 / 0
Регистрация: 22.10.2009
Сообщений: 5
27.12.2009, 21:30  [ТС] 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
uses crt;
var a:array[1..50,1..50] of integer;
    i,n,j,l,m,f,beg,en,k,k1,q,x,matrixkol,matrixstr,matrixkolnext,matrixstrnext:integer;
procedure Next(matrixstr, matrixkol: integer;
var matrixstrnext, matrixkolnext:integer);
begin
 if (matrixstr=n) and (matrixkol=n) and ((matrixstr<>1)and(matrixkol<>1)) then
   matrixkolnext:=matrixkol-1; {*Ё¦*Ё© Їа*ўл© гЈ®« ¬*ваЁжл}
 
 
 
 if (n mod 2=0) then    {ЇаЁ зҐв*®¬ а*§¬ҐаҐ ¬*ваЁжл}
 
   begin
 
     if ((matrixstr=n)or(matrixstr=1)) and (matrixkol mod 2=0) and (matrixstr<>matrixkol) then
      matrixkolnext:=matrixkol-1
      else
 
     if ((matrixstr+matrixkol)mod 2=0) and ((matrixstr<>n)or(matrixkol<>n)) and((matrixstr-matrixkol)<=0) then
      begin
        matrixstrnext:=matrixstr+1;
        matrixkolnext:=matrixkol-1;
      end
     else
 
     if ((matrixkol=n)or(matrixkol=1)) and (matrixstr mod 2=1) then
      matrixstrnext:=matrixstr-1
      else
 
     if ((matrixstr+matrixkol)mod 2=1)  then
      begin
        matrixstrnext:=matrixstr-1;
        matrixkolnext:=matrixkol+1;
      end;
 
   end
 
  else
 
   begin
 
     if ((matrixstr+matrixkol) mod 2=1) and (matrixstr<>1) and (matrixkol<>n) then
      begin
        matrixstrnext:=matrixstr-1;
        matrixkolnext:=matrixkol+1;
      end
     else
 
     if ((matrixkol=1)and(matrixstr mod 2=1)) or ((matrixkol=n)and(matrixstr mod 2=0)) then
      matrixstrnext:=matrixstr-1
      else
 
     if ((matrixstr+matrixkol)mod 2=0) and (matrixstr<>n) and (matrixkol<>1) then
      begin
       matrixstrnext:=matrixstr+1;
       matrixkolnext:=matrixkol-1;
      end
      else
 
     if (((matrixstr=n)and(matrixkol mod 2=1)) or ((matrixstr=1)and(matrixkol mod 2=0))) and  (matrixkol<>n) then
      matrixkolnext:=matrixkol-1;
 
   end;
 
 
 
   begin
   clrscr;
   randomize;
   writeln('input size');
   readln(n);
  while (n<2) or (n>50) do
    begin
      writeln('wrong size. try again');
      readln(n);
    end;
    writeln('input first and last number');
    readln(beg,en);
      while (en<=beg) do
       begin
       writeln('error. try again');
       readln(beg,en);
       end;
 for i:=1 to n do
 for j:=1 to n do
       a[i,j]:=random(en-beg+1)+beg;
    for i:=1 to n do
    for j:=1 to n do
       begin
        writeln(a[i,j]:3);
        writeln;
       end;
   matrixstr:=n;
   matrixkol:=n;
  for q:=n*n downto 1 do
    begin
     for k:=n downto 1 do
       for k1:=n downto 1 do
         begin
           if (matrixstrnext<>1) or (matrixkolnext<>1) then
             begin
              next(matrixstr,matrixkol,matrixstrnext,matrixkolnext); { сортировка по схеме}
              for l:=1 to n-1 do
               begin
                 f:=i;
                  for m:=i+1 to n do               {   сортировка выбором
                  if a[m]<a[f] then
                   f:=m;
                   x:=a[i];
                   a[i]:=a[f];
                   a[f]:=x;                                         }
               end;
            end;
        end;
    end;
end.
Добавлено через 7 часов 15 минут
ап
очень нужна эта программа
помогите пожалуйста)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
27.12.2009, 21:54 3
Цитата Сообщение от matro_Oskin Посмотреть сообщение
вот схема упорядочивания:
И как ее понять? Может хоть покажете саму схему?

Добавлено через 4 минуты
И в чем суть программы? Выводит номер строки и столбца наоборот и все, а где сортировка?
0
0 / 0 / 0
Регистрация: 22.10.2009
Сообщений: 5
27.12.2009, 21:55  [ТС] 4
вот
Изображения
 
0
0 / 0 / 0
Регистрация: 22.10.2009
Сообщений: 5
27.12.2009, 22:01  [ТС] 5
матрица заполняется числами с random'а в заданном диапазоне, потом сама сортировка. в итоге матрица должна быть отсортирована выбором и по этой схеме

Добавлено через 1 минуту
вот с самой сортировкой то я и запутался
с переменными в ней
0
27.12.2009, 22:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2009, 22:01
Помогаю со студенческими работами здесь

Заполнение матрицы в соответствии со схемой
Дано натуральное N (1&lt;=N&lt;=10). Заполнить матрицу порядка NxN целыми числами 1, 2, 3, …, N в...

Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы
Препод задал такую задачу, но так как я не силен в C#, то у меня есть решение на Паскале, может...

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

Выполнить сортировку элементов в каждом столбце заданной матрицы
Задана матрица целых чисел . Выполнить сортировку элементов в каждом столбце заданной матрицы.


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

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