Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lourival_ECA

Realizador de tarefas

Recommended Posts

Bom, eu estou fazendo um programa que tem que realizar 4 funcoes para matrizes uma para calcular a soma, outra a multiplicacao, a transposta e outra para multiplicar vetor por matriz, tudo isso apenas em um programa. Até acho que fiz certo as funcoes independentes, mas quando chama a funcao Pausa, ele não retorna (Retorna para o menu), e tambem queria modificar uma coisa porem essa realmente eu nao sei como... fazer uma matriz de dimensao qualquer, eu tive que definir o tamanho de 100 para as matrizes e para o vetor, mas se eu quiser uma outra dimensão maior não aceitaria, como faço isso? será que terei q fazer por meio de ponteiros, como posso fazer isso?

 

dentro da funçao Pausa eu usei outra funcao toupper q eh responsavel em converter um caracter minusculo em formato maiusculo; e usei apostrofos entre o C dentro do while para determinar o conteudo da variavel LETRA.

 

Tentei outras formas como:

int Pausa (void)

{

char Resp;

do

{

cout<<endl;

cout << "Continua? im / [N]ão + <ENTER>: "; cin>> Resp;

 

Resp = toupper(Resp);

}

while (Resp=='S');

return 0;

}

 

ou

 

int Pausa (void)

{

Resp=1;

cout<<endl;

cout << " Deseja Continuar? [1] para Sim / [2] para Não"; cin>> Resp;

 

Resp = toupper(Resp);

}

while (Resp==1);

return 0;

}

 

 

O meu programa final ficou assim:

 

#include <iostream.h>

#include <iomanip.h>

#include <cctype>

#include <stdlib.h>

#include <conio.h>

#include <conio.c>

 

float A[100][100],B[100][100],C[100][100],v[100],p[100], Transp[100][100]; //Eu precisava declarar uma matriz, porem sem definir suas dimensoes.....

 

int i,j,k, M, N ,P;

int Adicao (void);

int Multiplicacao (void);

int Transposta (void);

int VetorXMatriz (void);

int Pausa (void);

 

int main(void)

{

 

textbackground(RED);

textcolor(YELLOW );

int OPCAO=0;

while (OPCAO != 5)

{

 

cout << setiosflags (ios::right);

cout << setiosflags (ios::fixed);

cout << "\n";

cout << "\n" ;

cout << " ________________________________________________" << endl ;

cout << "\n" ;

cout << " Realizador de Tarefas - ECA - Calc. Num." << endl ;

cout << " Programa Matrizes " << endl ;

cout << " Menu Principal " << endl ;

cout << " ________________________________________________" << endl ;

cout << "\n\n\n" ;

cout << " ________________________________________________" << endl ;

cout << " [1] - Adicao entre Matrizes " << endl ;

cout << " [2] - Multiplicacao entre Matrizes " << endl ;

cout << " [3] - Transposta de uma Matriz " << endl ;

cout << " [4] - Multiplicacao de um Vetor por uma Matriz " << endl ;

cout << " [5] - Fim de Programa " << endl ;

cout << " _________________________________________________" << endl ;

cout << "\n" ;

cout << "\n" ;

cout << " Entre com a Opcao Desejada: " ; cin >> OPCAO ;

cout << "\n" << "\n" ;

if (OPCAO!=5){

if ( OPCAO > 5 || OPCAO <=0 )

{

cout << " Opcoes apenas de 1 a 5 conforme Menu Principal! " << " " ;cout << " Opcoes apenas de 1 a 5 conforme Menu Principal! " << " " ;

cout << " Opcao Escolhida esta Invalida, Tente novamente! " << " " ;

cout << "\n" << "\n" ;

cout << " Entre com a Opcao Desejada: " ; cin >> OPCAO;

cout << "\n" << "\n" ;

if ( OPCAO > 5 || OPCAO <=0 )

{

cout << " Opcao Invalida Novamente! " << " " ;

cout << "\n" ;

cout << " O Programa sera fechado! Ate a Proxima! " << " " ;

cout << "\n" << "\n" ;

} }else {

switch (OPCAO)

{

case 1 : Adicao (); break;

case 2 : Multiplicacao (); break;

case 3 : Transposta (); break;

case 4 : VetorXMatriz (); break;

}

} }

return 0;

}

}

int Adicao (void)

