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

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

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

> Паскаль. Деление матриц. Немогу запустить программу!
metamfetamin
сообщение 13.11.2007 22:19
Сообщение #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 байт ) Кол-во скачиваний: 270
Прикрепленный файл  B.txt ( 215 байт ) Кол-во скачиваний: 240
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 9.07.2025 19:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"