Buscar

Arrays Multidimensionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

20 de maio de 2013
Arrays Multidimensionais
Rossana Baptista Queiroz
Arrays...
2
 Como vimos até agora
 1 dimensão (vetor) = “1 linha x n colunas”
 Armazena n elementos de um determinado tipo de 
dados
 É indexado SEMPRE começando por 0, indo até n-1
 Exemplo
100 20 50 201 2
int numeros[5] = { 100, 20, 50, 201, 2 };
numeros[0] numeros[1] numeros[2] numeros[3] numeros[4]
Array multidimensional
 Array bidimensional (matriz)
 Duas dimensões: n linhas e m colunas
Exemplo:
P[0][0] P[0][1] P[0][2] P[0][3]
P[1][0] P[1][1] P[1][2] P[1][3]
P[2][0] P[2][1] P[2][2] P[2][3]
char P[3][4];
<tipo> <nome> [<linha>] [<coluna>] ;
<tipo> <nome> [<linha>] [<coluna>] = { <valores> };
Coluna 0 Coluna 1 Coluna 2 Coluna 3
Linha 0
Linha 1
Linha 2
Nome do array
Índice da linha
Índice da coluna
Array multidimensional
 Array tridimensional...
 Ainda podemos pensar em termos de largura, altura e 
profundidade
int C[3][3][3];
[0] [1] [2]
[0]
[1]
[2]
[0]
[1]
[2]
C[0][0][0] = ?
C[1][1][0] = ?
C[0][1][1] = ?
1ºs índices
2ºs índices
3ºs índices
C[1][2][1] = ?
Array multidimensional
 Array n-dimensional...
 Com n a partir de 4, fica difícil visualizar (no espaço), 
mas funciona como os de menor dimensão
 Exemplo
Quantos elementos?
 int threeD[3][3][3] ?
 char fourD[2][3][4][5]?
<tipo> <nome> [<dim1>] [<dim2>] [<dim3>]...[<dimN>];
char fourD[2][3][4][5];
Inicialização
 Array bidimensional (matriz)
 Forma geral
Exemplo:
1 2 3 0
4 5 6 0
7 0 0 0
Coluna 0 Coluna 1 Coluna 2 Coluna 3
Linha 0
Linha 1
Linha 2
<tipo> <nome> [<linha>] [<coluna>] = { {<valores>}, ... , {<valores>} };
int P[3][4] ={ {1, 2, 3, 0}, {4, 5, 6, 0}, {7, 0, 0, 0} };
Percorrendo...
7
 Array bidimensional
int matriz[3][4];
for (int linha=0; linha<3; linha++)
{
for (int coluna=0; coluna<4; coluna++)
{
std::cout << "linha " << linha << ", coluna " << coluna << " vai receber zero\n";
matriz[linha][coluna] = 0;
}
}
Percorrendo...
8
 Array tridimensional
int threeD[3][3][3];
for (int i=0; i<3; i++) // "altura"
for(int j=0; j<3; j++) // "largura"
for(int k=0; k<3; k++) // "profundidade"
{
cin >> threeD[i][j][k]; //lê um valor
}
Definindo as dimensões
9
 Exemplo
 Um array bidimensional que armazena 3 notas de 5 
alunos
#define NRO_ESTUDANTES 5
#define NRO_NOTAS 3
...
int dados[NRO_ESTUDANTES][NRO_NOTAS];
for (int estudante=0; estudante<NRO_ESTUDANTES; estudante++)
{
std::cout << "Estudante " << estudante << "\n";
for (int nota=0; nota<NRO_NOTAS; nota++)
{
std::cout << "Digite a nota [" << nota << "]:";
std::cin >> dados[estudante][nota];
}
std::cout << std::endl; //std::end pula uma linha, assim como o "\n"
}
Definindo as dimensões
10
 Exemplo
 Um array bidimensional que armazena 3 notas de 5 
alunos
#define NRO_ESTUDANTES 5
#define NRO_NOTAS 3
...
int dados[NRO_ESTUDANTES][NRO_NOTAS];
for (int estudante=0; estudante<NRO_ESTUDANTES; estudante++)
{
std::cout << "Estudante " << estudante << "\n";
for (int nota=0; nota<NRO_NOTAS; nota++)
{
std::cout << "Digite a nota [" << nota << "]:";
std::cin >> dados[estudante][nota];
}
std::cout << std::endl; //std::end pula uma linha, assim como o "\n"
}
Definindo as dimensões
11
 Exemplo
 Um array bidimensional que armazena 3 notas de 5 
