Ir ao conteúdo
  • Cadastre-se

C Média entre vetores. Questão de prova. Análise de Sistemas. Faeterj. FAC.


jcgs98
Ir à solução Resolvido por isrnick,

Posts recomendados

O vetor vNota armazena a nota atribuída (1 a 10) ao atendimento do funcionário cujo código está no vetor vAtend.

Há 6 funcionários identificados por um número entre 1 e 6.

Complete a main abaixo, de forma modularizada (com função), para responder a seguinte questão:

A nota média de cada funcionário?

Resposta:

Funcionário 1 - Nota média: 4,666667;

Funcionário 2 - Nota média: 5,500000;

Funcionário 3 - Nota média: 5,000000;

Funcionário 4 - Nota média: 6,666667;

Funcionário 5 - Nota média: 6,500000;

Funcionário 6 - Nota média: 6,500000.

 

#include <stdio.h>
#include <stdlib.h>

int main (void) {

int vNota[25]  =  {1,1,2,10,10,3,4,6,7,7,8,9,3,10,4,5,2,7,5,9,8,4,6,8,9};

int vAtend[25] = {1,2,3,4,5,6,2,3,4,5,1,2,3,6,4,5,4,6,1,3,4,5,6,2,4};

return 0;

}


 

<>

IMG_20181213_102021.jpg

Link para o comentário
Compartilhar em outros sites

Bom dia @jcgs98

 

Nós não podemos escrever o código para você, nós só podemos lhe auxiliar tirando duvidas e corrigindo algum código que você já tenha feito.

 

Se puder postar o código que você já fez ou colocar em qual parte do exercício você está com duvida, poderemos lhe ajudar melhor :D 

  • Curtir 1
  • Triste 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, jcgs98 disse:

Mas como associar a nota ao funcionário?

 

Tem que entender o que o enunciado diz, mas sua confusão é justificável visto que o enunciado não é claro o suficiente.

 

Pelo que entendi (e confirmado pela resolução da sua professora) basicamente o enunciado está dizendo que foram feitos 25 atendimentos pelos funcionários. No vetor vNota estão as notas que cada atendimento recebeu, e no vetor vAtend estão os números dos funcionários que fizeram cada atendimento respectivamente. Ou seja, o n-ésimo atendimento recebeu nota vNota[n] e foi atendido pelo funcionário vAtend[n].

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Tem 6 funcionários então ela criou um 2 vetores de 6 posições, vcont para contar quantas vezes cada funcionário atendeu, e vtot para somar as notas recebidas por cada funcionário em cada atendimento (= total das notas).

 

Observe que vetores na linguagem C começam com índice 0, e nesse caso o índice vai até 5. Mas os números dos funcionários começam em 1 e vão até 6. Então para compensar ela subtraiu -1 dos números dos funcionários para fazer cada índice do vetor corresponder a um dos funcionários.

 

Tendo a soma total e a quantidade de atendimentos de cada funcionário basta dividir a soma pela quantidade para obter a nota média do funcionário.

 

Sua professora também tratou o caso especial em que nenhum atendimento foi realizado pelo funcionário, pois nesse caso não é possível calcular a média pois não é possível dividir por zero, então o programa dela só calcula e imprime a média se a quantidade de atendimentos vcont do funcionário for diferente de zero.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Mas nesse caso, só vai totalizar as 6 primeiras posições do vetor vNota

#include <stdio.h>
#include <stdlib.h>

int main (void)

{

float vNota[25]  =  {1,1,2,10,10,3,4,6,7,7,8,9,3,10,4,5,2,7,5,9,8,4,6,8,9};

float vAtend[25] = {1,2,3,4,5,6,2,3,4,5,1,2,3,6,4,5,4,6,1,3,4,5,6,2,4};



int vCont [6];
float vTot[6];
int func;
int i;

//zera (vtot);
//zera (vCont);

for (i=0;i<6;i++)
{
	vTot[i]=0;
	vCont[i]=0;
}


for (i=0;i<25;i++)
{
	func=vAtend[i]-1;
	vCont[func]++;
	vTot[func]+=vNota[func];
}

for (i=0;i<6;i++)
{
	if (vCont[i]!=0)printf ("\nMedia...:%.7f",vTot[i]/vCont[i]);
}

return 0;
}

 

Capturar.PNG

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Se quiser tirar as dúvidas poste o que não conseguiu entender.

 

E veja aqui outra solução que pode ser mais fácil de entender:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int vNota[25]  = {1, 1, 2, 10, 10, 3, 4, 6, 7, 7, 8, 9, 3, 10, 4, 5, 2, 7, 5, 9, 8, 4, 6, 8, 9};
    int vAtend[25] = {1, 2, 3,  4,  5, 6, 2, 3, 4, 5, 1, 2, 3,  6, 4, 5, 4, 6, 1, 3, 4, 5, 6, 2, 4};
    int func, j, qnt;
    float soma;
    
    for (func = 1; func <= 6; func++){ //Para cada funcionário faça:
        soma = 0;
        qnt = 0;
        
        for (j = 0; j < 25; j++) { //Percorre todos os atendimentos...
            if (vAtend[j] == func) { //Se encontrar o funcionário atual faça:
                soma += vNota[j];    //Soma a nota ao total do funcionário
                qnt++;               //Incrementa a quantidade de atendimentos do funcionário
            }
        }
        
        if (qnt != 0)
            printf("\nMedia do funcionario %d: %.6f", func, soma/qnt);
        
    }

    return 0;
}

 

Mas seria interessante você entender a solução da sua professora pois em programação quanto mais opções, e maneiras diferentes de fazer algo, você aprender mais preparado estará para resolver problemas diferentes e/ou mais complexos.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!