Matriz M x N com C++
Autor: Prof. Julio C. Cabral | Publicado: 2011-10-13T22:05:00-03:00

O objetivo dessa postagem é gerar uma matriz de M linhas por N colunas usando o C++.

Primeiro vamos criar uma função para gerar a matriz com numeros aleatórios:
 void Inicializa(int Matriz[][maxTam], int lin, int col)  
 {  
   int i, j;  
   Matriz[lin][col];  
   for(i = 0; i &lt; lin; i++)  
       for(j = 0 ; j &lt; col; j++)  
           Matriz[i][j] = rand() % 10 - 1;  
 }  


Em seguida, uma função para mostrar a matriz gerada:

void MostraMatriz(int matriz[][maxTam], int lin, int col)
{
    for(int i = 0; i &lt; lin; i++)
    {
       for(int j = 0 ; j &lt; col; j++)
       cout&lt;&lt;setw(7)&lt;&lt;matriz[i][j]&lt;&lt;"";
        cout&lt;&lt;endl;
   }
}


Com a matriz criada vamos realizar as seguintes atividades:

1 - somar todos os termos da matriz;
2 - multiplicar todos os termos da matriz pela soma dos termos dessa matriz;
3 - mostrar o maior valor, em módulo, da matriz;
4 - mostrar quantos números ímpares e pares existem na matriz.

Para cada item acima vamos ter uma função correspondente para tal finalidade:

Para a soma dos termos...
 int SomaMatriz(int matriz[][maxTam], int lin, int col)  
 {  
   int Soma = 0;  
   for( int i = 0; i &lt; lin; i++ )  
    for( int j = 0; j &lt; col; j++ )  
      Soma += matriz[i][j];  
   return Soma;  
 }  


Multiplicação dos termos...
 void Multiplica( int matriz[][maxTam], int lin, int col, int Soma )  
 {  
   for(int i = 0; i &lt; lin; i++)  
    for(int j = 0; j &lt; col; j++)  
     matriz[i][j] = matriz[i][j] * Soma;  
 }  


Mostrar maior valor...
 int MaiorValor( int matriz[][maxTam], int lin, int col )  
 {  
   int valor = 0;  
   for( int i = 0; i &lt; lin; i++ )  
    for( int j = 0; j &lt; col; j ++ )  
     if(abs(matriz[i][j]) &gt; valor )  
      valor = matriz[i][j];  
   return valor;  
 }  


Mostrar pares e ímpares...
 int ValorParImpar( int matriz[][maxTam], int lin, int col, bool tipo )  
 {  
   int par = 0, impar = 0;  
   for(int i = 0; i &lt; lin; i++)  
    for(int j = 0; j &lt; col; j++)  
     if( abs(matriz[i][j]) % 2 == 0 )  
      par += 1;  
      else if( abs(matriz[i][j]) % 2 == 1 )  
       impar += 1;  
   if( tipo == true )  
    return par;  
    else  
     return impar;  
 }  


