Buscar

Aula 02 Estrutura de Dados

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

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

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ê viu 3, do total de 22 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

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

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ê viu 6, do total de 22 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

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

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ê viu 9, do total de 22 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

Prévia do material em texto

Prof. MSc Orlei José Pombeiro 
 
1 
 
Projeto Graduação 
Curso Análise de Sistemas 
Disciplina Estrutura de Dados 
Tema Aula 02 
Professor Orlei José Pombeiro 
Coordenador Edson Pedro Ferlin 
Tutor 
Objetivos 
Gerais 
• Trabalhar os conceitos de estruturas unidimensionais e 
multidimensionais, criando novos tipos de dados. 
Específicos 
• Vetores 
• Matrizes 
• Registros 
 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
2 
Conversa Inicial 
Quando interpretamos Vetores e Matrizes como Estruturas, é pelo fato que estamos 
agrupando em uma “única nova variável” um conjunto de várias variáveis de um determinado 
tipo único. Por exemplo, se precisamos armazenar a idade de uma pessoa, declaramos uma 
variável do tipo “inteiro” que pode se chamar “idade”. Mas se precisamos armazenar a idade 
de uma turma de 50 alunos, fica inviável declararmos 50 variáveis, para este caso declaramos 
um único “vetor” com “50 posição de inteiros”. 
Outra possibilidade de criarmos novos tipos de dados é a declaração de Registros. 
Registros são estruturas que podemos declarar com vários tipos de dados distintos. Deste 
modo, em uma “única nova variável” podemos colocar, por exemplo, o nome, e cpf e o email 
de uma determinada pessoa. E se associarmos com vetores, poderemos ter os dados 
cadastrais de ‘N’ pessoas em uma única vaiável. 
 Vídeo 1 – Conversa inicial 
 
Contextualização 
A representação de um vetor física pode ser visualizada na imagem a seguir, onde 
temos um possível vetor de 10 posições. Mas atentos para um fato muito importante, o 1º 
elemento de um vetor esta na posição ‘Zero’, o 2º elemento do vetor esta na posição ‘Um’, e 
assim sucessivamente. E por que isso? Por que quando declaramos um vetor, o endereço de 
memória deste vetor é o endereço do primeiro elemento, assim todos os demais são inseridos 
a partir deste primeiro endereço. 
 
Elemento: 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 
Índice: 0 1 2 3 4 5 6 7 8 9 
Valores 
no Vetor: 
6 8 2 13 21 5 9 0 63 7 
 
 
Deste modo, o “Primeiro elemento” do vetor, que é o “Número 6”, foi inserido no 
“Índice 0” do vetor. Já o “Valor 13”, foi inserido no “Índice 3”, que é a posição 4 do vetor. 
Isto para uma turma, e se se tivermos 10 turmas? Para este caso utilizamos o conceito 
 
 
Prof. MSc Orlei José Pombeiro 
 
3 
de Matriz, que nada mais é que a relação “linhas por colunas”. Então se necessitamos levantar 
as idades de 10 turmas com 50 alunos cada, criamos uma única matriz com 10 linhas e 50 
colunas do tipo “Inteiro”. Multiplicando 10 x 50, significa que podemos armazenar 500 idades. 
A representação física pode ser visualizada na imagem a seguir, onde temos uma possível 
matriz de 10 colunas e 4 linhas, totalizando 40 posições de armazenamento de dados. 
Similar ao conceito de vetor onde o primeiro elemento esta na posição ‘0’, aqui 
também trabalhamos com o fato que o primeiro elemento da matriz esta na posição ‘0 0 ’, ou 
seja na Linha ‘0’ e Coluna ‘0’. 
Para referenciarmos onde esta, ou foi armazenado o valor na matriz, utilizamos a 
nomenclatura “Linha” e “Coluna”. Assim, dizemos que o “Número 4” esta armazenado na 
“Linha 0 e Coluna 0”, posição (0, 0) da matriz. Já o “Número 13” esta na “Linha 1 Coluna 4”, 
posição (1, 4) da matriz. E assim sucessivamente. 
 
