Matriz M x N com C++

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 < lin; i++)  
       for(j = 0 ; j < 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 < lin; i++)
    {
       for(int j = 0 ; j < col; j++)
       cout<<setw(7)<<matriz[i][j]<<"";
        cout<<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 < lin; i++ )  
    for( int j = 0; j < 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 < lin; i++)  
    for(int j = 0; j < 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 < lin; i++ )  
    for( int j = 0; j < col; j ++ )  
     if(abs(matriz[i][j]) > 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 < lin; i++)  
    for(int j = 0; j < 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 <vcl.h>  
 #include <iostream.h>  
 #include <conio.h>  
 #include <iomanip.h>  
 #include <stdlib.h>  
 #include <math.h>  
 //---------------------------------------------------------------------------  
 const maxTam = 10;  
 void Inicializa(int Matriz[][maxTam], int lin, int col)  
 {  
   int i, j;  
   Matriz[lin][col];  
   for(i = 0; i < lin; i++)  
       for(j = 0 ; j < col; j++)  
           Matriz[i][j] = rand() % 10 - 1;  
 }  
 //------------------------------------------------------------------------------  
 void MostraMatriz(int matriz[][maxTam], int lin, int col)  
 {  
   for(int i = 0; i < lin; i++)  
   {  
     for(int j = 0 ; j < col; j++)  
        cout<<setw(7)<<matriz[i][j]<<"";  
           cout<<endl;  
   }  
 }  
 //------------------------------------------------------------------------------  
 int SomaMatriz(int matriz[][maxTam], int lin, int col)  
 {  
   int Soma = 0;  
   for( int i = 0; i < lin; i++ )  
    for( int j = 0; j < col; j++ )  
      Soma += matriz[i][j];  
   return Soma;  
 }  
 //------------------------------------------------------------------------------  
 void Multiplica( int matriz[][maxTam], int lin, int col, int Soma )  
 {  
   for(int i = 0; i < lin; i++)  
    for(int j = 0; j < 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 < lin; i++ )  
    for( int j = 0; j < col; j ++ )  
     if(abs(matriz[i][j]) > 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 < lin; i++)  
    for(int j = 0; j < 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' && ch != 'N' )  
  {  
   cout<<"O valor da linhas e das colunas deve ser menor ou igual a 10!"<<endl;  
   cout<<"\nDigite o numero de linhas: "; cin>> lin;  
   while( lin > 10 )  
   {  
    cout<<"Erro de tamanho!";  
    cout<<"\nDigite o numero de linhas: "; cin>> lin;  
   }  
   cout<<"\nDigite o numero de colunas: ";cin>> col;  
   while( col > 10 )  
   {  
       cout<<"Erro de tamanho!";  
       cout<<"\nDigite o numero de colunas: "; cin>> col;  
      }  
      clrscr();  
      Inicializa(matriz,lin,col);  
      cout<<"A Matriz<"<<lin<<","<<col<<"> eh: "<<endl;  
      MostraMatriz(matriz,lin,col);  
     cout<<"\n\n\n";  
      Soma = SomaMatriz(matriz,lin,col);  
      cout<<"A soma da Matriz<"<<lin<<","<<col<<"> eh: "<<Soma<<endl;  
      cout<<"\n\n\n";  
      cout<<"A matriz<"<<lin<<","<<col<<"> multiplicada por Soma: "<<endl;  
      Multiplica(matriz,lin,col,Soma);  
      MostraMatriz(matriz,lin,col);  
      cout<<"\n\n\n";  
      cout<<"O maior valor da matriz<"<<lin<<","<<col<<"> eh: "<<MaiorValor(matriz,lin,col)<<endl;  
      int quantosPar = ValorParImpar(matriz,lin,col, true);  
     int quantosImpar = ValorParImpar(matriz,lin,col, false);  
      cout<<"\n\n\n";  
      cout<<"Na matriz<"<<lin<<","<<col<<"> existe(m) "<<quantosPar<<  
        " valor(es) par(es) e "<<quantosImpar<<" impar(es)"<<endl;  
      cout<<"\n\n\Deseja continuar S/N ";  
      cin>> ch;  
      clrscr();  
  }  
 }  
 //---------------------------------------------------------------------------  


Código fonte original




Comentários

Postagens mais visitadas deste blog

Modelagem física com o Modellus

Tipos de triângulos

Mapa Conceitual de Forças