1 of 21

Programação I

Arrays com duas dimensões (matrizes)

Seção 10.7

2 of 21

Muitos problemas são mais facilmente representados por matrizes

Nota 1

Nota 2

Nota 3

Nota 4

João

5.5

6.0

4.0

2.0

Julia

7.3

4.0

5.0

8.0

Maria

9.1

9.0

8.5

10.0

Ambrósio

3.2

10.0

10.0

9.5

Taíse

9.1

8.0

7.5

10.0

3 of 21

Se usarmos array com uma dimensão

Mas e se a turma tivesse muitos alunos???

float joao[4];

float julia[4];

float maria[4];

float ambrosio[4];

float taise[4];

4 of 21

Array bidimensional

<tipo de dado> <identificador>[<linhas>][<colunas>];

Exemplo:

float notas[5][4];

0

1

2

3

0

1

2

3

4

5 of 21

Atribuindo

notas[0][0] = 5.5;

0

1

2

3

0

5.5

1

2

3

4

6 of 21

Segunda nota da Taíse

notas[4][1] = 8.0;

0

1

2

3

0

5.5

1

2

3

4

8.0

7 of 21

Ou toda a matriz

8 of 21

scanf na matriz

notas[0][0] = 5.5 ; //atribuição fixa no código

scanf(“%f”,&notas[0][0]); // leitura do teclado

9 of 21

Percorrendo uma matriz linha por linha (livro 10.8)

Leia as notas dos alunos usando o teclado. Linha por linha. Ou seja, primeiro as 4 notas do primeiro aluno, depois as 4 notas do segundo aluno .. e assim por diante

0

1

2

3

0

5.5

6.0

4.0

2.0

1

2

3

4

0

1

2

3

0

5.5

6.0

4.0

2.0

1

7.3

4.0

5.0

8.0

2

3

4

10 of 21

Solução

Quantas vezes o scanf foi executado?

11 of 21

Exercícios (livro 10.9)

No código anterior, lemos os elementos da matriz a partir do teclado. Depois de ler os valores, percorra a matriz e imprima-os, linha por linha.

Imprima todos os valores da matriz anterior só que agora coluna por coluna.

Imprima todos os valores de baixo pra cima, linha a linha, da direita pra esquerda.

Imprima todos os valores de baixo pra cima, linha a linha, da esquerda para a direita.

Imprima todos os valores da direita para a esquerda, linha a linha.

12 of 21

Exercício :: fazendo juntos (livro 10.10)

Adição de matrizes

13 of 21

Exercício :: fazendo juntos

Vamos fazer um programa que lê duas matrizes de inteiros e preenche uma terceira matriz com o resultado da soma das duas. As matrizes possuem dimensões N x M, onde N e M serão dados pelo usuário. Sabe-se que 1 <= N,M <=100.

14 of 21

Solução

15 of 21

Matriz transposta (livro 10.11)

Faça um programa que receba as dimensões e os elementos de uma matriz e gere a sua transposta.

16 of 21

Fazendo juntos

Vamos tentar identificar o padrão de atribuição

17 of 21

Solução

18 of 21

Exercício (livro 10.12)

int main()

{

int quadrado[5][5] = {0};

int tabela[5][6] = {{1, 2, 3, 4, 5},

{2, 4, 6, 8, 10},

{20, 10, 5, 3, 1},

{3, 6, 9, 12, 15} };

return 0;

}

a) Complete o código ao lado(mas não altere a inicialização das variáveis) para que o conteúdo do array “quadrado” fique como mostrado a seguir. Use os comandos de repetição para isso.

19 of 21

Exercício (livro 10.12)

int main()

{

int quadrado[5][5] = {0};

int tabela[5][6] = {{1, 2, 3, 4, 5},

{2, 4, 6, 8, 10},

{20, 10, 5, 3, 1},

{3, 6, 9, 12, 15} };

return 0;

}

b) Complete o código ao lado para que o conteúdo do array “quadrado” fique como mostrado a seguir.

20 of 21

Exercício (livro 10.12)

int main()

{

int quadrado[5][5] = {0};

int tabela[5][6] = {{1, 2, 3, 4, 5},

{2, 4, 6, 8, 10},

{20, 10, 5, 3, 1},

{3, 6, 9, 12, 15} };

return 0;

}

c) Complete o código ao lado para que o conteúdo do array “quadrado” fique como mostrado a seguir.

21 of 21

Exercício (livro 10.12)

int main()

{

int quadrado[5][5] = {0};

int tabela[5][6] = {{1, 2, 3, 4, 5},

{2, 4, 6, 8, 10},

{20, 10, 5, 3, 1},

{3, 6, 9, 12, 15} };

return 0;

}

d) O array “tabela” foi parcialmente inicializado. Deixamos a última linha e a última coluna sem valores definidos. Escreva um programa para preencher a última linha com a soma de cada uma das colunas e a última coluna com a soma de cada uma das linhas. Na última posição (última linha e última coluna), calcule a armazene a soma de todas as células pré-preenchidas.