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
Share

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.