Logo Passei Direto
Buscar

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.

Teste o Premium para desbloquear

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