Exercício com operações em vetor utilizando funções
Nesse post apresente um exercício em linguagem de programação C para ser utilizado no Laboratório Virtual de Programação do Moodle.
O exercício traz todo o código necessário da função main() e exige ao aluno interpretar o código e posteriormente implementar as funções para que o código funcione. As funções são implementadas em uma biblioteca, mantendo o código das funções a parte do programa principal.
Observe a função main() e elabore as seguintes funções utilizadas por essa função:
- maiorValor: retorna o maior valor do vetor.
- mediaVetor: retorna a média dos valores do vetor.
- subtraiVetor: subtraí uma constante de cada valor do vetor.
- zeraNegativos: subtituí todo valor negativo do vetor por zero.
Codifique as funções no arquivo “biblioteca.h” e não altere nada no arquivo “solucao.c”.
Códigos iniciais (arquivos requeridos)
#include <stdio.h> #include "biblioteca.h" int main() { int i, n; float x; scanf("%i", &n); //lê o tamanho do vetor int vet[n]; //preenche vetor for (i = 0; i < n; i++) { scanf("%i", &vet[i]); } mostraVetor(vet, n); printf("\n%i | %f\n", maiorValor(vet, n), mediaVetor(vet, n)); x = (int)(maiorValor(vet, n) - mediaVetor(vet, n)); subtraiVetor(vet, n, x); zeraNegativos(vet, n); mostraVetor(vet, n); printf("\n%i%f", maiorValor(vet, n), mediaVetor(vet, n)); return 0; }
void mostraVetor(int vet[], int tam){ int i; for (i = 0; i < tam; i++) { printf("%i ", vet[i]); } } int maiorValor(int vet[], int tam) { //função recebe um vetor e o tamanho dele //e retorna o maior valor existente nele } float mediaVetor(int vet[], int tam) { //função recebe um vetor e o tamanho dele //e retorna a média dos valores do vetor } void subtraiVetor(int vet[], int tam, int x) { //função recebe um vetor, o tamanho dele e um número //e subtrai cada valor do vetor do número passado } void zeraNegativos(int vet[], int tam) { //função recebe um vetor e o tamanho dele //e substitui por zero cada número negativo existente no vetor }
Implementação das funções da biblioteca
void mostraVetor(int vet[], int tam){ int i; for (i = 0; i < tam; i++) { printf("%i ", vet[i]); } } int maiorValor(int vet[], int tam) { int maior = vet[0], i; for (i = 1; i < tam; i++) { if (vet[i] > maior) { maior = vet[i]; } } return maior; } float mediaVetor(int vet[], int tam) { int i, soma = 0; for (i = 0; i < tam; i++) { soma += vet[i]; } return soma / (float)tam; } void subtraiVetor(int vet[], int tam, int x) { int i; for (i = 0; i < tam; i++) { vet[i] -= x; } } void zeraNegativos(int vet[], int tam) { int i; for (i = 0; i < tam; i++) { if (vet[i] < 0) { vet[i] = 0; } } }
Casos de teste para o Laboratório Virtual de Programação
case=teste1 input=5 1 2 3 4 5 output=0 0 1 2 3 31.200000 case=teste2 input=6 0 5 6 1 2 4 output=0 2 3 0 0 1 31.000000 case=teste3 input=8 -5 6 1 2 -3 -2 1 2 output=0 1 0 0 0 0 0 0 10.125000 case=teste4 input=4 10 9 8 7 output=9 8 7 6 97.500000