Buscar

Exercicios Prontos de Algortitmo - 06 - Vetores

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

Vetores 
 
Resolução dos Exercícios 
 
Primeira Lista (Slide 78) 
 
1) Quais são os elementos do vetor referenciados pelas expressões abaixo? 
Vet [ 1 | 2 | 4 | 7 | 4 |2 | 8 | 9 | 0 | 6 | 5 | 4 | 3 ] 
 
a) vet[3] = 7 
b) vet[0] = 1 
c) vet[13] = Posição 13, fora dos limites do vetor. 
 
2) Qual é a diferença entre os números 3 das duas instruções abaixo ? 
inteiro vet[3] : Declaração de um vetor de inteiros de 3 elementos. 
Vet[3] ← 5 : Valor inteiro “5” guardado na posição de índice 3 do vetor. 
 
3) Dada um tabela contendo a idade de 10 alunos, faça um algoritmo que calcule o 
número de alunos com idade superior a média. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 10 
 
int main() 
{ 
 int idade[N], i, cont; 
 float media; 
 media = 0; 
 cont = 0; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe idade do %d aluno: ", i+1); 
 scanf ("%d", &idade[i]); 
 media = media + idade[i]; 
 } 
 
 media = media/N; 
 
 for (i=0; i<N; i++) 
 { 
 if (idade[i] > media) 
 { 
 cont++; 
 } 
 } 
 printf ("\nExistem %d alunos com idade acima da media.", cont); 
 
 return 0; 
} 
 
4) Faça um algoritmo para ler e somar dois vetores de 10 elementos inteiros. Imprima 
ao final os valores dessa soma. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 10 
 
int main() 
{ 
 int vet1[N], vet2[N], vet_soma[N], i; 
 
 printf ("Leitura do primeiro vetor.\n"); 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o valor do vetor na posição %d : ", i+1); 
 scanf ("%d", &vet1[i]); 
 } 
 
 printf ("\nLeitura do segundo vetor.\n"); 
 for (i=0; i<N; i++) 
 { 
 printf (“Informe o valor do vetor na posição %d : ", i+1); 
 scanf ("%d", &vet2[i]); 
 } 
 
 printf ("\nO vetor resultante da soma dos vetores eh:\n"); 
 for (i=0; i<N; i++) 
 { 
 vet_soma[i] = vet1[i] + vet2[i]; 
 printf ("Vetor Soma [%d] : %d\n",i+1, vet_soma[i]); 
 } 
 
 return 0; 
} 
 
5) Refaça o exercício anterior criando um procedimento para efetuar a leitura dos 
vetores e um segundo procedimento que imprimirá a soma dos vetores. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 10 
 
void leVetor (int v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o valor do vetor na posição %d : ", i+1); 
 scanf ("%d", &v[i]); 
 } 
} 
 
void imprimeSoma (int v1[], int v2[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Vetor Soma [%d] : %d\n",i+1, v1[i] + v2[i]); 
 } 
} 
 
int main() 
{ 
 int vet1[N], vet2[N]; 
 
 printf ("Leitura do primeiro vetor.\n"); 
 leVetor (vet1); 
 printf ("Leitura do segundo vetor.\n"); 
 leVetor (vet2); 
 
 printf ("\nO vetor resultante da somo dos vetores eh:\n"); 
 imprimeSoma (vet1, vet2); 
 
 return 0; 
} 
 
6) Refaça o exercício anterior criando uma função que receba o vetor com a idade dos 
alunos e retorne a quantidade de alunos com idade superior a média. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 10 
 
int acimaMedia (int v[]) 
{ 
 int i, cont; 
 float media; 
 media = 0; 
 cont = 0; 
 
 for (i=0; i<N; i++) 
 { 
 media = media + v[i]; 
 } 
 
 media = media/N; 
 
 for (i=0; i<N; i++) 
 { 
 if (v[i] > media) 
 { 
 cont++; 
 } 
 } 
 return (cont); 
} 
 
int main() 
{ 
 int idade[N], i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe idade do %d aluno: ", i+1); 
 scanf ("%d", &idade[i]); 
 } 
 
 printf ("\nExistem %d alunos com idade acima da media.", acimaMedia 
(idade)); 
 
 return 0; 
} 
 
