Baixe o app para aproveitar ainda mais
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"; ... * * *
Compartilhar