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:
Em seguida, uma função para mostrar a matriz gerada:
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...
Multiplicação dos termos...
Mostrar maior valor...
Mostrar pares e ímpares...
Depois de definidas as funções, vamos para o código completo...
Código fonte original
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
Postar um comentário