25
Algoritmos e Estruturas de Dados II IEC013 Linguagem C Linguagem C -Vetores e Matrizes- -Vetores e Matrizes- Prof. César Melo Todos os créditos ao Prof. Leandro Galvão

Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Algoritmos e Estruturas de Dados IIIEC013

Linguagem CLinguagem C-Vetores e Matrizes--Vetores e Matrizes-

Prof. César Melo Todos os créditos ao Prof. Leandro Galvão

Page 2: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

São um conjunto de variáveis identificadas São um conjunto de variáveis identificadas por um por um mesmo nomemesmo nome..

HomogêneasHomogêneas (vetores e matrizes) (vetores e matrizes)

HeterogêneasHeterogêneas (estruturas) (estruturas)

Variáveis CompostasVariáveis Compostas

Page 3: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

4,46,37,0109,88,95,19,42,36,1

9876543210

Notas:

Posição:

Variáveis Compostas Variáveis Compostas HomogêneasHomogêneas

Correspondem a posições da memória:Correspondem a posições da memória:

identificadas por um identificadas por um único nomeúnico nome

individualizadas por individualizadas por índicesíndices

cujo conteúdo é de um cujo conteúdo é de um mesmo tipomesmo tipo

Page 4: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Utilizados para armazenar conjuntos de Utilizados para armazenar conjuntos de dados cujos elementos podem ser dados cujos elementos podem ser endereçados por endereçados por um único índiceum único índice..

Também são conhecidos como Também são conhecidos como vetoresvetores..

Arranjos unidimensionaisArranjos unidimensionais

Page 5: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Utilizados para armazenar conjuntos de Utilizados para armazenar conjuntos de dados cujos elementos necessitam ser dados cujos elementos necessitam ser endereçados por endereçados por mais de um índicemais de um índice..

Também são conhecidos comoTambém são conhecidos como arraysarrays ouou matrizesmatrizes..

Arranjos multidimensionaisArranjos multidimensionais

Page 6: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Como declarar:Como declarar:

Exemplos:Exemplos:

<tipo> <nome> [<tamanho1>][<tamanho2>]...;<tipo> <nome> [<tamanho1>][<tamanho2>]...;

float VetReais[100];int Vetor[5][9];char Nome_cliente[50];float cubo[20][12][7];

float VetReais[100];int Vetor[5][9];char Nome_cliente[50];float cubo[20][12][7];

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C

Page 7: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

O compilador C aloca uma porção O compilador C aloca uma porção contígua contígua da da memória para armazenar os elementos das memória para armazenar os elementos das matrizes e vetores.matrizes e vetores.

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C

Page 8: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

int vetInt[n];int vetInt[n];

...

Índices:Índices: 00 11 22 33 44 55 ...... n-1n-1

vetInt

Índice do Índice do primeiroprimeiro elemento: elemento: zerozeroÍndice doÍndice do últimoúltimo elemento: elemento: n – 1n – 1QuantidadeQuantidade de elementos: de elementos: nn

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C

Page 9: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

00 11 22 33 44 55

vetor[6]vetor[6]X1X1 X2X2

vetor[1] = 9;

vetor[-1] = 2;

vetor[6] = 8;

vetor[1] = 9;

vetor[-1] = 2;

vetor[6] = 8;

2 89

37

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C

Índices fora dos limites podem causar Índices fora dos limites podem causar comportamento comportamento anômalo anômalo do código.do código.

int X1;

int vetor[6];

int X2

int X1;

int vetor[6];

int X2

Page 10: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C

O tamanho de um vetor ou matriz é O tamanho de um vetor ou matriz é pré-pré-definidodefinido, ou seja, após a compilação, não , ou seja, após a compilação, não pode ser mudado.pode ser mudado.

Portanto, vetores e matrizes são Portanto, vetores e matrizes são chamadas chamadas estruturas de dados estáticasestruturas de dados estáticas, , pois mantém o pois mantém o mesmo tamanho mesmo tamanho ao longo ao longo de toda a execução do programa.de toda a execução do programa.

Page 11: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Atribuir valores na declaração do vetor:Atribuir valores na declaração do vetor:

Atribuir valores na declaração da matriz:Atribuir valores na declaração da matriz:

float matriz[2][3] = {{1,2,3},{4,5,6}};float matriz[2][3] = {{1,2,3},{4,5,6}};

int vetor[5] = {1,2,3,4,5};int vetor[5] = {1,2,3,4,5};

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos

Page 12: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Colocar os números de 1 a 5 num vetor:Colocar os números de 1 a 5 num vetor:

Colocar os números de 5 a 1 num vetor:Colocar os números de 5 a 1 num vetor:

for (i=0; i<5; i++) Vetor[i] = 5 - i;for (i=0; i<5; i++) Vetor[i] = 5 - i;

for (i=0; i<5; i++) Vetor[i] = i + 1;for (i=0; i<5; i++) Vetor[i] = i + 1;

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos

Page 13: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Preencher uma matriz n Preencher uma matriz n ×× m com zeros: m com zeros:

for (i=0; i < N; i++)

for (j=0; j < M; j++)

Matriz[i][j] = 0;

for (i=0; i < N; i++)

for (j=0; j < M; j++)

Matriz[i][j] = 0;

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos

Page 14: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Copiar dados de um vetor para outro:Copiar dados de um vetor para outro:

Boa prática de programação:Boa prática de programação:Definir o tamanho de vetores com Definir o tamanho de vetores com constantesconstantes

flexibiliza a manutenção do código.flexibiliza a manutenção do código.

