IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Паскаль. Деление матриц. Немогу запустить программу!
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Мужской

Репутация: -  -1  +


Люди не могу запустить прогу. Пишет "file not open for input".
В программе использывается 2 матрицы А и B которые находятся в 2-ух отдельных файлах. (прикреплены). Должно происходить деление матриц с выделением нулевого блока!
Шаг 1.Вывод матриц А и В. Те что в файле!!!
Шаг 2 Разбиение и собственно вывод блоков матриц А и В после деления:

Что касается того как должны быть поделены матрицы то нужно делить их так что бы выделить максимально большой нулевой блок и матрицу нужно брать которая больше, соответственно ето матрица B. В матрице В я выделил максимально большой нулевой блок(так как показано) в соответствии с тем как поделина мтрица В, матрица А делится соответствующим образом (т.е. что б поделить матрицу А, нужно смотреть на матрицу В и делить ее (матрицу А) с соответствием матрицы В)......потому что в дальнейшем мне нужно будет нахождить результирующую матрицу С которая будет получена в результате перемножения соответствующих блоков А и В.

Шаг 3. Вывод матрицы С полученой в результате перемножения блоков матриц А и В за следующим алшоритмом.
Так как во втором шаге, только для матрицы С.

Код
Program Labor2; uses crt; var
A:text;
B:text;
f:text;
MatrA:array[1..7, 1..7] of integer;
MatrB:array[1..7,1..7] of integer;
TempMatr:array[1..7,1..7] of integer;
A1:array[1..7,1..7] of integer;
A0:array[1..7,1..7] of integer;
A2:array[1..7,1..7] of integer;
A3:array[1..7,1..7] of integer;
B1:array[1..7,1..7] of integer;
BO:array[1..7,1..7] of integer;
B2:array[1..7,1..7] of integer;
B3:array[1..7,1..7] of integer;
C1:array[1..7,1..7] of integer;
C2:array[1..7,1..7] of integer;
C21:array[1..7,1..7] of integer;
C22:array[1..7,1..7] of integer;
C3:array[1..7,1..7] of integer;
C4:array[1..1,1..7] of integer;
i, j , k, x, y, rowa, cola, rowb, colb, sumcl, sumc2, rozbivAX, rozbivAY,
rozbivBX,rozbivBY:integer;
{Процедура чтения матриц А и В из файлов}
procedure ReadAB;
Begin
Assign(f, 'A.txt');
Reset(f);
Assign(f,'B.txt');
Reset(f); {init file}
Readln(A);
Read(A,rowa);
Readln(A);
Read(A,cola);
Readln(A);
Read(A,rozbivAX);
Readln(A);
Read(A,rozbivAY);
Readln(A);
{Chtenye MatrixA iz fila}
For i:=1 to rowa do
Begin
For j:=1 to cola do
Read(A,matrA[i,j]);
Readln(A);
End;
Close(A);
Readln(B);
Read(B,rowb);
Readln(B);
Read(B,colb);
Readln(B);
Read(B,rozbivBX);
Readln(B);
Read(B,rozbivBY);
Readln(B);
Readln(B);
{Chtenye MatrixA iz fila}