7) Faça um algoritmo que leia, via teclado, 20 valores do tipo inteiro e determine qual 
o menor valor existente no vetor e imprima valor e seu índice no vetor. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 20 
 
int main() 
{ 
 int vet[N], i, menor, pos; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%d", &vet[i]); 
 } 
 menor = vet[0]; 
 pos = 1; 
 
 for (i=1; i<N; i++) 
 { 
 if (vet[i] < menor) 
 { 
 menor = vet[i]; 
 pos = i+1; 
 } 
 } 
 printf ("\nO menor valor eh %d e esta na posicao %d.", menor, pos); 
 
 return 0; 
} 
 
8) Refaça o exercício anterior criando um procedimento que receba como parâmetro 
o vetor e imprima o menor valor e seu índice no vetor. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 20 
 
void menorValor (int v[]) 
{ 
 int menor, pos, i; 
 menor = v[0]; 
 pos = 1; 
 
 for (i=1; i<N; i++) 
 { 
 if (v[i] < menor) 
 { 
 menor = v[i]; 
 pos = i+1; 
 } 
 } 
 printf ("\nO menor valor eh %d e esta na posicao %d.", menor, pos); 
} 
 
int main() 
{ 
 int vet[N], i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%d", &vet[i]); 
 } 
 menorValor (vet); 
 
 return 0; 
} 
 
Segunda Lista (Slide 93) 
 
1) Desenvolva um programa que leia um vetor de números reais, um escalar e 
imprima o resultado da multiplicação do vetor pelo escalar. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 5 
 
int main() 
{ 
 int i; 
 float vet[N], escalar; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%f", &vet[i]); 
 } 
 
 printf ("Informe um escalar: "); 
 scanf ("%f", &escalar); 
 
 for (i=0; i<N; i++) 
 { 
 vet[i] = vet[i]*escalar; 
 printf ("%.2f ", vet[i]); 
 } 
 return 0; 
} 
 
2) Faça um procedimento que faça a leitura um vetor de 10 elementos inteiros e 
imprima somente os valores armazenados nos índices pares. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 10 
 
void indicesPares() 
{ 
 int vet[N], i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o valor da posicao %d : ", i+1); 
 scanf ("%d", &vet[i]); 
 } 
 
 for (i=0; i<N; i++) 
 { 
 if ((i+1)%2 == 0) 
 { 
 printf ("posicao %d: %d\n",i+1, vet[i]); 
 } 
 } 
} 
 
int main(){ 
 
 int vet[N]; 
 
 indicesPares(); 
 
 return 0; 
} 
 
3) Faça um programa que leia um vetor com 15 valores reais. A seguir, encontre o 
menor elemento do vetor e a sua posição dentro do vetor, mostrando: O menor 
elemento do vetor esta na posição XXXX e tem o valor YYYYY. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 15 
 
void leVetor (float v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%f", &v[i]); 
 } 
} 
 
void menorValor (float v[]) 
{ 
 int pos, i; 
 float menor; 
 menor = v[0]; 
 pos = 1; 
 
 for (i=1; i<N; i++) 
 { 
 if (v[i] < menor) 
 { 
 menor = v[i]; 
 pos = i+1; 
 } 
 } 
 printf("\nO menor elemento do vetor esta na posicao %d e tem o valor 
%.2f.", pos, menor); 
} 
 
int main() 
{ 
 float vet[N]; 
 
 leVetor (vet); 
 menorValor (vet); 
 
 return 0; 
} 
 
4) Faça um programa que leia um vetor de 15 posições (reais) e depois um valor a ser 
procurado no vetor. Imprima se o valor foi ou não encontrado e a quantidade de 
vezes que o valor está presente no vetor. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 15 
 
void leVetor (float v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%f", &v[i]); 
 } 
} 
 
int encontraValor (float v[], float val) 
{ 
 int i, cont;cont = 0; 
 
 for (i=0; i<N; i++) 
 { 
 if (v[i] == val) 
 { 
 cont++; 
 } 
 } 
 return (cont); 
} 
 
