1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Паралельная форма!, Построить паралельную форму на основе матрицы
Люди обьяснтете пожалуста такую ситуацию!!! Нужно в Паскале построить (написать програмку) паралельную форму на основе матрицы, т.е. У нас есть одна матрица 5x7, В етой матрице выполняются операции умножения,сложения,умножение+сложение!!!!! нужно все ети операции занести в паралельную форму (паралельная форма - это табличка 4X8)таким образом что бы в каждой ячейке выполнялась одна операция!!! Помогите пожалуста и подскажите с чего б его начать???? Я прикреплю саму скриншот матрицы 5X7!!! И скриншот самой паралельной формы которую я зделал в ворде.
Нашол в инете одну прогу!!! Но немогу понять какие под нее матрицы надо, с какими елементами?????
program matr; type Matrix = array[1..8,1..8] of integer; Algorithm = array[1..8,1..8] of integer; var A:Matrix; B:Matrix; C:Matrix; M, N, K: integer; H, W: integer; Results:Text; MatrA: Text; MatrB: Text; MatrC: Text; Alg: Algorithm;
procedure ReadMatrix(var Matr:Matrix;i,j,rows,columns:integer; var F: Text); var k,l:integer; begin {Schitat iz faila F elementy matritsy v peremennuju Matr} for k:=i to rows do begin for l:=j to columns do begin Read (F,Matr[k][l]); end; end; end;
procedure PrintMatrix(var Matr:Algorithm;i,j,rows,columns:integer;var F:Text); var k,l:integer; begin {Kazhdyj element matritsy Matr vyvesti na ekran2} for k:=i to rows do begin for l:=j to columns do begin Write (F,Matr[k][l], ' '); end; WriteLn(F);end;end;
procedure InitZeros(var Matr: Matrix; i, j, rows, columns: integer); var k,l:integer; begin {Kazhdomu elementu matritsy Matr prisvoit 0} for k:=i to rows do begin for l:=j to columns do begin Matr[k][l]:=0; end; end; end;
function FindNextNonZero(Var Matr:Matrix; var startx,starty,rows,columns:integer):boolean; var l:integer; begin l:= starty; {Prosmatrivaem vse elementy v massive рока ne najdem ne 0-j} while ((Matr[startx][l] = 0) and (startx <= rows)) do begin while ((Matr[startx][l] = 0) and (l <= columns)) do begin l:=l+ 1; end; if Matr[startx][l] = 0 then begin startx := startx + 1; l:=1; end; end; starty := 1; FindNextNonZero := (Matr[startx] [l]<>0); end;
procedure FindNextEmpty(startx:integer; var x, y: integer); var l:integer; begin l:=1; {Prosmatrivaem vse elementy v massive рока ne najdem pustuju stroku} while (Length(Alg[startx][l]) <> 0) do begin if l=8 then begin startx := startx + 1; l:=1; end else begin l:=l + 1; end; end; x := startx; y:=l; end;
function intToStr(I: Longint): String; { Convert any integer type to a string } var S:string [32]; begin Str(I, S); IntToStr:= S; end;
procedure ParseElement(i, j: integer); var l, v: integer; x_alg, y_alg: integer; begin l:=1; while (I <= K) and ((A[i][l] = 0) or (B[l][j] = 0)) do begin l:=l+1; end; if (A[i][l] <> 0) and (B[l][j] <> 0) then begin FindNextEmpty (1, x_alg, y_alg); Alg[x_alg][y_alg] := 'A' + IntToStr(i) + IntToStr(l) + '*B'+IntToStr(l)+IntToStr(j); H := x_alg; W := y_alg; end; v:=l+1; while (v <= K) and ((A[i][v] = 0) or (B[v][j] = 0)) do begin v:=v+1; end;
if (A[i][v] <> 0) and (B[v][j] <> 0) then begin FindNextEmpty (1, x_alg, y_alg);
i, j : integer; g, f: integer; begin i:=1; j:=1; for g:= 1 to 8 do for f:= 1 to 8 do Alg[g][f]:=' '; while (FindNextNonZero(C, i, j, M, K)) do begin ParseElement(i, j); if j = k then begin j:=i; i:=i+1; end else end; end; begin {Otkryt faily dlia chtenia ishodnyh matrits i dlia zapisi reultatov} Assign(Results, 'results4.txt'); Rewrite(Results); Assign(MatrA, 'A.txt'); Assign(MatrB, 'B.txt'); Assign(MatrC, 'C1.txt'); reset(MatrA); Reset(MatrB); Reset(MatrC); {Razmer matrits} M:=5;N:=6; K:=7; {Schitat matritsy A,B i C} ReadMatrix(A, 1,1, M, N, MatrA); ReadMatrix(B, 1,1, N, K, MatrB); ReadMatrix(C, 1,1, M, K, MatrC); {Opredeliaem algoritm MakeAlg;} {Vyvodim algoritm} WriteLn (Results); WriteLn (Results, 'Algorithm CO:'); PrintMatrix(Alg, 1,1,2, 8, Results);