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