![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
metamfetamin |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 55 Пол: Мужской Репутация: ![]() ![]() ![]() |
Люди не могу запустить прогу. Пишет "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. Прикрепленные файлы ![]() ![]() |
![]() ![]() |
![]() |
Текстовая версия | 10.07.2025 2:13 |