Depois de definidas as funções, vamos para o código completo...
 #include &lt;vcl.h&gt;  
 #include &lt;iostream.h&gt;  
 #include &lt;conio.h&gt;  
 #include &lt;iomanip.h&gt;  
 #include &lt;stdlib.h&gt;  
 #include &lt;math.h&gt;  
 //---------------------------------------------------------------------------  
 const maxTam = 10;  
 void Inicializa(int Matriz[][maxTam], int lin, int col)  
 {  
   int i, j;  
   Matriz[lin][col];  
   for(i = 0; i &lt; lin; i++)  
       for(j = 0 ; j &lt; col; j++)  
           Matriz[i][j] = rand() % 10 - 1;  
 }  
 //------------------------------------------------------------------------------  
 void MostraMatriz(int matriz[][maxTam], int lin, int col)  
 {  
   for(int i = 0; i &lt; lin; i++)  
   {  
     for(int j = 0 ; j &lt; col; j++)  
        cout&lt;&lt;setw(7)&lt;&lt;matriz[i][j]&lt;&lt;"";  
           cout&lt;&lt;endl;  
   }  
 }  
 //------------------------------------------------------------------------------  
 int SomaMatriz(int matriz[][maxTam], int lin, int col)  
 {  
   int Soma = 0;  
   for( int i = 0; i &lt; lin; i++ )  
    for( int j = 0; j &lt; col; j++ )  
      Soma += matriz[i][j];  
   return Soma;  
 }  
 //------------------------------------------------------------------------------  
 void Multiplica( int matriz[][maxTam], int lin, int col, int Soma )  
 {  
   for(int i = 0; i &lt; lin; i++)  
    for(int j = 0; j &lt; col; j++)  
     matriz[i][j] = matriz[i][j] * Soma;  
 }  
 //------------------------------------------------------------------------------  
 int MaiorValor( int matriz[][maxTam], int lin, int col )  
 {  
   int valor = 0;  
   for( int i = 0; i &lt; lin; i++ )  
    for( int j = 0; j &lt; col; j ++ )  
     if(abs(matriz[i][j]) &gt; valor )  
      valor = matriz[i][j];  
   return valor;  
 }  
 //------------------------------------------------------------------------------  
 int ValorParImpar( int matriz[][maxTam], int lin, int col, bool tipo )  
 {  
   int par = 0, impar = 0;  
   for(int i = 0; i &lt; lin; i++)  
    for(int j = 0; j &lt; col; j++)  
     if( abs(matriz[i][j]) % 2 == 0 )  
      par += 1;  
      else if( abs(matriz[i][j]) % 2 == 1 )  
       impar += 1;  
   if( tipo == true )  
    return par;  
    else  
     return impar;  
 }  
 //------------------------------------------------------------------------------  
 void main()  
 {  
   int matriz[maxTam][maxTam], lin, col, Soma = 0;  
   char ch;  
  while( ch != 'n' &amp;&amp; ch != 'N' )  
  {  
   cout&lt;&lt;"O valor da linhas e das colunas deve ser menor ou igual a 10!"&lt;&lt;endl;  
   cout&lt;&lt;"\nDigite o numero de linhas: "; cin&gt;&gt; lin;  
   while( lin &gt; 10 )  
   {  
    cout&lt;&lt;"Erro de tamanho!";  
    cout&lt;&lt;"\nDigite o numero de linhas: "; cin&gt;&gt; lin;  
   }  
   cout&lt;&lt;"\nDigite o numero de colunas: ";cin&gt;&gt; col;  
   while( col &gt; 10 )  
   {  
       cout&lt;&lt;"Erro de tamanho!";  
       cout&lt;&lt;"\nDigite o numero de colunas: "; cin&gt;&gt; col;  
      }  
      clrscr();  
      Inicializa(matriz,lin,col);  
      cout&lt;&lt;"A Matriz&lt;"&lt;&lt;lin&lt;&lt;","&lt;&lt;col&lt;&lt;"&gt; eh: "&lt;&lt;endl;  
      MostraMatriz(matriz,lin,col);  
     cout&lt;&lt;"\n\n\n";  
      Soma = SomaMatriz(matriz,lin,col);  
      cout&lt;&lt;"A soma da Matriz&lt;"&lt;&lt;lin&lt;&lt;","&lt;&lt;col&lt;&lt;"&gt; eh: "&lt;&lt;Soma&lt;&lt;endl;  
      cout&lt;&lt;"\n\n\n";  
      cout&lt;&lt;"A matriz&lt;"&lt;&lt;lin&lt;&lt;","&lt;&lt;col&lt;&lt;"&gt; multiplicada por Soma: "&lt;&lt;endl;  
      Multiplica(matriz,lin,col,Soma);  
      MostraMatriz(matriz,lin,col);  
      cout&lt;&lt;"\n\n\n";  
      cout&lt;&lt;"O maior valor da matriz&lt;"&lt;&lt;lin&lt;&lt;","&lt;&lt;col&lt;&lt;"&gt; eh: "&lt;&lt;MaiorValor(matriz,lin,col)&lt;&lt;endl;  
      int quantosPar = ValorParImpar(matriz,lin,col, true);  
     int quantosImpar = ValorParImpar(matriz,lin,col, false);  
      cout&lt;&lt;"\n\n\n";  
      cout&lt;&lt;"Na matriz&lt;"&lt;&lt;lin&lt;&lt;","&lt;&lt;col&lt;&lt;"&gt; existe(m) "&lt;&lt;quantosPar&lt;&lt;  
        " valor(es) par(es) e "&lt;&lt;quantosImpar&lt;&lt;" impar(es)"&lt;&lt;endl;  
      cout&lt;&lt;"\n\n\Deseja continuar S/N ";  
      cin&gt;&gt; ch;  
      clrscr();  
  }  
 }  
 //---------------------------------------------------------------------------  



Código fonte original