Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * * Arrays (continuação) Aula nº 17 Arrays multidimensionais Arrays (continuação) * * * - 32 Arrays Multidimensionais Arrays com vários subscritos Representação de tabelas – linhas e colunas Um elemento tem dois subscritos a [ i ] [ j ] linha coluna por convenção !! * * * - 32 Exemplo de array bidimensional * * * - 32 Exemplo de array bidimensional a[1][2] = 9 9 * * * - 32 Inicialização int b [ 3 ] [ 2 ] = { { 1, 2 }, { 3, 4 }, {5, 6} }; * * * - 32 Inicialização int b [ 2 ] [ 2 ] = { { 1 }, { 3, 4 } }; * * * - 32 Inicialização int b [ 2 ] [ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } }; * * * - 32 Inicialização int b [ 2 ] [ 3 ] = { 1, 2, 3, 4, 5 }; * * * - 32 Inicialização int b [ 2 ] [ 3 ] = { { 1, 2 }, { 4 } }; * * * - 32 Exemplo Escreva um programa que armazene em um array bidimensional as notas alcançadas pelos 40 alunos de AP I, em 2011_1, nas três unidades. Considere que cada linha do array corresponde a um aluno e cada coluna a uma unidade. * * * - 32 Exemplo Neste programa, escreva as seguintes funções: printArray: imprime todas as notas do array em forma de tabela; minimo: imprime a menor nota de todas as existentes no array; maximo: imprime a maior nota de todas as existentes no array; media: imprime a média de todas as notas existentes no array. * * * - 32 Tabela com as notas * * * - 32 Função main() Declarar constantes globais para as dimensões do array; Declarar array de notas em main; Armazenar as notas no array; Chamar a função printArray; Chamar a função minimo; Chamar a função maximo; Chamar a função media. * * * - 32 #include <iostream.h> #include <iomanip> using namespace std; // declarando constantes globais para //dimensoes do array: const int numAlunos = 40, numUnidades = 3; // arrays bidimensionais como argumentos: void printArray (int[ ] [numUnidades]); void minimo (int[ ] [numUnidades]); void maximo (int[ ] [numUnidades]); void media (int[ ] [numUnidades]); int main( ) { * * * - 32 int main( ) { // declaração do array: int notas[numAlunos][numUnidades]; // armazenamento das notas: cout << "\nDigite as notas dos alunos nas três Unidades:"; for (int a=0; a<numAlunos; a++) { cout << "\naluno " << a+1 << ":\n"; for (int u=0; u<numUnidades; u++) cin >> notas[a][u]; } aluno 1: for (int a=0; a<numAlunos; a++) { cout << "\naluno " << a+1 << ":\n"; for (int u=0; u<numUnidades; u++) cin >> notas[a][u]; } aluno 2: 0 0 1 2 0 1 2 1 notas[0][0] notas[0][1] notas[0][2] notas[1][0] notas[1][1] notas[1][2] Usuário digita: ... até o 40º aluno. * * * - 32 // chamando as funções criadas: printArray (notas); minimo (notas); maximo (notas); media (notas); return 0; } * * * - 32 Função printArray ... ... ... ... ... * * * - 32 void printArray (int n[ ] [numUnidades]) { cout<< setw(5)<<"Aluno"<<setw(11)<< "Unidade I"<< setw(12)<<"Unidade II"<<setw(13)<<" Unidade III \n"; for (int al=0; al < numAlunos; al++) { cout << setw(4) << al+1; for (int un=0; un < numUnidades; un++) cout << setw(11)<< n[al][un]; cout << endl; } } * * * - 32 Aluno Unidade I Unidade II Unidade III 1 84 68 98 2 47 53 88 3 87 75 76 4 84 67 73 * * * - 32 * * * - 32 void minimo (int n[ ] [numUnidades]){ int min = n[0][0]; for (int al=0; al< numAlunos; al++) for (int un=0; un<numUnidades; un++) if (n[al][un] < min) min = n[al][un]; cout<<"\nA menor nota foi: " <<min<<endl; } void minimo (int n[ ] [numUnidades]){ int min = n[0][0]; for (int al=0; al< numAlunos; al++) for (int un=0; un<numUnidades; un++) if (n[al][un] < min) min = n[al][un]; cout<<"\nA menor nota foi: " <<min<<endl; } * * * - 32 void maximo (int n[ ] [numUnidades]){ int max= n[0][0]; for (int al=0; al< numAlunos; al++) for (int un=0; un< numUnidades; un++) if (n[al][un] > max) max = n[al][un]; cout << "\nA maior nota foi: "<<max<< endl; } * * * - 32 void media (int n[ ] [numUnidades]){ int med = 0; for (int al=0; al < numAlunos; al++) for (int un=0; un< numUnidades; un++) med = med + n[al][un]; cout << "\nA media das notas foi: " << float(med) / (numAlunos*numUnidades) << endl; } void media (int n[ ] [numUnidades]){ int med = 0; for (int al=0; al < numAlunos; al++) for (int un=0; un< numUnidades; un++) med = med + n[al][un]; cout << "\nA media das notas foi: " << float(med) / (numAlunos*numUnidades) << endl; } * * * - 32 Exercício 2 Altere as funções do exemplo anterior da seguinte forma: minimo – ao invés de imprimir, deverá retornar: a menor nota; os respectivos índices, isto é, o aluno e a unidade correspondente. * * * - 32 Exercício 2 maximo – ao invés de imprimir, deverá retornar: a maior nota; os respectivos índices, isto é, o aluno e a unidade correspondente. media – ao invés de imprimir, deverá retornar a média das notas. * * * - 32 Exercício 2 Nas funções maximo e minimo o “retorno” dos índices deverá ser feito através de argumentos passados por referência. * * * - 32 int minimo (int n[ ][numUnidades],int& a, int& u){ int min=n[0][0]; int a=u=0; for (int al=0; al<numAlunos; al++) for (int un=0; un<numUnidades; un++) if (n[al][un] < min){ min = n[al][un]; a = al; u = un; } return min; } * * * - 32 int maximo (int n[ ][numUnidades],int& a, int& u){ int max=n[0][0]; int a=u=0; for (int al=0; al<numAlunos; al++) for (int un=0; un<numUnidades; un++) if (n[al][un] > max) { max = n[al][un]; a = al; u = un; } return max; } * * * - 32 float media (int n[ ] [numUnidades]){ float med=0.0; for (int al=0; al<numAlunos; al++) for (int un=0; un<numUnidades; un++) med = med + n[al][un]; return med / (numAlunos*numUnidades); } * * * - 32 main( ) também deve ser alterada: ... //protótipos das funções alteradas: int minimo (int [ ][numUnidades],int& , int& ); int maximo (int [ ][numUnidades],int& , int& ); float media (int[ ] [numUnidades]); int main( ){ // variáveis que serão passadas por referência int aluno, unidade; * * * - 32 ... //chamando as funções criadas: printArray(notas); // mantida cout << "\nA menor nota foi: " << minimo(notas, aluno, unidade) << “ do aluno ” << aluno <<“ na unidade ” << unidade <<endl; cout << "\nA maior nota foi: " << maximo(notas, aluno, unidade) << “ do aluno ” << aluno <<“ na unidade ” << unidade<< endl; cout << "\nA media das notas foi: " << media(notas) << endl; return 0; } * * * - 32 Tarefa Fazer os exercícios 7.22 a 7.37 de C++ Como Programar.