#define TAM_MAX 10

double vetReais[TAM_MAX], vetCopia[TAM_MAX];

for (i=0; i<TAM_MAX; i++)

vetCopia[i] = vetReais[i];

#define TAM_MAX 10

double vetReais[TAM_MAX], vetCopia[TAM_MAX];

for (i=0; i<TAM_MAX; i++)

vetCopia[i] = vetReais[i];

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos

Page 15: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Leitura dos dados de um vetor:Leitura dos dados de um vetor:

for (i=0; i<TAM_MAX; i++) {

printf("Digite um número: "); scanf("%f", &vet[i]);}

for (i=0; i<TAM_MAX; i++) {

printf("Digite um número: "); scanf("%f", &vet[i]);}

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Exemplos:: Exemplos

Page 16: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

QuestõesQuestões

Page 17: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

1.1. Conceitos de variável composta;Conceitos de variável composta;

– Tipos;definição;inicializaçõesTipos;definição;inicializações

2.2. Acessar elementos de uma variável composta Acessar elementos de uma variável composta unidimensional(vetor);unidimensional(vetor);

3.3. Acessar elementos de uma variável composta Acessar elementos de uma variável composta multidimensional(matriz);multidimensional(matriz);

40

Dinâmica: Os EspecialistasDinâmica: Os Especialistas

Page 18: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Determinar:Determinar:1.1. M[3][0]M[3][0]2.2. M[4][2]M[4][2]3.3. M[1][3]M[1][3]4.4. M[5][M[0][2]]M[5][M[0][2]]5.5. M[M[3][1]][1]M[M[3][1]][1]6.6. M[4][(M[1][2]+M[3][0])]M[4][(M[1][2]+M[3][0])]

5

4

3

2

1

0

3210

002-3

1100

-2-2-1-1

1111

03-55

4321

1. -3

2. 1

3. 0

1. -2

2. 1

3. 0

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema AA

Page 19: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Ler um elemento Ler um elemento KK..

Ler um vetor Ler um vetor AA de de NN elementos.elementos.

Verificar se o elemento Verificar se o elemento KK está presente no está presente no vetor:vetor:

Se estiver, imprimir a posição onde ele foi Se estiver, imprimir a posição onde ele foi encontrado.encontrado.

Caso contrário, imprimir mensagem "elemento Caso contrário, imprimir mensagem "elemento KK não encontrado". não encontrado".

37a

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema BB

Page 20: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Ler Ler NN valores inteiros (N valores inteiros (N ≤≤ 100) até que 100) até que seja digitado o valor zero.seja digitado o valor zero.

A seguir, A seguir, inverter o vetorinverter o vetor, trocando o 1º , trocando o 1º elemento com o último, o 2º com o elemento com o último, o 2º com o penúltimo, e assim sucessivamente.penúltimo, e assim sucessivamente.

Ao final, Ao final, imprimirimprimir o vetor invertido. o vetor invertido.

38

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema CC

Page 21: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Faça um programa que imprima uma matriz Faça um programa que imprima uma matriz quadrada de dimensão quadrada de dimensão NN contendo: contendo:

o número o número 11 nos elementos abaixo da diagonal nos elementos abaixo da diagonal principal principal

o número o número 0 0 nos demais elementosnos demais elementos

NN deve ser menor ou igual a deve ser menor ou igual a 2020..

39

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema DD

Page 22: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Escreva um programa que Escreva um programa que acumule os valores dos acumule os valores dos elementos de cada linha e elementos de cada linha e de cada coluna e os de cada coluna e os armazene na própria armazene na própria matriz. Veja matriz ao lado.matriz. Veja matriz ao lado.

Considere que:Considere que:

– A matriz em questão A matriz em questão possui cinco linhas possui cinco linhas e três colunas.e três colunas.

– A última coluna A última coluna armazena um total armazena um total acumalado na acumalado na linha, e não deve linha, e não deve ser incluída no ser incluída no cálculo.cálculo.

41

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema FF

Page 23: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

 19624293070397131272933SÃO PAULO

1962 16494023500913892100SALVADOR

4291649 3473437428053250RIO DE JANEIRO

307040233473 90148654397PORTO VELHO

397150094374901 57635298MANAUS

31271389280548655763 1611FORTALEZA

293321003250439752981611 BELÉM

BELÉ

M

FOR

TA

LEZ

A

MA

NA

US

PO

RTO

V

ELH

O

RIO

DE

JAN

EI R

O

SA

LVA

DO

R

O P

AU

L O

Fonte: DENIT

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EE

Page 24: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

1.1. Construir um algoritmo que leia a tabela Construir um algoritmo que leia a tabela anterior e informe ao usuário a distância entre anterior e informe ao usuário a distância entre duas cidades fornecidas por ele, até que ele duas cidades fornecidas por ele, até que ele forneça duas cidades iguais (origem e destino).forneça duas cidades iguais (origem e destino).

40

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EE

Page 25: Algoritmos e Estruturas de Dados II IEC013 Linguagem C ... · Vetores e Matrizes na Linguagem C O tamanho de um vetor ou matriz é pré-definido, ou seja, após a compilação, não

Construir um algoritmo que permita ao usuário Construir um algoritmo que permita ao usuário informar várias cidades, até inserir “informar várias cidades, até inserir “xxxx”, e que ”, e que imprima a distância total para cumprir todo o imprima a distância total para cumprir todo o percurso especificado entre as cidades percurso especificado entre as cidades fornecidas.fornecidas.

41

Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EE