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