Linhas\Colunas 0 1 2 3 4 5 6 7 8 9 
0 4 23 
1 13 
2 7 53 
3 32 91 
 
 
Tanto no caso de vetor quando de matriz, quando declarados, eles somente pode ser 
de um único tipo, seja de números inteiros ou reais, seja de caracteres ou strings. Outro 
questão, é que não podemos declarar um vetor ou matriz onde cada posição é de um tipo 
diferente de dado. 
Outra questão a ser levantada aqui com relação a Vetores e Matrizes, diz respeito as 
literaturas. Algumas literaturas não abordam a nomenclatura “Vetor”. Para referenciar o Vetor 
utilizam a nomenclatura “Matriz Unidimencional”, ou seja de uma dimensão. Já a “Matriz” 
com mais de uma dimensão e referenciada como “Matriz Multidimencional”, isto por que ela 
pode ter duas ou mais dimensões. Sim, uma matriz pode ter quantas dimensões quisermos 2, 
3, 4, 5. O difícil é conseguir abstrair a quantidade e não se perder na hora de escrever as linhas 
de código. 
Um detalhe importante, é que quando declaramos em um programa uma Matriz, os 
espaços reservados na memória para os elementos desta Matriz estão em sequencia, seja qual 
dimensão tenhamos criado. Sendo que o endereço desta Matriz passa a ser o endereço de 
memória do primeiro elemento da matriz. Para esta aula vamos trabalho com o conceito de 
 
 
Prof. MSc Orlei José Pombeiro 
 
4 
“Vetor” para matrizes de uma dimensão e “Matriz” para matrizes com duas ou mais 
dimensões. 
Mas há casos onde desejamos armazenar tipos de dados diferentes para uma turma de 
30 pessoas por exemplo. Podemos querer armazenar o nome, a idade, a altura e o peso, por 
exemplo. Para estes casos temos a possibilidade de criar Registros. E associando a Vetores, 
podemos criar “Vetores de Registros”. 
Podemos definir Registros como “variáveis de tipos diferentes de dados agrupadas 
em um único novo tipo de variável”. 
 
 
 
Ainda sobre Registros, na literatura é possível encontrar as nomenclaturas “Estruturas” 
e “Variáveis Compostas Heterogêneas”, para referenciar “Registros”. 
 Vídeo 2 – Contextualização 
 
 
Tema 1 - Vetor 
Vamos começar analisando o Vetor, onde cada elemento (variável) esta em sua 
posição previamente definida. Vamos imaginar uma fila de alunos de uma turma com 30 
alunos na sala, onde cada aluno possui uma idade que pode ser a mesma ou não de seus 
demais colegas da fila. Se quisermos armazenar em um Vetor de números inteiros a idade 
destes alunos em um algoritmo e obtermos a média das idades, fazemos assim: 
 
Vetor com 30 posições 
 
 
 
 
 
 
 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
5 
main() 
{ int x, soma, idade[30]; 
 soma = 0; 
 
 for(x=0; x<30; x++) 
{ printf(“Informe a idade do %d º aluno:”, x+1); 
 scanf(“%d”, &idade[x]); 
 soma += idade[x]; 
} 
 
printf(“A média de idade dos alunos é %f”, soma/30 ); 
} 
 
 
 
Vetor com 30 posições 
18 16 17 18 19 17 17 18 20 23 16 20 20 .......... 
 
 
 
Utilizado somente variáveis inteiras, uma variável ‘x’ para contar a quantidade 
utilizada, a variável ‘soma’, para conter a somatória das idades e por último uma variável 
‘idade’ que é declarada como com vetor com 30 posições. A variável soma, como vai conter o 
somatório dos valores, deve ser inicializada com ‘0’. 
Observar que a estrutura de repetição ‘for’ é executada 30 vezes, e que a cada loop é 
solicitada a idade, armazena em uma posição específica do vetor e já é acrescentada a variável 
que vai conter a somatória total. Quando solicitamos a idade do aluno, utilizamos a variável ‘x’ 
para nos auxiliar no número do aluno, ele é somada de uma unidade, pois iniciou em zero (ou 
seja sempre com um a menos). No vetor utilizamos esta variável ‘x’ para posicionar no vetor 
cada idade de acordo com a ordem de entrada. Pois no primeiro loop o x vale ‘0’, no segundo 
ele passa a valer ‘1’, no terceiro ‘2’ e assim sucessivamente devido ao incremento de uma 
unidade que ocorre no comando “x++”, até atingir a condição de fim do loop “x<30”. Ao final 
apresentamos o resultado da soma dividindo direto por 30 pois sabemos que estraram 
exatamente 30. 
 Vídeo 3 – Tema 1 
 
 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
6 
Tema 2 – Matriz 
Como ficaria a mesma situação para 10 turmas. Neste caso utilizamos matrizes. Pois 
assim, teremos em cada linha (com30 colunas) uma turma. 
 
Matriz de 10 linhas e com 30 colunas 
 
 
 
 
 
 
 
 
 
 
 
 
main() 
{ int x, y, idade[10][30]; 
 int soma[10] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }; 
 
 for(y=0; y<10; y++) 
{ for(x=0; x<30; x++) 
{ printf(“Informe a idade do %d º aluno da turma %d:”, x+1, y+1); 
 scanf(“%d”, &idade[y][x]); 
 soma[y] += idade[y][x]; 
} 
} 
 
for(y=0; y<10; y++) 
printf(“A média de idade dos alunos da turma %d é %f \n”, y+1, soma[y]/30 ); 
} 
 
 
Matriz de 10 linhas e com 30 colunas 
18 19 17 18 25 17 22 18 22 16 18 18 25 .... 
22 18 18 21 17 21 19 19 19 31 16 17 27 .... 
24 16 17 16 18 19 19 18 18 18 25 21 19 .... 
17 22 18 17 21 17 18 16 17 22 27 19 25 .... 
21 25 16 16 18 24 25 25 22 18 17 21 19 .... 
19 19 19 16 18 19 21 18 17 22 18 16 16 .... 
19 18 31 25 21 18 18 21 21 21 22 22 16 .... 
19 27 18 21 19 22 31 18 22 18 18 19 21 .... 
27 17 21 17 19 21 22 17 22 21 18 25 16 .... 
25 18 18 16 17 19 25 18 16 18 17 21 19 .... 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
7 
Nosso vetor idade, agora passa a ser uma matriz com duas dimensões e nossa variável 
soma que tinha o propósito de armazenar a somatória das idades da turma, agora passa a ser 
um vetor, pois precisamos de 10 somatórias distintas. Podemos observar que na declaração do 
vetor soma, já inicializamos com ‘0’ todos os elementos do vetor. 
Como temos uma matriz de duas dimensões e necessitamos passar por todas as linhas 
e colunas, agora precisamos de dois loops para percorrer a matriz. O primeiro ‘y’ nos auxiliará 
a percorrer as linhas, já o segundo ‘x’ continua a nos ajudar a percorrer as colunas. Observem 
que a cada nova linha, as colunas são novamente inicializadas com o índice ‘0’. Da mesma 
formar que utilizamos o ‘x’ para nos auxiliar a identificar o número do alunos que deve 
fornecer a idade, utilizamos a variável ‘y’ para nos auxiliar a identificar a turma que deve 
fornecer as respectivas idades. 
A somatória das idades de cada turma, agora estará em um vetor com 10 posições, 
mesmo número das turmas, onde cada posição conterá a somatória da respectiva turma. Para 
mostrar a média de cada turma agora, necessitamos de outro loop para percorrer o vetor das 
somatórias e mostrar um a um. 
 Vídeo 4 – Tema 2 
 
Tema 3 - Registro 
E como ficaria se resolvêssemos trabalhar não só com a idade, mas com o peso e a 
altura do aluno também? Em um primeiro momento podemos pensar em ter 3 vetores, ou 3 
matrizes, uma para cada tipo de dado que necessitamos. Mas vamos ver como funciona 
utilizando “Registros”. 
Registros são estruturas que criamos em programação e a esta estrutura criada 
colocamos campos de diferentes tipos, de acordo com a nossa necessidade. Deste modo 
teremos “uma variável” que pode armazenar diferentes tipos de dados. 
 
 
 
Aqui também podemos associar o conceito de “Vetor” e de “Registro”, criando um 
“Vetor de Registros”. Onde em cada posição do Vetor, ou invés de termos um único valor (por 
exemplo, um número inteiro), teremos um registro com todos os campos que nos interessa. 
 
 
Prof. MSc Orlei José Pombeiro 
 
8 
 
..... 
 
 Para trabalharmos com registros, temos que primeiro declarar esta nova estrutura e 
depois declarar variáveis para trabalhar com esta estrutura. Lembrando que somente variáveis 
é que podem armazenar conteúdos. Para criarmos uma nova Estrutura de Dados, temos que 
declarar uma “Struct” ou “Registro” (é possível encontrar as duas nomenclaturas na literatura). 
Há apenas uma formar de declarar a estrutura, mas podemos declarar variáveis desta 
estrutura de diferentes modos. 
A declaração da nova estrutura deve vir precedida da palavra “struct” seguida do 
nome que se vai dar a estrutura, no nosso caso declaramos como “Dados”. Ela é limitada por 
chaves { } e dentro colocamos os tipos da dados que nos interessa. Podemos colocar inclusive 
outras estruturas previamente criadas. 
Uma coisa é criar a nova estrutura, outra coisa é criar variáveis deste novo tipo. Sim, 
pois após ser criada, passa a ser um tipo como é o “int” o “float” a “string”. Então temos que 
declarar variáveis deste novo tipo, podendo inclusive ser vetores e matrizes. Para o nosso caso 
criamos a variável “dados”, que passa a ser um vetor de 50 posições do tipo “Aluno”. Como 
são 3 dados que queremos a média, criamos também 3 variáveis para conter estas somatórias 
para a realização do cálculo da média. 
 
Modo 1 Modo 2 
struct Dados { struct Dados { 
 char nome[45]; char nome[45]; 
int idade; int idade; 
 float peso, altura; float peso, altura; 
}; } pessoa, vet_pessoas[10]; 
 
struct Dados pessoa, vet_pessoas[10]; 
 
 
 Aqui declaramos primeiro a estrutura e depois declaramos variáveis para trabalhar 
com esta estrutura. A estrutura vai possui um campo nome do tipo “char”, um campo idade do 
tipo “int” e dois campos do tipo “float”, uma para armazenar o peso e outro para armazenar a 
altura. 
 Como estrutura é um novo “tipo de dado”, temos que criar variáveis para trabalhar 
 
 
Prof. MSc Orlei José Pombeiro 
 
9 
com este novo tipo de dado. No primeiro modo, a declaração da variável esta fora da 
estrutura, deste modo temos que colocar a frente do nome da variável “pessoa” o tipo de 
dado que ela vai poder receber, no caso “pessoa”. Já no segundo modo de declaração de 
estrutura, podemos colocar já na estrutura as variáveis que vão trabalhar com ela. Estas 
devem ficar entre o “fecha chaves” e o “;”. 
 O diferencial aqui esta em como é trabalho com os dados desta estrutura. Para 
armazenar os dados em um registro, utilizamos o ponto (.) para indicar em qual campo vamos 
armazenar os dados. 
 
Ex.: gets(pessoa.nome); 
 pessoa.idade = 37; 
 pessoa.peso = 73; 
 
 
Para o caso de “vetores de registros”, temos que informar também em qual posição do 
vetor serão armazenados os dados. Podemos aqui imaginar que cada posição se refere aos 
dados de uma pessoa distinta. 
 
Ex.: 
gets(vet_pessoa[2].nome); strcpy(pessoa[7].nome, ‘Alberto Roberto’); 
vet_pessoa[2].idade = 37; vet_pessoa[7].idade = 21; 
vet_pessoa[2].peso = 73; vet_pessoa[7].peso = 65; 
 
 
 Vídeo 5 – Tema 3 
 
 
 
 
 
 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
10 
Aplicação 
 Vamos colocar a seguinte necessidade: “Criar um programa que armazena a idade, o 
peso e a altura de 50 pessoas. Após armazenado os dados, informar quantos estão com o peso 
acima da média deste grupo”. 
 
main() 
{ struct Dados { 
 int idade; 
 float peso, altura; 
}; 
 
struct Dados pessoa[50]; 
int x, qtd_peso = 0; 
float media = 0; 
 
 for(x=0; x<50; x++) 
{ printf(“Informe a idade, a altura e o peso do %d º:”, x+1); 
 scanf(“%d %f %f”, pessoa[x].idade, pessoa[x].altura, pessoa[x].peso); 
 media += pessoa[x].peso; 
} 
media = media/50; 
 
 for(x=0; x<50; x++) 
if(pessoa[x].peso > media) 
 qtd_peso++; 
 
printf(“A quantidade de pessoas acima da média do peso é: %d”, qtd_peso ); 
} 
 
 
 Vídeo 6 – Aplicação Prática 
Síntese 
Nesta aula pudemos acompanhar a aplicabilidade dos vetores, matrizes e registros em 
estruturas computacionais. Pois é constante a necessidade de agrupamento de um mesmo 
tipo de dado para um conjunto de indivíduos ou objetos. Assim como o agrupamento de tipos 
diferentes de dados para conjuntos deindivíduos. 
 Vídeo 7 – Síntese 
 
 
Prof. MSc Orlei José Pombeiro 
 
11 
Exercícios 
 
