Trabalho com matrizes
Página 1 de 1
Trabalho com matrizes
1. Desenvolver uma programa em C++ a fim de manipular duas matrizes 3x3 por meio das seguintes opções disponíveis via menu:
Ao selecionar as opções a, b, c ou d, deverá ser solicitada ao usuário qual matriz será manipulada a respectiva operação.
Caso seja selecionada a operação e, o resultado deverá ser uma matriz resultante da operação ilustrada abaixo:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
a. Inserir valores;
b. Listar valores;
c. Calcular a média de uma linha qualquer;
d. Calcular a média de uma coluna qualquer;
e. Imprimir a matriz resultante a partir do produto de duas matrizes;
b. Listar valores;
c. Calcular a média de uma linha qualquer;
d. Calcular a média de uma coluna qualquer;
e. Imprimir a matriz resultante a partir do produto de duas matrizes;
Ao selecionar as opções a, b, c ou d, deverá ser solicitada ao usuário qual matriz será manipulada a respectiva operação.
Caso seja selecionada a operação e, o resultado deverá ser uma matriz resultante da operação ilustrada abaixo:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Renancr- Mensagens : 118
Data de inscrição : 08/03/2010
Programa para calculo com matriz
Programa para calculo com matriz
- Código:
#include <iostream>
using namespace std;
const int lin=3, col=3;
int menu();
int menu2(int flag_a, int flab_b, int flagx);
int preenche(int matriz[lin][col]);
void exibe(int matriz[lin][col]);
int calcmedia(int matriz[lin][col], int lin_ou_col, int op);
void prod_matriz(int matriz_a[lin][col], int matriz_b[lin][col],int matriz_result[lin][col]);
void main()
{
int matriz_a[lin][col], matriz_b[lin][col], matriz_result[lin][col], flag_a=0, flag_b=0, media, op, op2, op3;
do{
system("cls");
op=menu();
if(op == 1)
{
op2=menu2(flag_a, flag_b, 0);
system("cls");
if(op2 == 1)
{
flag_a=preenche(matriz_a);
}
else
if(op2 == 2)
{
flag_b=preenche(matriz_b);
}
}
else
if(op == 2)
{
op2=menu2(flag_a, flag_b, 1);
system("cls");
if(op2 == 1)
{
exibe(matriz_a);
}
else
if(op2 == 2)
{
exibe(matriz_b);
}
system("pause");
}
else
if(op == 3)
{
system("cls");
op2=menu2(flag_a, flag_b, 1);
do{
cout<< "Digite o numero da linha para calcular a media.\n";
cin>> op3;
op3--;
if(op3 >= lin || op3 < 0)
{
system("cls");
cout<< "O valor digitado e maior do que a quantidade de linhas.\n\n";
system("pause");
}
}while(op3 >= lin || op3 < 0);
system("cls");
if(op2 == 1)
{
media = calcmedia(matriz_a, 1, op3);
cout<< "A media e: " << media << "\n\n";
system("pause");
}
else
if(op2 == 2)
{
media = calcmedia(matriz_b, 1, op3);
cout<< "A media e: " << media << "\n\n";
system("pause");
}
}
else
if(op == 4)
{
op2=menu2(flag_a, flag_b, 1);
do{
cout<< "Digite o numero da coluna para calcular a media.\n";
cin>> op3;
op3--;
if(op3 >= col || op3 < 0)
{
system("cls");
cout<< "O valor digitado e maior do que a quantidade de colunas.\n\n";
system("pause");
}
}while(op3 >= col || op3 < 0);
system("cls");
if(op2 == 1)
{
media = calcmedia(matriz_a, 2 ,op3);
cout<< "A media e: " << media << "\n\n";
system("pause");
}
else
if(op2 == 2)
{
media = calcmedia(matriz_b, 2 , op3);
cout<< "A media e: " << media << "\n\n";
system("pause");
}
}
else
if(op == 5)
{
system("cls");
if(flag_a != 0 && flag_b != 0)
{
prod_matriz(matriz_a, matriz_b, matriz_result);
exibe(matriz_result);
}
else
cout<< "As duas matrizes devem estar preenchidas para calcular a matriz resultante.\n\n";
system("pause");
}
}while(op != 6);
}
int menu()
{
int op;
do{
system("cls");
cout<< "=============================================\n";
cout<< "\t\tMenu\n";
cout<< "=============================================\n";
cout<< "1- Preencher a matriz\n";
cout<< "2- Listar matriz\n";
cout<< "3- Calcular media de uma linha\n";
cout<< "4- Calcular media de uma coluna\n";
cout<< "5- Calcular matriz resultante (1 * 2) = N\n";
cout<< "6- Sair\n";
cout<< "=============================================\n";
cout<< "\tDigite a opcao\n\t";
cin>> op;
if(op < 1 || op > 6)
{
system("cls");
cout<< "Opcao invalida, digite novamente.\n\n\n";
system("pause");
}
}while(op < 1 || op > 6);
return op;
}
int menu2(int flag_a, int flag_b, int flagx)
{
int op;
do{
cout<< "Qual matriz voce deseja, 1 ou 2 ?\n";
cin>> op;
if(op < 1 || op > 2)
{
system("cls");
cout<< "O valor para a matriz nao pode ser diferente de 1 ou 2, digite novamente.\n\n";
system("pause");
}
}while(op < 1 || op > 2);
if(flagx != 0)
{
if(flag_a == 0 && op == 1)
{
system("cls");
cout<< "A matriz 1 ainda nao foi preenchida\n\n";
op=3;
}
else
if(flag_b == 0 && op == 2)
{
system("cls");
cout<< "A matriz 2 ainda nao foi preenchida\n\n";
op=3;
}
}
return op;
}
int preenche(int matriz[lin][col])
{
int l, c;
for(l = 0; l < lin; l++)
for(c = 0; c < col; c++)
{
cout<< "Digite o valor para a linha " << l+1 << " coluna " << c+1 << "\n";
cin>> matriz[l][c];
}
return 1;
}
void exibe(int matriz[lin][col])
{
int l, c;
cout<< "===================\n";
for(l = 0; l < lin; l++)
{
cout<< "| ";
for(c = 0; c < col; c++)
{
cout<< matriz[l][c] << " ";
}
cout << " |\n";
}
cout<< "===================\n";
}
int calcmedia(int matriz[lin][col], int lin_ou_col, int op)
{
int i, media=0;
if(lin_ou_col == 1)
{
for(i = 0; i < lin; i++)
media+=matriz[op][i];
media/=lin;
}
else
{
for(i = 0; i < col; i++)
media+=matriz[i][op];
media/=lin;
}
return media;
}
void prod_matriz(int matriz_a[lin][col], int matriz_b[lin][col],int matriz_result[lin][col])
{
int l, c, cont=0;
for(l=0; l<lin; l++)
for(c=0; c<col; c++)
matriz_result[l][c]=0;
while(cont != col)
{
for(l=0; l<lin; l++)
{
for(c=0; c<col; c++)
matriz_result[l][cont]+= matriz_a[l][c] * matriz_b[c][cont];
if((l+1) == lin)
cont++;
}
}
}
Renancr- Mensagens : 118
Data de inscrição : 08/03/2010
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos