powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Turbo Pascal - Композиция Двух Двумерных Массивов размером 100х100
4 сообщений из 4, страница 1 из 1
Turbo Pascal - Композиция Двух Двумерных Массивов размером 100х100
    #37517614
Доброго времени суток всем!
Дано: две квадратные матрицы (два двумерных массива) R и S. Требуется: сравнить первую строку массива R с первым столбцом массива S и выбрать из них минимумы. Затем сравнить первую строку массива R со вторым столбцом массива S и выбрать из них минимумы и т.д. сравнивать первую строку массива R со всеми столбцами массива S и выбирать минимумы. А потом сравнивать уже вторую строку массива R со всеми столбцами массива S и выбирать минимумы. Т.е. каждая строка массива R поочерёдно сравнивается со всеми столбцами массива S, выбираются минимумы. Потом из полученных минимумов выбрирается максимум - и он будет первым элементом нового массива RoS, который является композицией.
Пример:
массив R
1 0,8 0,7 0,5
0,8 1 0,9 0,6
0,7 0,9 1 0,8
0,5 0,6 0,8 1
массив S
1 0,9 0,7 0,3
0,9 1 0,3 0,2
0,7 0,3 1 0,4
0,5 0,2 0,1 0
1я строка с 1ым столбцом:
(1;1) (0,8;0,9) (0,7;0,7) (0,3;0,5)=1;0,8;0,7;0,3 - минимумы; 1 - максимум из минимумов
1я строка со 2ым столбцом:
(1;0,9) (0,8;1) (0,7;0,3) (0,5;0,2)=0,9;0,8;0,3;0,2 - минимумы; 0,9 - максимум из минимумов
1я строка с 3им столбцом:
(1;0,7) (0,8;0,3) (0,7;1) (0,5;0,1)=0,7;0,3;0,7;0,1 - минимумы; 0,7 - максимум из минимумов
1я строка с 4ым столбцом:
(1;0,3) (0,8;0,2) (0,7;0,4) (0,5;0)= 0,3;0,2;0,4;0 минимумы; 0,4 - максимум из минимумов
Т.о., 1ая строка искомого массива (композиции) будет выглядеть так:
RoS=1 0,9 0,7 0,4
Далее мы сравниваем 2ую строку массива R поочерёдно со всеми столбцами массива S и получаем 2ую строку искомого массива RoS и т.д....
Ну и самое интересное)))
Текст моей программы:
Код: 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.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
 program  laba_6;
 uses  crt;
 const  n= 4 ;
 const  m= 4 ;
 var 