alunos
#define NRO_ESTUDANTES 5
#define NRO_NOTAS 3
...
int dados[NRO_ESTUDANTES][NRO_NOTAS];
for (int estudante=0; estudante<NRO_ESTUDANTES; estudante++)
{
std::cout << "Estudante " << estudante << "\n";
for (int nota=0; nota<NRO_NOTAS; nota++)
{
std::cout << "Digite a nota [" << nota << "]:";
std::cin >> dados[estudante][nota];
}
std::cout << std::endl; //std::end pula uma linha, assim como o "\n"
}
Definindo as dimensões
12
 Exemplo
 Um array bidimensional que armazena 3 notas de 5 
alunos
#define NRO_ESTUDANTES 5
#define NRO_NOTAS 3
...
int dados[NRO_ESTUDANTES][NRO_NOTAS];
for (int estudante=0; estudante<NRO_ESTUDANTES; estudante++)
{
std::cout << "Estudante " << estudante << "\n";
for (int nota=0; nota<NRO_NOTAS; nota++)
{
std::cout << "Digite a nota [" << nota << "]:";
std::cin >> dados[estudante][nota];
}
std::cout << std::endl; //std::end pula uma linha, assim como o "\n"
}
Definindo as dimensões
13
 Outro exemplo: imagens!!!
Matrizes de pixels
 Cada pixel tem uma cor
 Cada cor tem uma intensidade
 Escala de cinza: 0 a 255
 Colorida: componentes (RGB)
 Vermelha: 0 a 255
 Verde: 0 a 255
 Azul: 0 a 255
Trabalharemos mais com imagens em 
outras aulas!!!
Exercícios
 Definir array para armazenar:
 idade de alunos (5 turmas de 30 alunos cada)
 dados para batalha naval 
 15 palavras de 40 caracteres
 temperatura por hora, para 7 dias
 Imagem em escala de cinza, 100 x 100 pixels 
Exercícios
idade de alunos (5 turmas de 30 alunos cada)
int idade[5][30];
dados para batalha naval 
char tabuleiro[30][30];
15 palavras de 40 caracteres
char palavras[15][40];
temperatura por hora, para 7 dias 
int temperatura[7][24];
imagem em escala de cinza, 100 x 100 pixels 
int imagem[100][100];
 Código ASCII
(American Standard Code for Information Interchange)
http://www.asciitable.com
resultado na tela:
char palavra[100] = 
{ 32, 32, 32, 32, 32, 32, 13, 10,
32, 32, 201, 205, 187, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
32, 32, 186, 32, 32, 32, 13, 10,
205, 205, 202, 205, 205, 32, 13, 10};
.........
cout <<letra;
Código ASCII
17
Exercícios
 Faça um programa que exiba a seguinte tabela de 
multiplicação
0 1 2 3 4 5 6 7 8 9
--------------------------------------
0| 0 0 0 0 0 0 0 0 0 0
1| 0 1 2 3 4 5 6 7 8 9
2| 0 2 4 6 8 10 12 14 16 18
3| 0 3 6 9 12 15 18 21 24 27
4| 0 4 8 12 16 20 24 28 32 36
5| 0 5 10 15 20 25 30 35 40 45
6| 0 6 12 18 24 30 36 42 48 54
7| 0 7 14 21 28 35 42 49 56 63
8| 0 8 16 24 32 40 48 56 64 72
9| 0 9 18 27 36 45 54 63 72 81
Exercícios
 Implementação do jogo da velha, utilizando uma matriz 
para dados do desenho e outra matriz para dados de 
controle
Etapas: (grupos de até DUAS pessoas)
1 – elaboração do algoritmo e estrutura de dados
2 – implementação do programa
3 – Documentação, melhoria e entrega
a) Matriz para armazenar jogadas
char jogadas [3] [3] = { 0, 0, 0, Legenda: 0 - Vazio
0, 0, 0, 1 - Jogador 1
0, 0, 0}; 2 - Jogador 2
b) Matriz para armazenar Layout de tela
char tela[5] [7] = 
{ 32, 186, 32, 186, 32, 13, 10,
205, 206, 205, 206, 205, 13, 10,
32, 186, 32, 186, 32, 13, 10,
205, 206, 205, 206, 205, 13, 10,
32, 186, 32, 186, 32, 13, 10};
Jogo da Velha, estrutura de dados
Jogo da Forca
21
 Visual (mostrar a forca com o bonequinho)
 Lógica

Outros materiais