algoritmos e estruturas de dados ii iec013 linguagem c ... · vetores e matrizes na linguagem c o...
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
QuestõesQuestões
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
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
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
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
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
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
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
SÃ
O P
AU
L O
Fonte: DENIT
Vetores e Matrizes na Linguagem CVetores e Matrizes na Linguagem C:: Problema :: Problema EE
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
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