{

cout <<"Programa para calcular o resultado da adicao de 2 matrizes\n";

cout <<"Qual a dimensao das matrizes ? ";

cout << " Sendo A[MxN],B[NxP]\n""Entre com o valor de M: " ;cin >> M; cout<< "\n";

cout << "Entre com o valor de N: " ;cin >> N; cout<< "\n";

cout << "Entre com o valor de P: " ;cin >> P; cout<< "\n";

for(i=0;i<M;i++){

for(j=0;j<N;j++){

cout<<"A "<<i<<j<<": ";

cin>>A[j];

}

}

for(i=0;i<N;i++){

for(j=0;j<P;j++){

cout<<"B "<<i<<j<<": ";

cin>>B[j];

}

}

for(i=0;i<M;i++){

for(j=0;j<P;j++){

C[j] = A[j] + B[j];

}

}

cout<<"A matriz resultado da Soma das matrizes A e B eh:\n";

for(i=0;i<M;i++)

{

for(j=0;j<P;j++)

{

cout<< "C "<<i<<j<<": " << C[j]<< endl;

} }

Pausa();

return 0;

}

int Multiplicacao (void)

{

cout <<"Programa para calcular o resultado da multiplicacao de 2 matrizes quadradas\n";

cout <<"Qual a dimensao das matrizes ? ";

cout << " Sendo A[MxN],B[NxP]\n""Entre com o valor de M: " ;cin >> M; cout<< "\n";

cout << "Entre com o valor de N: " ;cin >> N; cout<< "\n";

cout << "Entre com o valor de P: " ;cin >> P; cout<< "\n";

for(i=0;i<M;i++){

for(j=0;j<N;j++){

cout<<"A "<<i<<j<<": ";

cin>>A[j];

}

}

for(i=0;i<N;i++){

for(j=0;j<P;j++){

cout<<"B "<<i<<j<<": ";

cin>>B[j];

}

}

for(i=0;i<M;i++){

for(j=0;j<P;j++){

C[j]=0;

for(k=0;k<N;k++){

C[j]=C[j]+(A[k]*B[k][j]);

}

}

}

cout<<"A matriz resultado da multiplição das matrizes A e B eh:\n";

for(i=0;i<M;i++){

for(j=0;j<P;j++){

cout<<"C "<<i<<j<<": " << C[j]<< endl;

}

}

Pausa();

return 0; }

int Transposta (void)

{

cout <<"Programa para calcular a Transposta da matriz\n";

cout <<"Qual a dimensao da matriz ? ";

cout << " Sendo A[MxN]\n Entre com o valor de M: " ;cin >> M; cout<< "\n";

cout << "Entre com o valor de N: " ;cin >> N; cout<< "\n";

for(i=0;i<M;i++){

for(j=0;j<N;j++){

cout<<"Entre com os Valores A "<<i<<j<<": ";

cin>>A[j];

}

}

 

for(i=0;i<M;i++){

for(j=0;j<N;j++){

Transp[j]=A[j];

}

}

cout<<"A matriz Transposta eh:\n";

for(i=0;i<N;i++){

for(j=0;j<M;j++){

cout << "mTransp"<<i<<j<<": " << Transp[j]<< endl;

}

}

Pausa();

return 0;

}

int VetorXMatriz (void)

{

 

cout <<"Programa para Multiplicação de um Vetor por uma Matriz\n";

 

cout << " Sendo A[MxM] e v[M]\n Entre com o valor de M: " ;cin >> M; cout<< "\n";

 

for (i=0; i<M; i++){

p = 0;

for (j=0; j<M; j++)

{

p += A [j] * v[j];

}

}

for (i=0; i<M; i++)

{

cout << "\n";

for (j=0; j<M; j++)

{

cout << A [j];

}

cout << " ]";

cout << " [ " << v << " ]";

}

for (i=0; i<M; i++)

cout << "\n" << "O Resultado eh:\n" << p;

 

 

Pausa ();

return 0;

}

int Pausa (void)

{

char LETRA;

cout << "Tecle <C> + <ENTER> para voltar ao menu...";

do

{

LETRA = cin.get();

LETRA = toupper(LETRA);

}

while (LETRA!='C');

return 0;

 

 

cout << "\n" ;

cout << "Autor: Eu." << " " ;

cout << "\n" << "\n" ;

system("Pause");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já ouviu falar em Numerical Recipes in C? É um livro muito bom que ensina várias técnicas para programadores de várias áreas da ciência, tem um enfoque matemático bem forte.

 

Baixe os arquivos:

http://www.numerical-recipes.com/pubdom/nrutil.c.txt

http://www.numerical-recipes.com/pubdom/nrutil.h.txt

 

E substitua as extensões (tire o .txt)

 

Para declarar uma matriz, declare-a como um array de ponteiros:

 

float **A;

 

A = matrix(1, 3, 1, 9); // Para declarar uma matriz 3 x 9, tipo float, com índices de linha de 1 a 3 e índices de coluna de 1 a 9

 

A função aloca memória suficiente no momento da declaração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.