Buscar

Matrizes Bidimensionais em C++

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
ALGORITMOS – AULA 9
ANITA MACIEL
Rio de Janeiro, O1 de julho de 2011
*
*
*
*
Dimensionando Matrizes(bidimensionais)
tipo nomeMatriz[tamL] [tamC] ;
C++
*
*
Bem parecido com o armazenamento da matriz unidimensional. Leia na aula online.
Endereço base + número de colunas da matriz * deslocamento linha * número de bytes do tipo
*
*
Vamos treinar
1) Suponha que um médico deseje contratar você para construir um programa que possa armazenar nomes, peso, altura e IMC de 10 pacientes. 
Ele lhe entregou um desenho parecido com o do próximo slide.
*
*
Vamos treinar
*
*
Vamos treinar
*
*
Vamos treinar
*
*
float pacienteDados[10] [3] ;
char pacienteNome[10] [30] ;
Vamos treinar
Dimensionando as Matrizes
*
*
Não consigo entender matriz de char.
Vou explicar.
*
*
char nome [30];
Quando desejamos armazenar um nome nessa Matriz Unidimensional, tratamos como se ela fosse uma variável simples.
cin.getline(nome, 30);
*
*
cin.getline(..., ...)? Não era cin>>... ;?
Calma! Vou explicar a diferença.
*
*
Este objeto libera o teclado para a entrada de dados, mas, em se tratando de um vetor de char, no primeiro espaço encontrado, os caracteres após serão abandonados.
cin>>nome;
*
*
Vamos treinar
*
*
Vamos treinar
*
*
Entendi. Então, existe um comando especial?
O objeto é o mesmo,cin, mas combinado com o método getline(..., ...) 
cin.getline(var, tam);
tam -> número de caracteres + \0 
*
*
Vamos treinar
*
*
Vamos treinar
*
*
Vamos treinar
2) Suponha que você foi contratado para construir um programa que possa controlar as despesas de um ano de uma pessoa. 
Ele lhe entregou um desenho parecido com o do próximo slide.
*
*
Vamos treinar
*
*
Vamos treinar
*
*
Vamos treinar
*
*
float despesasValor[8] [12] ;
char despesasNome[8] [20] ;
Vamos treinar
Dimensionando as Matrizes
*
*
Atribuindo valores à Matriz bidimensional
 for(L=0; L < tamanhoLinha ; L++)
 for(C=0; C < tamanhoColuna ; C++)
 nomeMatriz[L] [C]= valor;
valor é uma expressão que pode envolver constante ou operações com outra(s) matriz(es). 
*
*
Atribuindo valores à Matriz bidimensional
 int mat[ ][3]={9,10,10,7,8,9,9,9,10,6,7,8};
//nessa declaração / atribuição, assume-se que a matriz tem quatro linhas
*
*
Entrada via teclado - Matriz bidimensional
for(L=0; L < tamanhoLinha ; L++)
{ 
 for(C=0; C < tamanhoColuna ; C++)
 { 
 cout<<”\nLinha ”<<L+1<<” coluna ”<<C+1<<”: ”;
 cin>>nomeMatriz[L][C];
 }
 } 
*
*
Entrada via teclado - Matriz bidimensional
Matriz de char
 for(L=0; L < tamanhoLinha ; L++)
 { 
 cout<<”\nNumero da linha ”<<L+1<<”: ”;
 cin.getline(nomeMatriz[L], tam);
 } 
tam valor declarado no dimensionamento (colunas)
*
*
Trecho de saída - Matriz bidimensional
system(”cls”);//limpar a tela ou clear - LINUX
cout<<”\nTitulo\n”;
for (L= 0; L < tamanhoLinha ; L++)
{ 
 for(C=0; C < tamanhoColuna ; C++)
 {
 cout<<nomeMatriz[L][C]<< ”\t”;
 }
 cout<<”\n”;
 } 
*
*
Vamos treinar
Apresentarei os trechos de entrada e saída nos próximos slides para o exemplo 1. O teste foi com três pacientes para facilitar. 
*
*
 for(L=0; L < TL ; L++) 
 { 
 cout<<"\nNome "<<L+1<<": ";
 cin.getline(pacienteNome[L], 30); 
 cout<<"\nPeso "<<L+1<<": "; 
 cin>>pacienteDados[L][0];
 cout<<"\nAltura "<<L+1<<": "; 
 cin>>pacienteDados[L][1]; 
 pacienteDados[L][2] = pacienteDados[L][0] / (pacienteDados[L][1]* pacienteDados[L][1]); 
 } 
Vamos treinar - entrada
*
*
 system("cls");
 cout<<"\nPeso\tAltura\tIMC\tNome\n";
 for(L= 0; L < TL ; L++)
 cout<<"\n"<<pacienteDados[L][0]<< "\t"<<pacienteDados[L][1]<<"\t"<<pacienteDados[L][2]<<"\t"<<pacienteNome[L];
 
Vamos treinar - saída
*
*
Vamos treinar - programa
*
*
Vamos treinar - Problema
*
*
Vamos treinar - Solução
Limpar o buffer 
cin.get(); 
*
*
 for(L=0; L < TL ; L++) 
 { 
 cout<<"\nNome "<<L+1<<": ";
 cin.getline(pacienteNome[L], 30); 
 cout<<"\nPeso "<<L+1<<": "; 
 cin>>pacienteDados[L][0];
 cout<<"\nAltura "<<L+1<<": "; 
 cin>>pacienteDados[L][1]; 
 pacienteDados[L][2] = pacienteDados[L][0] / (pacienteDados[L][1]* pacienteDados[L][1]); 
 cin.get(); // limpa o buffer 
 } 
Vamos treinar
*
*
Vamos treinar
*
*
Vamos treinar - Entrada
*
*
Vamos treinar - Saída
*
*
Vamos treinar
Para finalizar, vou fazer um programa mais matemático.
*
*
Vamos treinar
float M[4][4]; 
Dimensionamento
for(L=0; L < TAM ; L++) 
{ 
 for(C=0; C < TAM ;C++) 
 { 
 cout<<"\nElemento "<<L+1<<", "<<C+1<<": "; 
 cin>>M[L][C]; 
 }
 } 
Entrada
*
*
Vamos treinar
 system("cls");
 cout<<"\nElementos da Matriz\n\n";
 for (L= 0; L < TAM ; L++)
 { 
 for(C=0; C < TAM ; C++) 
 cout<<M[L][C]<< "\t"; 
 cout<<"\n"; 
 }
Saída
*
*
Vamos treinar - Programa
*
*
Vamos treinar - Saída
*
*
Trechos Interessantes 
system("cls");
cout<<"\nElementos da Matriz Acima da DP\n\n";
for (L= 0; L < TAM ; L++)
{ 
 for(C=0; C < TAM ; C++) 
 if( L < C )
 cout<<M[L][C]<< "\t";
 else
 cout<<"\t"; 
 cout<<"\n"; 
}
*
*
Vamos treinar - Saída
*
*
Trechos Interessantes 
...
if( L > C )
 cout<<M[L][C]<< "\t";
 else
 cout<<"\t"; 
...
...
if( L == C )
 cout<<M[L][C]<< "\t";
 else
 cout<<"\t"; 
...
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais