powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
7 сообщений из 7, страница 1 из 1
Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
    #36619828
Олька19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста) Нужно Отсортировать столбцы матрицы по неубыванию сумм положительных элементов. Сортировка Шелла с заданной в виде локального константного массива последовательностью приращений.
я написала модуль и тестирующую, но ошибка в указателе. Мне нужен указатель на столбцы, вроде так и делаю, но в конечной матрице переставляются строки, а не столбцы(
Код: plaintext
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.
interface
   type
   T_Int=integer;
   T_Elem=real;
   T_Key=T_Elem;
   PKey=^TKey;
   TIntarr=array [ 1 .. 10 ] of T_Int;
   T_Real=byte;
   T_Log=boolean;
   T_Long=longint;
   T_Arr=array[ 1 .. 1 ] of T_Elem;
   P_Arr=^T_Arr;
   T_Array=array[ 1 .. 1 ] of P_Arr;
   P_Array=^T_Array;
   P_Matr=^C_Matr;
   TElem=      record
               key :T_Elem;
               data: P_Arr;
               end;
    TKey=array[ 1 .. 1 ] of TElem;

   C_Matr=object
           private
            a:P_Array;
            str , st:T_Int;
{****}
function C_Matr.ShellSort;
var  i,j,k,l,m,i1: T_Int;
     h:TIntarr;
     key: PKey;
     sum,w: T_Elem;
     x: TElem;
begin

begin
clrscr;
for i:= 1  to str do
  begin
  writeln;
  for j:= 1  to st do
                 begin
                 w:=a^[i]^[j];
                 write(w: 7 : 4 ,' ');
                 end;

  readln;
  end;
readln;
end;

if (longint(st*sizeof(TElem)) < Maxavail) and (a<>nil) then
    begin
    ShellSort:=true;
    getmem (key, st*sizeof(TElem));
    for j:= 1  to st do
                   begin
                   sum:= 0 ;
                   for i:= 1  to str do
                   if a^[i]^[j]> 0  then sum:=sum+a^[i]^[j];
                   key^[j].key:=sum;
                   key^[j].data:=a^[j];
                   writeln('sum= ',sum,'  key= ',key^[j].key);
                   end;
    for i1:= 1  to st do
    write(key^[i1].key,'  ');
    readln;

{Cама сортировка Шелла}

h[ 1 ]:= 7 ;
h[ 2 ]:= 5 ;
h[ 3 ]:= 3 ;
h[ 4 ]:= 1 ;
for m:= 1  to  4  do
              begin
              k:=h[m];
              for j:=k+ 1  to st do
              begin
              x:=key^[j];
              l:=j-k;
              while (l> 0 ) and (x.key<=key^[l].key) do
                                               begin
                                               key^[l+k]:=key^[l];
                                               l:=l-k;
                                               end;
              key^[l+k]:=x;
              end;
              end;
  for i1:= 1  to st do
  begin
  write(key^[i1].key,'  ');
  end;
  readln;


for j:= 1  to st do
 a^[j]:=key^[j].data;


Freemem (key, st*sizeof(TElem));
end
else
begin
ShellSort:=false;
Failure( 1 );
end;
end;
...
Рейтинг: 0 / 0
Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
    #36620091
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олька19Мне нужен указатель на столбцы, вроде так и делаю, но в конечной матрице переставляются строки, а не столбцы(
Не могу сказать, что я не сплю, но строчка

Код: plaintext
key^[j].data:=a^[j]; 

напрягает, если из общих соображений.
...
Рейтинг: 0 / 0
Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
    #36620456
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо бы исходничек красиво оформить. Ато глаза ломит...

P.S. Олька, вы наверное поэтэсса!

Олька19Отсортировать столбцы матрицы по неубыванию сумм положительных
...
Рейтинг: 0 / 0
Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
    #36621531
Олька19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прям в точку:) Есть такая слабость:))
...
Рейтинг: 0 / 0
Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
    #36622246
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олька19Помогите, пожалуйста) Нужно Отсортировать столбцы матрицы по неубыванию сумм положительных элементов. Сортировка Шелла с заданной в виде локального константного массива последовательностью приращений.
я написала модуль и тестирующую, но ошибка в указателе. Мне нужен указатель на столбцы, вроде так и делаю, но в конечной матрице переставляются строки, а не столбцы(
В вашей программе элементу a ij соответсвует a^[i]^[j], поэтому a^[j] - это адрес строки, а не столбца. То есть, все что Вам нужно - это поменять порядок хранения элементов. Если, например, Вы где-то инициализируете г a^[i]^[j] из обычного массива, то нужно поменять
Код: plaintext
1.
      a^[i]^[j]:=ar[i,j];
на
Код: plaintext
        a^[i]^[j]:=ar[j,i];
И поменять в нужных местах (в приведенном фрагменте я нашел таких три)
Код: plaintext
a^[i]^[j]
на
Код: plaintext
a^[j]^[i]
...
Рейтинг: 0 / 0
Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
    #36622515
Олька19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Я даже знаю, где это нужно в модуле сделать)
...
Рейтинг: 0 / 0
Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
    #36625409
Дадуда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
олечка, обилие крышечек признак ущербности программиста. звездочками играйтесь в C, он для этого больше подходит.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Паскаль, Отсортировать столбцы матрицы по неубыванию сумм положительных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]