int main() 
{ 
 float vet[N], valor; 
 
 leVetor (vet); 
 
 printf ("Digite um valor a ser procurado no vetor: "); 
 scanf ("%f", &valor); 
 
 if (encontraValor(vet, valor) == 0) 
 { 
 printf ("Valor nao foi encontrado."); 
 } 
 else 
 { 
 printf ("\nValor foi encontrado %d vez(es).", encontraValor(vet, 
valor)); 
 } 
 return 0; 
} 
 
5) Faça uma função que receba um vetor de números inteiros e um valor inteiro. A 
função deverá procurar este segundo valor neste vetor e retornar seu índice se for 
encontrado. Se o elemento não for encontrado, retornar -1. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 5 
 
void leVetor (int v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%d", &v[i]); 
 } 
} 
 
int encontraPosicao (int v[], int val) 
{ 
 int i, pos; 
 pos = -1; 
 
 for (i=0; i<N && pos == -1; i++) 
 { 
 if (v[i] == val) 
 { 
 pos = i+1; 
 } 
 } 
 return (pos); 
} 
 
int main() 
{ 
 int vet[N], valor; 
 
 leVetor (vet); 
 
 printf ("Digite um valor a ser procurado no vetor: "); 
 scanf ("%d", &valor); 
 
 if (encontraPosicao(vet, valor) == -1) 
 { 
 printf ("\nValor nao foi encontrado."); 
 } 
 else 
 { 
 printf ("\nValor foi encontrado na posicao %d.", 
encontraPosicao(vet, valor)); 
 } 
 return 0; 
} 
 
6) Dada uma tabela com as notas de uma turma de 20 alunos, faça funções que 
retornem: 
a) A média da turma. 
b) a quantidade de alunos aprovados (>=60) 
c) a quantidade de alunos reprovados.(< 60) 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 20 
 
void leVetor (float v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe a nota do aluno %d : ", i+1); 
 scanf ("%f", &v[i]); 
 } 
} 
 
float mediaTurma (float v[]) 
{ 
 int i; 
 float media; 
 media = 0; 
 
 for (i=0; i<N; i++) 
 { 
 media = media + v[i]; 
 } 
 media = media/N; 
 
 return (media); 
} 
 
int aprovados (float v[]) 
{ 
 int i, cont; 
 cont = 0; 
 
 for (i=0; i<N; i++) 
 { 
 if (v[i] >= 60) 
 { 
 cont++; 
 } 
 } 
 return (cont); 
} 
 
int reprovados (float v[]) 
{ 
 int i, cont; 
 cont = 0; 
 
 for (i=0; i<N; i++) 
 { 
 if (v[i] < 60) 
 { 
 cont++; 
 } 
 } 
 return (cont); 
} 
 
int main() 
{ 
 float notas[N]; 
 
 leVetor (notas); 
 
 printf ("\nA media da turma eh: %.2f", mediaTurma(notas)); 
 printf ("\nO numero de aprovados eh: %d", aprovados(notas)); 
 printf ("\nO numero de reprovados eh: %d", reprovados(notas)); 
 
 return 0; 
} 
 
7) Faça um programa que leia um conjunto de 20 valores e armazene-os num vetor V. 
Particione-o em dois outros vetores, P e I, conforme os valores de V forem pares ou 
ímpares. No final, imprima os valores dos 3 vetores. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 20 
 
void imprimaVetor ( int v[], int tam) 
{ 
 int i; 
 for (i=0; i<tam; i++) 
 { 
 printf ("%d ", v[i]); 
 } 
} 
 
int main() 
{ 
 int vet[N], pares[N], impares[N], contaPares, i; 
 contaPares = 0; 
 contaImpares = 0; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%d", &vet[i]); 
 
 if (vet[i]%2 == 0) 
 { 
 pares[contaPares] = vet[i]; 
 contaPares++; 
 } 
 else 
 { 
 impares[contaImpares] = vet[i]; 
 contaImpares++; 
 } 
 } 
 printf("\nO vetor inteiro:\n"); 
 imprimaVetor (vet, N); 
 printf("\nO vetor de pares:\n"); 
 imprimaVetor (pares, contaPares); 
 printf("\nO vetor de impares:\n"); 
 imprimaVetor (impares, contaImpares); 
 
 return 0; 
} 
 
 
8) Faça um programa que leia um vetor G[13] que é o gabarito de um teste da loteria 
esportiva, contendo os valores 1 quando for coluna 1, 0 quando for coluna do meio e 
2 quando for coluna 2. 
Ler a seguir, para 5 apostadores, seu cartão de apostas (R[13]) e depois da leitura 
imprimir quantos acertos o apostador teve. 
Faça o teste através de funções. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 13 
 
