Baixe o app para aproveitar ainda mais
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; }
Compartilhar