For i:=1 to rowb do
Begin
For j:=1 to colb do
Read(B,matrB[i,j]);
Readln(B);
End;
Close(B);
end;
{npoцедура вывода матрицы A}
procedure writeMatrA;
Begin
writeln(f,'A');
writeln(f,'Matrica A budet hfpbita x= f,rozbivAX,f y= f,rozbivAY');
for i:=1 to rowa do
begin
for j:=1 to cola do
write (f,MatrA[i,j]); writeln;
end;
writeln;
writeln;
End;
{процедура вывода матрицы B}
procedure writeMatrB;
Begin writeln(f,'Matrica B');
writeln(f,'Matrica B budet hfpbita x= f,rozbivBX,f y= f,rozbivBY');
for i:=1 to rowb do
begin
for j:=1 to colb do
write (f,MatrB[i,j]);
writeln;
end;
writeln;
writeln;
End;
{процедура разбиения матрицы A}
procedure RozbivMatrixA;
begin
{Блок получения подматрицы A1}
x:=1;  y:=1;
for i:=1 to rozbivAX do
begin
for j:=1 to rozbivAY do
Begin
a1[x,y]:=MatrA[i,j];
inc(y);
End;
inc(x);
end;
{Блок получения подматрицы А0}
x:=1;y:=1;
for i:=1 to rozbivAX do
begin
for j:=rozbivAY+1 to cola  do
Begin
A0[x,y]:=MatrA[i,j];
inc(y);
End;
inc(x);
end;
{Блок получения подматрицы А2}
x:=1; y:=1;
for  i:=rozbivAX+1 to rowa do
begin
for  j:=1 to rozbivAY  do
Begin
A2[x,y]:=MatrA[i,j];
inc(y);
End;
inc(x);
end;
{Блок получения подматрицы А3}
x:=1;  y:=1;
for i:=rozbivAX+1 to rowa do
begin
for j:=rozbivAY+1 to cola do
Begin
A3[x,y]:=MatrA[i,j];
inc(y);
End;
inc(x);
end;
{Блок вывода подматрицы матрицы А}
ClrScr;
Writeln('podmatrici A');
Writeln('Al');
x:=1;  y:=1;
for i:=1 to rozbivAX do
begin
for j:=1 to rozbivAY do
Begin
write (' ',A1[x,y]);
inc(y);
End;
inc(x);
writeln;
end;
writeln;
Writeln('A0');
x:=1;  y:=1;
for i:=1 to rozbivAX do
begin
for j:=rozbivAY+1 to cola do
Begin
write ('',A0[x,y]);
inc(y);
End;
inc(x);
writeln;
end;
writeln;
Writeln('A2');
x:=1;  y:=1;
for i:=rozbivAX+1 to rowa do
begin
for j:=1 to rozbivAY do
Begin
write (' ',A2[x,y]);
inc(y);
End;
inc(x);
writeln;
end;
writeln;
Writeln('A3');
x:=1;  y:=1;
for i:=rozbivAX+1 to rowa do
begin
for j:=rozbivAY+1 to cola do Begin
write ('  ',A3[x,y]);
inc(y);
End; inc(x);
writeln;
end;
end;
{Процедура разбиения матрицы В}
procedure  RozbivMatrixB;
begin
{Блок получения подматрицы В1}
x:=1; y:=1;
for  i:=1 to rozbivBX  do
begin
for  j:=1 to rozbivBY  do
Begin
b1[x,y]:=MatrB[i,j];
inc(y);
End;
inc(x);
end;
{Блок получения подматрицы В0}
x:=1;  y:=1;
for  i:=1   to   rozbivBX  do
begin
for  j:=rozbivBY+1 to colb do
Begin
A0[x,y]:=MatrB[i,j];
inc(y);
End;
inc(x);
end;
{Блок получения подматрицы В2}
x:=1;  y:=1;
for i:=rozbivBX+1 to rowb do
begin
for j:=1 to rozbivBY do
Begin
B2[x,y]:=MatrB[i,j];
inc(y);
End;
inc(x);
end;
{Блок получения подматрицы В3}
x:=1;   y:=1;
for i:=rozbivBX+1 to rowb do
begin
for j:=rozbivBY+1 to colb do
Begin
B3[x,y]:=MatrB[i,j];
inc(y);
End;
inc(x);
end;
{Блок вывода подматриц матрицы В}
ClrScr;
Writeln(' podmatrici B');
Writeln('B1');
x:=1;  y:=1;
for i:=1 to rozbivBX do
begin
for j:=1 to rozbivBY do
Begin
write (' ',B1[x,y]);
inc(y);
End;
inc(x);
writeln;
end;
writeln;
Writeln('B0');
x:=1;  y:=1;
for i:=1 to rozbivBX do
begin
for j:=rozbivBY+1 to colb do
Begin
write (' ',B3[x,y]);
inc(y);
End;
inc(x);
writeln;
end;
writeln;
Writeln('B2');
x:=1;  y:=1;
for i:=rozbivBX+1 to rowb do
begin
for j:=1 to rozbivBY do
Begin
write (' ',B2[x,y]);
inc(y);
End;
inc(x);
writeln;
end;
writeln;
Writeln('B3');
x:=1;  y:=1;
for i:=rozbivBX+1 to rowb do
begin
for j:=rozbivBY+1 to colb do
Begin
write (' ',B3[x,y]);
inc(y);
End;
inc(x);
writeln;
end;
end;
{Блок перемножения подматриц и вывод на экран подматриц матрицы С}
procedure peremnogenie;
begin
sumcl:=0;
{C1}
for i:=1 to rozbivAX do
for j:=1 to rozbivBY do
begin
for k:=1 to rozbivBX do
begin
sumcl:=sumcl+ (A1 [i, k] *B1 [k,j]);
end;
C1[i,j]:=sumcl; sumcl:=0;
end;
{C2}
sumcl:=0;
for i:=1 to rowa-rozbivAX do
for j:=1 to rozbivBY do
begin for k:=1 to rozbivBY do
begin
sumcl :=sumcl+ (A2[i,k] *B1 [k, j] );
end;
C21[i,j]:=sumcl;
sumcl:=0;
end;
sumc2:=0;
for i:=1 to rowa-rozbivAX do
for j:=1 to colb-rozbivBX do
begin
for k:=1 to colb-rozbivBX do
begin
sumc2:=sumc2+(A3[i,k]*B2 [k, j] );
end;
C22 [i,j] :=sumc2;
sumc2:=0;
end;
for i:=1 to rowa-rozbivAX do
for j:=1 to rozbivBY do
C2[i, j]:=C21[i,j]+C22[i,j];
{CO}
for i:=1 to 3 do
for j:=1 to 3 do
C3[i,j]:=0;
{C3} sumcl:=0;
for i:=1 to rowa-rozbivAX do
for j:=1 to rowb-rozbivBY do
begin
for k:=1 to rowb-rozbivBY do
begin
sumcl :=sumcl+ (A3 [i, k] *B3 [k, j] );
end;
C21 [i,j]:=sumcl;
sumcl:=0;
end;
{Вывод матриц C}
Clrscr;
Writeln ('C1');
for i:=1 to rozbivAX do
begin
for j:=1 to rozbivBY do
write (' ',C1[i,j]);
writeln;
end;
writeln;
writeln ('C2');
for i:=1 to rowa-rozbivAX do
begin
for j:=1 to rozbivBY do
write (' ',C2[i,j]);
writeln;
end;
writeln;
Writeln('CO');
for i:=1 to 1 do
begin
for j:=1 to 1 do
write (' ',C3[i,j]);
writeln;
end;
writeln;
Writeln('C3');
for i:=1 to rowa-rozbivAX do
begin
for j:=1 to rowb-rozbivBY+1 do
write (' ',C4[i,j]);
writeln;
end;
writeln;
end;
BEGIN
clrscr;
ReadAB;
writeMatrA;
writeMatrB;
Readln;
RozbivMatrixA;
readln;
RozbivMatrixB;
readln;
peremnogenie;
writeln;
writeln;
readkey;
END.


Прикрепленные файлы
Прикрепленный файл  A.txt ( 258 байт ) Кол-во скачиваний: 335
Прикрепленный файл  B.txt ( 215 байт ) Кол-во скачиваний: 317
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 4:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name