void leVetor (int v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%d", &v[i]); 
 } 
} 
 
int acerto (int g[], int r[]) 
{ 
 int ac, i; 
 ac = 0; 
 
 for (i=0; i<N; i++) 
 { 
 if (g[i] == r[i]) 
 { 
 ac++; 
 } 
 } 
 return (ac); 
} 
 
int main() 
{ 
 int G[N], R[N], i; 
 
 printf ("Digite o gabarito dos jogos:\n"); 
 printf ("1) primeira coluna\n0) coluna do meio\n2) terceira 
coluna\n\n"); 
 leVetor (G); 
 
 for (i=0; i<5; i++) 
 { 
 printf ("\n\nDigite o jogo %d:\n", i+1); 
 printf ("1) primeira coluna\n0) coluna do meio\n2) terceira 
coluna\n\n"); 
 leVetor (R); 
 printf ("Este jogo tem %d acertos.\n", acerto(G, R)); 
 } 
 
 return 0; 
} 
 
9) Com relação ao exercício anterior, calcule e mostre o percentual dos apostadores 
que fizeram de 10 a 13 pontos e o percentual dos apostadores que fizeram menos do 
que 10 pontos. 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 13 
 
void leVetor (int v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%d", &v[i]); 
 } 
} 
 
int acerto (int g[], int r[]) 
{ 
 int ac, i; 
 ac = 0; 
 
 for (i=0; i<N; i++) 
 { 
 if (g[i] == r[i]) 
 { 
 ac++; 
 } 
 } 
 return (ac); 
} 
 
int main() 
{ 
 float perc; 
 int G[N], R[N], i, a, b; 
 //a conta os jogos que fizeram entre 10 e 13 pontos 
 //b conta os jogos que fizeram menos de 10 pontos 
 a = 0; 
 b = 0; 
 
 printf ("Digite o gabarito dos jogos:\n"); 
 printf ("1) primeira coluna\n0) coluna do meio\n2) terceira 
coluna\n\n"); 
 leVetor (G); 
 
 for (i=0; i<5; i++) 
 { 
 printf ("\n\nDigite o jogo %d:\n", i+1); 
 printf ("1) primeira coluna\n0) coluna do meio\n2) terceira 
coluna\n\n"); 
 leVetor (R); 
 printf ("Este jogo tem %d acertos.\n", acerto(G, R)); 
 
 if (acerto(G, R)>=10 && acerto(G, R)<=13) 
 { 
 a++; 
 } 
 else 
 { 
 b++; 
 } 
 } 
 perc = a/5.0; 
 printf ("%.2f%% dos jogos fizeram entre 10 e 13 pontos.\n", perc*100); 
 perc = b/5.0; 
 printf ("%.2f%% dos jogos fizeram menos de 10 pontos.\n", perc*100); 
 
 return 0; 
} 
 
10) Faça um programa que leia um vetor de valores inteiros e imprima-o na ordem 
crescente. O vetor deve ter tamanho N (utilize a diretiva #define). 
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 10 
 
void leVetor (int v[]) 
{ 
 int i; 
 
 for (i=0; i<N; i++) 
 { 
 printf ("Informe o numero da posicao %d : ", i+1); 
 scanf ("%d", &v[i]); 
 } 
} 
 
void ordena (int v[]) 
{ 
 int i, j, aux; 
 
 for (i=0; i<N-1; i++) 
 { 
 for (j=i+1; j<N; j++) 
 { 
 if (v[i] > v[j]) 
 { 
 aux = v[i]; 
 v[i] = v[j]; 
 v[j] = aux; 
 } 
 } 
 } 
} 
 
void imprime ( int v[]) 
{ 
 int i; 
 for (i=0; i<N; i++) 
 { 
 printf ("%d ", v[i]); 
 } 
} 
 
int main() 
{ 
 int vet[N]; 
 
 leVetor(vet); 
 ordena (vet); 
 printf ("\n\nImprimindo vetor ordenado:\n"); 
 imprime (vet); 
 
 return 0; 
}

Outros materiais