Buscar

Matriz não quadrada - mostrando também as somas das linhas e colunas

Código

{ esse algoritmo realiza a multiplicação de duas matrizaes podendo elas erem quadradas ou não, e depois mostra o resultado da matriz como outra matriz
e também mostra a somas das linhas e das colunas
}


PROGRAM MultipM;
VAR matrizA:ARRAY[1..50,1..50] OF REAL;
    matrizB:ARRAY[1..50,1..50] OF REAL;
    matrizR:ARRAY[1..50,1..50] OF REAL;  
    matrizRsoma:ARRAY[1..50,1..50] OF REAL;    
    n,n1, n2, n3,i,j,k, linha, COLUNA, VALOR:INTEGER;
   
    SOMA_COLUNA: ARRAY[1..80] OF REAL;
    SOMA_LINHA: ARRAY[1..80] OF REAL;
   
    COLUNA_1, LINHA_1: INTEGER;

BEGIN
     WRITELN('Programa para calcular o resultado da multiplicação de 2 matrizes');
     WRITE('Qual a linha da matrize A ? ');
     READLN(n);
     WRITE('Qual a coluna das matrizes A ? ');
     READLN(n1);
     WRITE('Qual a linha das matrizes B ? ');
     READLN(n2);
     WRITE('Qual a coluna das matrizes B ? ');
     READLN(n3);
     WRITELN('Escreva os elementos da matriz A: ');
     
      WHILE (N<>N3) AND (N1<>N2) DO
        BEGIN
                 WRITELN('OS NUMEROS DE COLUNAS DE UMA MATRIZ TEM QUE SER IGUAL AO DE OUTRA MATRIZ');
                 
                       WRITELN('Programa para calcular o resultado da multiplicação de 2 matrizes');
                 WRITE('Qual a linha da matrize A ? ');
                          READLN(n);
                       WRITE('Qual a coluna das matrizes A ? ');
                       READLN(n1);
                    WRITE('Qual a linha das matrizes B ? ');
                       READLN(n2);
                    WRITE('Qual a coluna das matrizes B ? ');
                       READLN(n3);
                       WRITELN('Escreva os elementos da matriz A: ');                                 
        END;

     
     FOR i:=1 TO n DO
     BEGIN
          FOR j:=1 TO n1 DO
          BEGIN
               WRITE('a',i,j,': ');
               READLN(matrizA[i,j]);
          END;
     END;
     
     
     
     WRITELN('Escreva os elementos da matriz B: ');
     FOR i:=1 TO n2 DO
     BEGIN
          FOR j:=1 TO n3 DO
          BEGIN
               WRITE('b',i,j,': ');
               READLN(matrizB[i,j]);
          END;
     END;
     { Multiplica‡Æo das matrizes A e B }
     
         IF N < N2 THEN
           BEGIN
              LINHA:= N;
           END
         ELSE
              BEGIN
              LINHA:= N2;             
                 END;  
                 
                 
                 
         IF N1 < N3 THEN
           BEGIN
              COLUNA:= N1;
           END
         ELSE
              BEGIN
              COLUNA:= N3;           
                 END;            
     
     
     VALOR := COLUNA*LINHA;
     FOR i:=1 TO LINHA DO
     BEGIN
          FOR j:=1 TO COLUNA DO
          BEGIN
               matrizR[i,j]:=0;
               FOR k:=1 TO VALOR DO
               matrizR[i,j]:=matrizR[i,j]+matrizA[i,k]*matrizB[k,j];
           
          END;
     END;                                

     FOR i:=1 TO LINHA DO
     BEGIN
          writeln('');
          FOR j:=1 TO COLUNA DO
            BEGIN
                      matrizRsoma[i,j]:=matrizR[i,j]+matrizR[i,j];       
                   
            END;
     END;

         
     FOR i:=1 TO LINHA DO
     BEGIN
          FOR j:=1 TO COLUNA DO
            BEGIN
                            matrizRsoma[i,j]:=matrizR[i,j]+matrizR[i,j];                                                 
                       
                                                            
                                         SOMA_LINHA[i]:=SOMA_LINHA[i]+matrizRsoma[i,J]/2;
                                   
                                         SOMA_COLUNA[j]:=SOMA_COLUNA[j]+matrizRsoma[I,j]/2;                                                    
            END;                    
                     
           
     END;





     WRITELN('A matriz resultado da multiplição das matrizes A e B ‚ :');
     FOR i:=1 TO LINHA DO
     BEGIN
          writeln('');
          FOR j:=1 TO COLUNA DO
                WRITE('     ',i, j, '     ',matrizR[i,j] :2:2);
          WRITELN;
     END;
          writeln('');
                WRITE('Soma das Linha e Colunas é:');              
          writeln('');         
         
     FOR i:=1 TO LINHA DO
     BEGIN
          WRITELN('');    
          WRITELN('Linha',i,'  ', SOMA_LINHA[i] :2:2);
     END;    
     
     FOR i:=1 TO COLUNA DO
     BEGIN
          writeLn('');
        WRITELN( 'Coluna',i,'  ', SOMA_COLUNA[i] :2:2);         
     END;          
     
END.

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 12/06/08
Por: Cesar Oliveira
Visualizada: 9018 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009