1. Elaborar um programa que leia, some e imprima o resultado da soma entre dois 
vetores inteiros de 50 posições; 
main() 
{ int vet1[50], vet2[50], x; 
 
 for( x=0; x< 50; x++) 
 { printf(“Informar o %dº valor do Vetor 1: ”, x+1); 
 scanf(“%d” , &vet1[x]; 
 printf(“Informar o %dº valor do Vetor 2: ”, x+1); 
 scanf(“%d” , &vet2[x]; 
} 
 for( x=0; x< 50; x++) 
 printf(“O valor da soma dos elementos do vetor é: %d \n”, vet1[x]+vet2[x]); 
 
} 
 
 
 
 
2. Faça um programa que carregue 2 vetores de 10 elementos numéricos cada um e 
imprima um vetor resultante de intercalação destes 2 vetores; 
main() 
{ int vet1[10], vet2[10], vetR[20], x; 
 
 for( x=0; x< 10; x++) 
 { printf(“Informar o %dº valor do Vetor 1: ”, x+1); 
 scanf(“%d” , &vet1[x]; 
 printf(“Informar o %dº valor do Vetor 2: ”, x+1); 
 scanf(“%d” , &vet2[x]; 
} 
 for( x=0; x< 10; x++) 
 { vetR[2 * x] = vet1[x]; 
 vetR[(2 * x) + 1] = vet2[x]; 
} 
 for( x=0; x< 20; x++) 
 printf(“O valor do vetor resultante é: %d \n”, vetR[x]); 
 
} 
 
 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
12 
3. Faça um programa que carregue 1 vetor de 6 elementos numéricos inteiros. Calcule e 
imprima a quantidade de números pares e impares; 
main() 
{ int vet[6], x, par=0; 
 
 for( x=0; x< 6; x++) 
 { printf(“Informar o %dº valor: ”, x+1); 
 scanf(“%d” , &vet[x]; 
} 
 for( x=0; x< 6; x++) 
 if(vet[x] % 2) == 0) 
 par++; 
 
 printf(“A quantidade de números pares é: %d”, par); 
 printf(“A quantidade de números ímpares é: %d”, 6-par); 
 
} 
 
 
4. Faça um programa que carregue um vetor de 9 elementos numéricos inteiros. Calcule 
e imprima os números primos e suas respectivas posições; 
main() 
{ int vet[9], x, y, flag; 
 
 for( x=0; x< 9; x++) 
 { printf(“Informar o %dº número: ”, x+1); 
 scanf(“%d” , &vet[x]; 
} 
 for( x=0; x< 9; x++) 
 { flag=1; 
 for(y=2; y < vet[x]; y++) 
 if( vet[x] % y) == 0) 
 flag = 0; 
 if(flag) 
 printf(“O número %d que esta na posição %d é primo\n”, vet[x], x); 
 } 
 
} 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
13 
 
5. Faça um programa que receba a temperatura média de cada mês do ano e armazene 
essas temperaturas em um vetor. Calcule e imprima a maior e a menor temperatura 
do ano e em que mês estas temperaturas aconteceram; 
main() 
{ float temp[12], maior=-100, menor=100; 
 int x, mes_maior, mes_menor; 
 char mes[13] = {“”, “Janeiro” , “Fevereiro”, “Março”, “Abril”, “Maio”, “Junho”, “Julho”, 
“Agosto”, “Setembro”, “Outubro”, “Novembro”, “Dezembro” }; 
 
 for( x=1; x< 13; x++) 
 { printf(“Informar a temperatura de %s: ”, mes[x]); 
 scanf(“%f” , &temp[x-1]); 
 
 if(temp[x-1] > maior) 
 { maior = temp[x-1]; 
 mes_maior = x-1; 
 } 
 if(temp[x-1] < menor) 
 { menor = temp[x-1]; 
 mes_menor = x-1; 
 } 
} 
 printf(“A maior temperatura foi em %s\n”, mes[mes_maior]); 
 printf(“A menor temperatura foi em %s\n”, mes[mes_menor]); 
 
} 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
14 
6. Faça um programa que receba a quantidade de peças vendidas por cada vendedor e 
armazene essas quantidades em um vetor. Receba também o preço da peça vendida 
de cada vendedor e armazene esses preços em outro vetor. Existem apenas 10 
vendedores, e cada vendedor pode vender apenas um tipo de peça, isto é, para cada 
vendedor existe apenas um preço. Calcule e imprima a quantidade total de peças 
vendida por todos vendedores e, para cada vendedor, calcule e imprima o valor total 
da venda, isto é, a quantidade de peças * o preço da peça; 
main() 
{ float preco[10]; 
 int quant[10], x, total=0; 
 
 for( x=0; x< 10; x++) 
 { printf(“Informar a quantidade e o preço unitário das peças vendidas pelo %dº 
vendedor\n ”, x+1); 
 scanf(“%d %f” , &quant[x], &preco[x]); 
 total += quant[x]; 
 } 
 
 for(x=0; x<10; x++) 
 printf(“A valor total das vendas do vendedor %d foi de %f\n”, x+1, quant[x] * 
preco[x]); 
 
 printf(“A quantidade total de peças vendidas foi %d\n”, total); 
 
} 
 
7. Faça um programa que receba as notas da primeira prova de 10 alunos e armazene 
essas notas em um vetor. Receba as notas da segunda prova de 10 alunos e armazene 
em outro vetor. Calcule e imprima a média entre essas duas notas de cada aluno; 
main() 
{ float nota1[10], nota2[10]; 
 int x; 
 
 for( x=0; x< 10; x++) 
 { printf(“Informar a 1ª e a 2ª nota do aluno %d: ”, x+1); 
 scanf(“%f %f” , &nota1[x], &nota2[x]); 
 } 
 for(x=0; x< 10; x++) 
 printf(“A media do aluno %d é %f\n”, x+1, (nota1[x] + nota2[x])/2); 
 
} 
 
 
Prof. MSc Orlei José Pombeiro 
 
15 
 
8. Faça um programa que receba a nota de 10 alunos e armazene essas notas em um 
vetor. Calcule e imprima: 
a. a média da classe; 
b. a quantidade de alunos aprovados, isto é, com a media >= a 7; 
c. a quantidade de alunos reprovados, isto é, com média < 7; 
main() 
{ float nota[10], media=0; 
 int x, apr=0; 
 
 for( x=0; x< 10; x++) 
 { printf(“Informar a nota do aluno %d: ”, x+1); 
 scanf(“%f” , &nota[x]); 
 } 
 
for( x=0; x< 10; x++) 
 { media += nota[x]; 
 if(nota[x] >= 7) 
 apr++; 
 } 
 
 printf(“A media da classe foi de %f\n”, media/10); 
 printf(“%d alunos foram aprovados\n”, apr); 
 printf(“%d alunos foram reprovados\n”, 10-apr); 
 
} 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
16 
9. Criar um algoritmo que, dado dois vetores inteiros de 20 posições, efetue as 
respectivas operações indicadas por um outro vetor de 20 posições de caracteres 
também fornecido pelo usuário, contendo as quatro operações aritméticas em 
qualquer combinação e armazenando os resultados em um quarto vetor; 
main() 
{ float resul[20]; 
 int num1[20], num2[20], x; 
 char oper[20]; 
 
 for( x=0; x< 20; x++) 
 { printf(“Para o %dº cálculo, informar 1º número, operador e 2º número\n ”, 
x+1); 
 scanf(“%d %c %d” , &num1[x], &oper[x], &num2); 
 } 
 
for( x=0; x< 20; x++) 
 switch(oper[x]) 
 { 
 case ‘+’: resul[x] = num1[x] + num2[x]; break; 
 case ‘-’: resul[x] = num1[x] - num2[x]; break; 
 case ‘*’: resul[x] = num1[x] * num2[x]; break; 
 case ‘/’: resul[x] = num1[x] / num2[x]; break; 
 } 
 
 printf(“A media da classe foi de %f\n”, media/10); 
 printf(“%d alunos foram aprovados\n”, apr); 
 printf(“%d alunos foram reprovados\n”, 10-apr); 
 
} 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
17 
10. Faça um programa que carregue valores inteiros positivos em uma matriz 3x3 e 
imprima o maior elemento dessa matriz; 
main() 
{ int mat[3][3], x, y, maior=0; 
 
 for( x=0; x< 3; x++) 
 for(y=0; y < 3; y++) 
 { printf(“Informe %dº valor\n ”, (x*3)+y+1); 
 scanf(“%d” , &mat[x][y]); 
 } 
 
 for( x=0; x< 3; x++) 
 for(y=0; y < 3; y++) 
 if(mat[x][y] > maior) 
 maior = mat[x][y]; 
 
 printf(“A maior elemento da matriz é %d”, maior); 
 
} 
 
 
11. Faça um programa que receba o estoque atual de 4 produtos (colunas) que estão 
armazenados em 4 armazéns (linhas) e coloque estes dados em uma matriz 5x4. Sendo 
que a última linha da matriz contém o custo de cada produto, calcule e imprima: 
a. a quantidade de itens armazenados em cada armazém; 
b. qual armazém possui maior estoque do produto 2; 
c. qual armazém possui menor estoque do produto 4; 
d. qual o custo total de cada produto; 
e. qual o custo total de cada armazém; 
main() 
{ int mat[5][4], x, y, soma, maior2=0, menor4=999999, arma_maior, arma_menor; 
 
 for( x=0; x< 4; x++) 
 for(y=0; y < 4; y++) 
 { printf(“Informe o estoque do %dº produto do armazém %d\n ”, y+1, 
x+1); 
 scanf(“%d” , &mat[x][y]); 
 } 
 
 
Prof. MSc Orlei JoséPombeiro 
 
18 
 
 for( y=0; y < 4; y++) 
 { printf(“Informe o preço do %dº produto”, y+1); 
 scanf(“%d”, mat[4][y]); 
} 
 
 for( x=0; x< 4; x++) 
 { soma = 0; 
 for(y=0; y < 4; y++) 
 soma += mat[x][y]; 
 printf(“O armazém %d possui %d itens\n ”, x+1, soma); 
 } 
 
for( x=0; x< 4; x++) 
 { if(mat[x][1] > maior2) 
 { maior2 = mat[x][1]; 
 arma_maior = x+1; 
 } 
 if(mat[x][1] < menor4) 
 { menor4 = mat[x][1]; 
 arma_menor = x+1; 
 } 
} 
 
printf(“O armazém %d possui o maior estoque do produto 2\n ”, arma_maior); 
printf(“O armazém %d possui o menor estoque do produto 4\n ”, arma_menor); 
 
for( y=0; y< 4; y++) 
{ soma = 0; 
 for(x=0; x<4; x++) 
 soma += mat[x][y]; 
 printf(“O custo total do produto %d é %d\n ”, y+1, soma*mat[5][y]); 
 } 
 
for( x=0; x< 4; x++) 
{ soma = 0; 
 for(y=0; y<4; y++) 
 soma += mat[x][y] * mat[5][y]; 
 printf(“O custo total do armazém %d é %d\n ”, x+1, soma); 
 } 
 
 
} 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
19 
12. Faça um programa que receba as vendas semanais (de um mês) de 5 vendedores de 
uma loja e armazene essas vendas em uma matriz. Calcule e imprima: 
a. total de vendas no mês de cada vendedor; 
b. total de vendas de cada semana (todos os vendedores juntos); 
c. total de vendas do mês; 
main() 
{ int vendas[5][4], x, y, total; 
 
 for( x=0; x< 5; x++) 
 for(y=0; y < 4; y++) 
 { printf(“Informe a venda da %dª semana do vendedor %d\n ”, y+1, x+1); 
 scanf(“%d” , &vendas[x][y]); 
 } 
 
 for( x=0; x< 5; x++) 
 { total=0; 
 for(y=0; y < 4; y++) 
 total += vendas[x][y]; 
 printf(“No mês o vendedor %d vendeu %d\n ”, x+1, total); 
 } 
 
 for( y=0; y< 4; y++) 
 { total=0; 
 for(x=0; x < 5; x++) 
 total += vendas[x][y]; 
 printf(“Na %d semana o total vendido foi de %d\n ”, y+1, total); 
 } 
 
 total=0; 
 for( x=0; x< 5; x++) 
 for(y=0; y < 4; y++) 
 total += vendas[x][y]; 
 
 printf(“O total de vendas no mês foi de %d\n ”, total); 
 
} 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
20 
13. Faça um programa que carregue uma matriz 4x4 com números reais, calcule e imprima 
a soma dos elementos da diagonal principal; 
main() 
{ float matriz[4][4], soma=0; 
 int x, y; 
 
 for( x=0; x< 4; x++) 
 for(y=0; y < 4; y++) 
 { printf(“Informe um número qualquer ”); 
 scanf(“%f” , &matriz[x][y]); 
 } 
 
 for( x=0; x< 4; x++) 
 soma += matriz[x][x]; 
 
 printf(“A soma dos elementos da diagonal principal é %f ”, soma); 
 
} 
 
14. Faça um programa que carregue em uma matriz 3x2 com números inteiros, calcule e 
imprima o maior elemento da matriz com sua respectiva posição, linha e coluna; 
main() 
{ int numeros[3][2], maior=0, posx, posy, x, y; 
 
 for( x=0; x< 3; x++) 
 for(y=0; y < 2; y++) 
 { printf(“Informe um número qualquer ”); 
 scanf(“%d” , &numero[x][y]); 
 } 
 
 for( x=0; x< 3; x++) 
 for(y=0; y < 2; y++) 
 if(numero[x][y] > maior) 
 { maior = numero[x][y]; 
 posx = x; 
 posy = y; 
 } 
 
 printf(“O maior número é o %d, e esta na linha %d e na coluna %d ”, maior, posx, 
posy); 
 
} 
 
 
Prof. MSc Orlei José Pombeiro 
 
21 
 
15. Criar um algoritmo que realize a multiplicação de duas matrizes 3x3. Lembrando da 
regra matemática para a multiplicação de matrizes, onde o valor do elemento da 
matriz resultante é o resultado da multiplicação da linha da primeira matriz pela 
coluna da segunda matriz. Ex.: R11 = (A11 * B11) + (A12 * B21) + (A13 * B31); 
main() 
{ int matizA[3][3], matizB[3][3], matizC[3][3], x, y; 
 
 printf(“Informe os números da Matriz A: ”); 
 for( x=0; x< 3; x++) 
 for(y=0; y < 3; y++) 
 { printf(“Elemento: %d - %d\n”, x, y); 
 scanf(“%d” , &matrizA[x][y]); 
 } 
 
 printf(“Informe os números da Matriz B: ”); 
 for( x=0; x< 3; x++) 
 for(y=0; y < 3; y++) 
 { printf(“Elemento: %d - %d\n”, x, y); 
 scanf(“%d” , &matrizB[x][y]); 
 } 
 
 for( x=0; x< 3; x++) 
 for(y=0; y < 3; y++) 
 matrixC[x][y] = 0; 
 
 for( x=0; x< 3; x++) 
 for(y=0; y < 3; y++) 
 matrixC[x][y] += (matrizA[x][y] * matrizB[y][x]); 
 
 for( x=0; x< 3; x++) 
 { for(y=0; y < 3; y++) 
 printf(“%d ”, matrizC[x][y]); 
 printf(“\n”); 
 } 
} 
 
 
 
 
 
 
Prof. MSc Orlei José Pombeiro 
 
22 
Referências 
Livros 
o MIZRAHI, Victorine Viviane; Treinamento em Linguagem C: módulo 1 e 2, Ed. Person 
Education do Brasil, São Paulo, 1990. 
o SCHILDT, Herbert; C Completo e Total, Ed. Person Education do Brasil, São Paulo, 1997. 
o HOLZNER, Steven; C++ Black Book, Makron Books, São paulo, 2002. 
o TENENBAUM, Aaron M.; LANGSAM, Yedidyah; AUGENSTEIN, Moshe J.; Estruturas de 
Dados Usando C, Ed. Person Education do Brasil, São Paulo. 
Ebooks 
o DEITEL, C How to Program; Ed. Person Education do Brasil, 2012. 
http://www.pearson.com.br/servicos.asp?pag_id=82&area_pai=59&id_p=3 
o GADDIS; Starting Out with C++: Pearson New International E:From Control 
Structures through Objects, Brief Edition-EB, Ed. Person Education do Brasil, 2013, 
http://www.pearson.com.br/servicos.asp?pag_id=82&area_pai=59&id_p=3 
o GADDIS; Starting Out with C++: From Control Structures thr:International Edition-EB, 
Ed. Person Education do Brasil, 2011, 
http://www.pearson.com.br/servicos.asp?pag_id=82&area_pai=59&id_p=3 
Sites 
o http://www.cprogressivo.net/2013/10/Estrutura-de-dados-dinamica-em-C-Listas-Filas-
Pilhas-Arvores.html 
o http://www.cin.ufpe.br/~garme/public/(ebook)Estruturas%20de%20Dados%20Usand
o%20C%20(Tenenbaum).pdf 
o http://www.mlaureano.org/livro/livro_estrutura_conta.pdf 
o https://www.youtube.com/watch?v=Symvpn9J3FM 
o http://www.inf.puc-rio.br/~inf1620/material.html 
o https://programacaodescomplicada.wordpress.com/indice/linguagem-c/

Outros materiais