Buscar

Parte 9 - Vetores e Matrizes e Estruturas (PUC)

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 26 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 26 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 26 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

Prof. Edson J. R. Justino
Prof. Claudio Carvilhe
Parte 9 - Lab
Pontifícia Universidade Católica do Paraná - PUCPR
VETORES
DeclaraDeclaraçção de Vetoresão de Vetores
�� Vetores SimplesVetores Simples
�� Vetores MultidimensionaisVetores Multidimensionais
Declaração de Vetores
Em C, os vetores são declarados da seguinte forma:Em C, os vetores são declarados da seguinte forma:
tipotipo nome [nome [tamanhotamanho];];
tipotipo
•• Pode ser qualquer tipo de dado, simples ou composto.Pode ser qualquer tipo de dado, simples ou composto.
Ex.: Ex.: int, int, charchar, etc, etc
•• nomenome
•• ÉÉ o nome que iro nome que iráá representar o conjunto de varirepresentar o conjunto de variááveis;veis;
•• tamanhotamanho
••ÉÉ o no núúmero de elementos do vetor.mero de elementos do vetor.
Ex.: Ex.: charchar mensagem[10];mensagem[10];
int int n_ocorren_ocorre[20[20];
Inicializando os vetores com valores
Se quisermos declarar um vetor numSe quisermos declarar um vetor numéérico o qual jrico o qual jáá sabemos sabemos 
quais vão ser os valores iniciais de cada posiquais vão ser os valores iniciais de cada posiçção basta ão basta 
utilizarmos a sintaxe:utilizarmos a sintaxe:
tipo nome[tamanho] = { Valor 1a positipo nome[tamanho] = { Valor 1a posiçção, Valor 2a. ão, Valor 2a. 
posiposiçção, ... , valor posião, ... , valor posiçção tamanho ão tamanho -- 1};1};
Exemplo:Exemplo:
int int n_tesn_tes[[22] = {] = {1,21,2};};
neste neste úúltimo caso teremos os seguintes elementos:ltimo caso teremos os seguintes elementos:
n_tesn_tes[0] = 1[0] = 1
n_tesn_tes[1] = 2[1] = 2
Inicializando os vetores com valores
int n_tes[2] = {1,2};
Ou
int n_tes[ ] = {1,2};
.
.
.
.
.
.
Memória
N_tes[0] 0100
0101
0001
0102
0103
0104
n
1
2
N_tes[1]
Inicializando os vetores com valores
No caso de um vetor de No caso de um vetor de caracterescaracteres::
char char men[men[55] = ] = ““abcabc ““;;
neste caso teremos os seguintes valores:neste caso teremos os seguintes valores:
men[0] = `a`men[0] = `a`
men[1] = `b`men[1] = `b`
men[2] = `c`men[2] = `c`
men[3] = ` `men[3] = ` `
men[4] = `men[4] = `\\0`0`
ObservaObservaççãoão: : O O ‘‘\\00’’ ouou ‘’‘’ representamrepresentam o o fimfim de de umauma cadeiacadeia de de carecterescarecteres..
Inicializando os vetores com valores
char men[5] = “abc “;
Ou
char men[ ] = “abc “;
Ou
char men[5] = {‘a’,’b’,’c’};
Ou
char men[ ] = {‘a’,’b’,’c’};
.
.
.
.
.
.
Memória
men[0] 0100
0101
0001
0102
0103
0104
a
b
c
\0
\0
men[1]
men[2]
men[3]
men[4]
Inicializando os vetores com valores
Não Não éé obrigatobrigatóório declarar todas as posirio declarar todas as posiçções do vetor na ões do vetor na 
inicializainicializaççãoão, como podemos ver no exemplo abaixo:, como podemos ver no exemplo abaixo:
Ex.:Ex.: int num[4] = {1,2};int num[4] = {1,2};
num[0] = 1num[0] = 1
num[1] = 2num[1] = 2
num[2] = 0num[2] = 0
num[3] = 0num[3] = 0
Exemplo de Vetor Simples
#include <stdio.h>
void main( ){
int i, quad[10];
for (i = 0; i < 10; i++)
quad[i] = i * i;
for (i = 0; i < 10; i++)
printf("quadrado de %d = %d\n", i, quad[i]);
}
Exercícios Propostos
� 1) Dado vetor CRR de caracteres abaixo. Elabore um pgm em C que implemente o algoritmo abaixo
○ CRR ! U O T R E C A
InInííciocio
caracterecaractere
crrcrr[8]={!,U,O,T,R,E,C,A};[8]={!,U,O,T,R,E,C,A};
intint auxaux, i;, i;
ParaPara ii dede 1 1 atatéé 33 passo passo 11
auxaux <<-- crrcrr[i];[i];
crrcrr[i] <[i] <-- crrcrr[7 [7 –– i];i];
crrcrr[7 [7 –– i] <i] <-- auxaux;;
FimFim--parapara
auxaux <<-- crrcrr[0];[0];
crrcrr[0] <[0] <-- crrcrr[7];[7];
crrcrr[7] <[7] <-- auxaux;;
Imprima (Imprima (crrcrr););
FimFim
Exercícios Propostos
� 2) Elabore um pgm em C que 
implemente o seguinte 
algoritmo
InInííciocio
realreal x, v[5];x, v[5];
intint I;I;
v[0] <v[0] <-- 1;1;
v[1] <v[1] <-- 3;3;
v[2] <v[2] <-- 0;0;
v[3] <v[3] <-- 2;2;
v[4] <v[4] <-- 4;4;
x <x <-- v[0] + v[4];v[0] + v[4];
ImprimaImprima (x);(x);
x <x <-- v[1] v[1] –– v[4];v[4];
ImprimaImprima (x);(x);
x <x <-- v[3] * v[0] v[3] * v[0] -- x;x;
ImprimaImprima (x);(x);
I <I <-- 2; 2; 
x <x <-- v[I];v[I];
ImprimaImprima (x);(x);
x <x <-- v[I]/v[v[0]];v[I]/v[v[0]];
ImprimaImprima (x);(x);
FimFim
Exercícios Propostos
� 3) Elabore um pgm que conte a quantidade de incidências 
de um caractere específico em uma cadeia de caracteres. A 
cadeia e o caractere devem ser informados como entrada. 
� 4) Elabore um pgm em C para concatenar duas cadeias de 
caracteres (A e B) lidas do teclado. Ao final imprima as duas 
cadeias e a cadeia resultante.
� 5) Construa um pgm que, a partir de uma string informada 
pelo usuário, indique se a mesma contém apenas caracteres 
maiúsculos (de ‘A’ até ‘Z’). Dica: A letra ‘A’ têm código ASCII 
= 65. A letra ‘Z’ tem código ASCII = 90.
� 6) Construa um pgm que, a partir de uma string informada 
pelo usuário, indique se o usuário digitou um INTEIRO 
POSITIVO válido (limitado a 5 dígitos). Dica: O número 0 
(zero) têm código ASCII = 48. O número 9 código ASCII = 
57.
� 7) Modifique o exercício anterior, possibilitando que o 
usuário digite um inteiro (zero, positivo ou negativo).
Vetores Multidimensionais
Em C, podemos simular vetores com qualquer nEm C, podemos simular vetores com qualquer núúmero de mero de 
dimensões, sem nos preocuparmos com a forma como isto dimensões, sem nos preocuparmos com a forma como isto éé
feito.feito.
Ex:Ex: charchar nomes[nomes[22][] = { ][] = { ““joãojoão vaivai””, , ““mariamaria nãonão”” };};
int int matriz[matriz[22][][33] = { {1,2,3}, {4,5,6} };] = { {1,2,3}, {4,5,6} };
Um vetor de duas dimensões nada mais Um vetor de duas dimensões nada mais éé do que uma do que uma 
Matriz.Matriz.
intint matriz [matriz [numero_de_linhasnumero_de_linhas][][numero_de_colunasnumero_de_colunas];];
Vetores Multidimensionais
int men[2][3] = { {1,2,3}, {4,5,6} };
.
.
.
.
.
.
Memória
men[0][0] 0100
0101
0001
0102
0103
0104
1
2
3
4
5
men[0][1]
men[0][2]
men[1][0]
men[1][1]
01056men[1][2]
Exemplo 001
/********************************************
Exemplo de Vetor Multidimensional 
********************************************/
#include <stdio.h>
void main( ){
int i;
char nome[5][10] = { "Carmen“ ,
"Ricardo", 
"Alexandre",
"Ana Paula", 
"Eduardo”
};
for (i = 0; i < 5; i++) {
printf("nome : ");
printf("%s\n", nome[i]);
}
}
Vetores Multidimensionais
Vetores Multidimensionais
Exemplo 02
/********************************************
Exemplo de Vetor Multidimensional
********************************************/
#include <stdio.h>
void main( ){
int i,j;
int matriz[5][5] = { {1,2,3,4,5}, 
{1,2,3,4,5}, 
{1,2,3,4,5}, 
{1,2,3,4,5},
{1,2,3,4,5}
};
for (i = 0; i < 5; i++) {
for (j=4; j>=0;j--)
printf("%d ", matriz[i][j]);
printf(“\n”);
}
}
Exercícios Propostos
� 1) Elabore um pgm. em C 
para o seguinte algoritmo
InInííciocio
intint m1m1[3][2];[3][2];
intint i, j;i, j;
m1m1[0][0] <[0][0] <-- 1;1;
m1m1[0][1] <[0][1] <-- 2;2;
m1m1[1][0] <[1][0] <-- 3; 3; 
m1m1[1][1] <[1][1] <-- 4;4;
m1m1[2][0] <[2][0] <-- 5; 5; 
m1m1[2][1] <[2][1] <-- 6;6;
ImprimaImprima ((m1m1););
parapara ii dede 0 0 atatéé 11
parapara j j dede 0 0 atatéé 22
imprimaimprima((m1m1[j][i]);[j][i]);
fimfim--parapara
fimfim--parapara
FimFim
Exercícios Propostos
� 2) Elabore um pgm. em 
C para o seguinte 
algoritmo
InInííciocio
intint m1m1[3][4];[3][4];
caracterecaractere n1n1[2][2];[2][2];
intint i, j;i, j;
j <j <-- 1;1;
parapara i i dede 0 0 atatéé 22
m1m1[i][j] <[i][j] <-- 2;2;
m1m1[i][[i][j+2j+2] <] <-- 2;2;
m1m1[i][j[i][j--1]<1] <-- 1; 1; 
m1m1[i][[i][j+1j+1] <] <-- 1;1;
fimfim--parapara
para para ii dede 0 0 atatéé 11
para para j j dede 0 0 atatéé 11
sese i = j i = j entãoentão
n1n1[i][j] <[i][j] <-- ‘‘AA’’;;
senãosenão
n1n1[i][j] <[i][j] <-- ‘‘ZZ’’;;
fimfim--sese
fimfim--parapara
fimfim--parapara
ImprimaImprima ((m1m1, n1);, n1);
FimFim
Exercícios Propostos
� 3) Elabore um 
pgm. em C para 
o seguinte 
algoritmo
InInííciocio
intint i, j;i, j;
caracterecaractere m1m1[4][4]= {{O,Q,*,I}, {E,R,E,S}, {R,E,U,S},[4][4]= {{O,Q,*,I}, {E,R,E,S}, {R,E,U,S},
{A,*,A,S}};{A,*,A,S}};
caractere caractere auxaux;;
parapara i i dede 0 0 atatéé 3 3 passo passo 11
parapara j j dede i+1i+1 atatéé 3 3 passo passo 11
auxaux <<-- m1m1[i][j];[i][j];
m1m1[i][j] <[i][j] <-- m1m1[j][i];[j][i];
m1m1[j][i] <[j][i] <-- auxaux; ; 
fimfim--parapara
fimfim--parapara
auxaux <<-- m1m1[0][0];[0][0];
m1m1[0][0] <[0][0] <-- m1m1[3][3];[3][3];
m1m1[3][3] <[3][3] <-- auxaux;;
auxaux <<-- m1m1[1][1];[1][1];
m1m1[1][1] <[1][1] <-- m1m1[2][2];[2][2];
m1m1[2][2] <[2][2] <-- auxaux; ; 
ImprimaImprima ((m1m1););
FimFim
Exercícios Propostos
� 4) Elaborar um pgm. em C que leia uma matriz de 4x5 
elementos inteiros e some os elementos de cada linha 
gerando um vetor SOMALINHA. Em seguida, somar os 
elementos do vetor somalinha na variável TOTAL. Ao 
final, imprima a matriz, o vetor e a variável total.
� 5) Elaborar um pgm. em C que leia duas matrizes reais 
de dimensão 3x5, calcule e imprima a soma das matrizes.
� 6) Escreva um pgm. em C que:
� Leia uma matriz 20x20 de elementos reais;
� Divida cada elemento de uma linha da matriz pelo 
elemento da diagonal principal desta linha;
� Imprima a matriz assim modificada.
Estrutura
� Sintaxe
� Normalmente a estrutura 
recebe um nome que 
passa a identificar um 
novo tipo de dado 
composto , 
correspondente ao que 
foi definido. 
� Após ter sido efetuada a 
declaração, um novo tipo
passa a existir. Neste 
instante, basta declarar 
as variáveis para o tipo 
definido.
Ex:
struct funcionario {
char nome[30];
char endereco[40];
char conjuge[30];
int n_depen;
char cargo;
float salario;
char data_adm[10];
};
Ex:
struct funcionario analista,
programador ;
Estrutura
� Para nos referirmos ao campos das variáveis 
basta referenciarmos a variável e seu campo.
Ex:
analista.n_depen = 4;
programador.salario = 800.00;
Ex:
struct funcionario {
char nome[30];
char endereco[40];
char conjuge[30];
int n_depen;
char cargo;
float salario;
char data_adm[10];
};
Ex:
struct funcionario analista,
programador ;
/*****************************************
Exemplo usando estrutura
*****************************************/
#include <stdio.h>
struct reg {
int codigo;
float valor;
};
int main() {
struct reg tabela[5];
int i,c;
float v;
for(i=0;i<=4;i++){
printf("codigo:");scanf("%d",&tabela[i].codigo);fflush(stdin);
printf("valor:");scanf("%f",&tabela[i].valor);fflush(stdin);
}
for(i=0;i<=4;i++)
printf("codigo: %d valor:%8.2f\n",tabela[i].codigo,tabela[i].valor);
system("PAUSE");
return(0);
}
Estrutura Composta
� Neste caso, teríamos 
uma estrutura dentro 
da outra, o que é uma 
prática muito comum 
no tratamento de 
dados em 
computação.
� Agora, para nos 
referenciarmos ao 
campo ano da 
estrutura data_adm, 
utilizaríamos:
Ex:
struct data {
int dia;
int mes;
int ano;
};
struct funcionario {
char nome[30];
char endereco[40];
struct data data_adm;
char cargo;
};
Referência à variável
analista.data_adm.ano
Declaração de variável
struct funcionario analista
/*****************************************
Exemplo usando estrutura composta
****************************************/
#include <stdio.h>
struct data {
int dia;
int mes;
int ano;
};
struct reg {
int codigo;
struct data data_c;
};
int main() {
struct reg tabela[5];
int i;
for(i=0;i<=4;i++) {
printf("codigo:");scanf("%d",&tabela[i].codigo);fflush(stdin);
printf("dia:");scanf("%d",&tabela[i].data_c.dia);fflush(stdin);
printf("mes:");scanf("%d",&tabela[i].data_c.mes);fflush(stdin);
printf("ano:");scanf("%d",&tabela[i].data_c.ano);fflush(stdin);
}
for(i=0;i<=4;i++)
printf("codigo: %d data: %d/%d/%d\n",tabela[i].codigo, tabela[i].data_c.dia,tabela[i].data_c.mes,
tabela[i].data_c.ano);
system("PAUSE");
return(0);
}
Exercícios
� 1) Elabore um pgm. em c para ler e imprimir um vetor 
com 10 registros de funcionário com a seguinte 
estrutura:
struct funcionario {
char nome[30];
char endereco[40];
char conjuge[30];
int n_depen;
char cargo;
float salario;
struct data data_adm;
};
struct data {
int dia;
int mes;
int ano;
};

Outros materiais