S,R,RoS:  array [ 1 ..n, 1 ..m]  of  real;
K1,K2,K3,K4:  array [ 1 ..n, 1 ..m]  of  real;  {vspomogatel`nye massivy dlya ras4etov} 
i,j: integer;
 begin 
clrscr;

 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
writeln('Vvedite massiv R=> ');
readln(R[i,j]);
 end ;
 end ;

 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
writeln('Vvedite massiv S=> ');
readln(S[i,j]);
 end ;
 end ;

writeln('Isxodnyi massiv R=> ');
 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
write(' ',R[i,j]: 4 : 1 );
 end ;
writeln;
 end ;

writeln('Isxodnyi massiv S=> ');
 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
write(' ',S[i,j]: 4 : 1 );
 end ;
writeln;
 end ;

writeln('1-ya stroka massiva R sravnivaetsya so vsemi stolbcami massiva S');
 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
 if  R[ 1 ,j]<=S[j,i]  then 
K1[i,j]:=R[ 1 ,j]
 else 
K1[i,j]:=S[j,i];
write(' ',K1[i,j]: 4 : 1 );
 end ;
writeln;
 end ;

writeln('2-ya stroka massiva R sravnivaetsya so vsemi stolbcami massiva S');
 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
 if  R[ 2 ,j]<=S[j,i]  then 
K2[i,j]:=R[ 2 ,j]
 else 
K2[i,j]:=S[j,i];
write(' ',K2[i,j]: 4 : 1 );
 end ;
writeln;
 end ;

writeln('3-ya stroka massiva R sravnivaetsya so vsemi stolbcami massiva S');
 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
 if  R[ 3 ,j]<=S[j,i]  then 
K3[i,j]:=R[ 3 ,j]
 else 
K3[i,j]:=S[j,i];
write(' ',K3[i,j]: 4 : 1 );
 end ;
writeln;
 end ;

writeln('4-ya stroka massiva R sravnivaetsya so vsemi stolbcami massiva S');
 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
 if  R[ 4 ,j]<=S[j,i]  then 
K4[i,j]:=R[ 4 ,j]
 else 
K4[i,j]:=S[j,i];
write(' ',K4[i,j]: 4 : 1 );
 end ;
writeln;
 end ;

writeln('RoS=>');

 for  i:= 1   to  n  do   begin 
 for  j:= 1   to  m  do   begin 
 if  K1[ 1 ,j]>=K1[ 1 , 1 ]  then 
RoS[ 1 , 1 ]:=K1[ 1 ,j];

 if  K1[ 2 ,j]>=K1[ 2 , 1 ]  then 
RoS[ 1 , 2 ]:=K1[ 2 ,j];

 if  K1[ 3 ,j]>=K1[ 3 , 1 ]  then 
RoS[ 1 , 3 ]:=K1[ 3 ,j];

 if  K1[ 4 ,j]>=K1[ 4 , 1 ]  then 
RoS[ 1 , 4 ]:=K1[ 4 ,j];

 if  K2[ 1 ,j]>K2[ 1 , 1 ]  then 
RoS[ 2 , 1 ]:=K2[ 1 ,j];

 if  K2[ 2 ,j]>K2[ 2 , 1 ]  then 
RoS[ 2 , 2 ]:=K2[ 2 ,j];

 if  K2[ 3 ,j]>K2[ 3 , 1 ]  then 
RoS[ 2 , 3 ]:=K2[ 3 ,j];

 if  K2[ 4 ,j]>K2[ 4 , 1 ]  then 
RoS[ 2 , 4 ]:=K2[ 4 ,j];

 if  K3[ 1 ,j]>K3[ 1 , 1 ]  then 
RoS[ 3 , 1 ]:=K3[ 1 ,j];

 if  K3[ 2 ,j]>K3[ 2 , 1 ]  then 
RoS[ 3 , 2 ]:=K3[ 2 ,j];

 if  K3[ 3 ,j]>K3[ 3 , 1 ]  then 
RoS[ 3 , 3 ]:=K3[ 3 ,j];

 if  K3[ 4 ,j]>K3[ 4 , 1 ]  then 
RoS[ 3 , 4 ]:=K3[ 4 ,j];

 if  K4[ 1 ,j]>K4[ 1 , 1 ]  then 
RoS[ 4 , 1 ]:=K4[ 1 ,j];

 if  K4[ 2 ,j]>K4[ 2 , 1 ]  then 
RoS[ 4 , 2 ]:=K4[ 2 ,j];

 if  K4[ 3 ,j]>K4[ 3 , 1 ]  then 
RoS[ 4 , 3 ]:=K4[ 3 ,j];

 if  K4[ 4 ,j]>K4[ 4 , 1 ]  then 
RoS[ 4 , 4 ]:=K4[ 4 ,j];
write(' ', RoS[i,j]: 4 : 1 );
 end ;
writeln;
 end ;
readln;
 end .
Т.е. хорошо конечно что я сравниваю 1ю строку, 2ю строку и т.д., прописывая номер строки прямо в коде. Но у меня массивы 4х4. А если они будут 100х100? Не прописывать же R[1,j]..R[100,j]! Короче, код у меня левый и "не универсальный" как скажет препод. Подскажите, пожалуйста, как сделать этот код подходящим для массивов любых размерностей от 2х2 до бесконечность х бесконечность? Заранее спасибо всем откликнувшимся!
...
Рейтинг: 0 / 0
Turbo Pascal - Композиция Двух Двумерных Массивов размером 100х100
    #37518071
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вы и извращенец...
Смотрим...
Код: 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.
 program  laba_6;
 uses  crt;
 const  n= 4 ;
 type 
   MyArray =  array [ 1 ..n, 1 ..n]  of  real;
 var 
   S,R,RoS: MyArray;
   i,j,k: integer;

 procedure  InputArray( var  A: MyArray; Name:  String );
 var 
   i,j: integer;
 begin 
writeln;
writeln('Vvedite massiv '+Name+' => ');
 for  i:= 1   to  n  do   begin 
    write('Stroka ',i: 4 ,' => ');
     for  j:= 1   to  n  do   begin 
        readln(A[i,j]);
     end ;
 end ;
 end ;

 procedure  PrintArray(A: MyArray; Name:  string );
 var 
   i,j: integer;
 begin 
writeln;
writeln('Massiv '+name+' => ');
 for  i:= 1   to  n  do   begin 
     for  j:= 1   to  n  do   begin 
        write(' ',A[i,j]: 4 : 1 );
     end ;
    writeln;
 end ;
 end ;

 function  Min(a,b:real):real;
 begin 
      if  a<b  then  Min:=a  else  Min:=b;
 end ;

 function  Max(a,b:real):real;
 begin 
      if  a>b  then  Max:=a  else  Max:=b;
 end ;

 begin 
clrscr;

InputArray(R, 'R');
InputArray(S, 'S');

PrintArray(R, 'R');
PrintArray(S, 'S');

 for  i:= 1   to  n  do   begin 
     for  j:= 1   to  n  do   begin 
        RoS[i,j]:= 0 ;
         for  k:= 1   to  n  do   begin 
            RoS[i,j]:=max(RoS[i,j],min(R[i,k],S[k,j]));
         end ;
     end ;
 end ;

PrintArray(RoS, 'RoS');

write('Pause...'); readln;

 end .
...
Рейтинг: 0 / 0
Turbo Pascal - Композиция Двух Двумерных Массивов размером 100х100
    #37518285
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, конечно, за обращение в мужском роде...
...
Рейтинг: 0 / 0
Turbo Pascal - Композиция Двух Двумерных Массивов размером 100х100
    #37518508
AndreTM, спасибо!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Turbo Pascal - Композиция Двух Двумерных Массивов размером 100х100
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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