我是编程的初学者,现在我已经被困在以下问题上几天了。
我正在重写我创建的this段代码,仅使用“函数”。请注意,在执行原始程序时,我们有程序员的平均咖啡消耗量= 1.25 。但是,通过使用函数here,我得到一个不同的数字 0.63 。
我想弄清楚错误在哪里,但我被卡住了。 有人可以解释我的错误,也许可以给我一些建议吗? 作为初学者,我会接受任何建设性的评论/批评。
float conso(char posteVoulu, char poste[], int nbElem, int tableau[])
{
int i ;
float somme = 0.0;
for(i = 0; i < nbElem; i++)
{
if (poste[i] == posteVoulu)
{
somme += tableau[i];
}
}
return somme / nbElem;
}
void afficher(int age[], int nbCafe[], char poste[], int nbPers)
{
int i;
printf("Contenu des 3 tableaux:\n\n");
printf(" Indice Age #Cafe Poste\n");
for ( i = 0; i < nbPers; i++)
{
printf("%5d%8d %6d ", i, age[i], nbCafe[i]);
switch (poste[i])
{
case 'A' :
printf(" Analyste\n");
break;
case 'P' :
printf(" Programmeur\n");
break;
case 'O' :
printf(" Operateur\n");
break;
}
}
printf("\n");
}
int main()
{
char poste[] = {'A', 'P', 'O', 'P', 'A', 'O', 'P', 'P'};
int age[]= {25, 18, 23, 20, 49, 24, 56, 29},
nbCafe[] = {3, 1, 6, 1, 4, 1, 0, 3} ;
int nbPers = sizeof(age) / sizeof(int);
afficher(age, nbCafe, poste, nbPers);
printf("La consomation moyenne de cafe des programmeurs : %.2f\n",
conso('P', poste, nbPers, nbCafe));
printf("\n");
system("pause") ;
return 0;
}
答案 0 :(得分:3)
在您的新代码中,您将由所有人(8)划分程序员(5)消耗的咖啡。在原始代码中,您首先计算了程序员的数量(4)。这是conso
的固定版本:
float conso(char posteVoulu, char poste[], int nbElem, int tableau[])
{
int i;
float somme = 0.0;
int nbPers = 0;
for(i = 0; i < nbElem; i++)
{
if (poste[i] == posteVoulu)
{
somme += tableau[i];
nbPers++;
}
}
if (nbPers == 0)
return 0;
return somme / nbPers;
}