J'ai un souci avec l'exercice "Étude de marché", ci-dessous le libellé de l'exercice:
Afin de partir dans un long voyage, à la recherche de produits exotiques, les marchands prévoient toujours d'emmener avec eux des produits locaux afin de les vendre au cours du trajet. Pour décider quels produits emmener, ils ont fait une petite étude de marché auprès de la population, en demandant à chaque personne d'indiquer LE produit qu'elle serait prête à acheter (celui qu'elle préfère donc). Ce que doit faire votre programme :
On vous donne le numéro du produit préféré par différentes personnes. Écrivez un programme qui indique pour chaque numéro de produit, le nombre de personnes dont c'est le produit préféré. Entrée
Les deux premiers entiers à lire sont le nombre total de produits nbProduits et le nombre de personnes nbPersonnes (nbPersonnes <= 1000) ayant exprimé leur souhait.
On lit ensuite nbPersonnes entiers : les numéros des produits préférés des différentes personnes. Les produits sont numérotés de 0 à nbProduits - 1. Sortie
Vous devez afficher nbProduits entiers : pour chaque produit dans l'ordre de leur numéro, affichez le nombre de personnes qui le préfèrent.
Je n'arrive pas à additionner les avis des personnes qui préfèrent les produits.
À priori j'ai le début, mes boucles semblent correctes mais je rame pour obtenir le résultat espéré.
Une âme charitable pourrait-elle m'assister?
Merci.
int main(int argc, char* argv[])
{
int nbPersonnes, nbProduits, numProduits=0, i=0, avis=0;
int tableau[0] = {0};
scanf("%d%d", &nbProduits, &nbPersonnes);
for (i=0; i<nbPersonnes; i++)
{
scanf("%d", &avis);
}
for (i=0; i<nbProduits; i++)
for (avis=0; avis<nbPersonnes; avis++)
printf("%d \n", tableau[avis]);
return 0;
}
ligne 4: un tableau de taille 0 ne peut rien contenir! le compilo aurait du afficher un avertissement...
Ligne 6 il faut un espace entre les %d: scanf("%d %d", ...) sinon le scanf ne peut pas distinguer les deux nombres correctement.
ligne 10: un petit printf avant histoire de voir a quelle numero est rendu la saisie est un plus (et permet de détecter le probleme de la ligne 6 aussi!)
(ps: pas lu ce que demandes l'exercice, juste regardé le code)
- Edité par breizhbugs 19 juin 2017 à 16:36:46
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
Il faudrait deja que tu stockes les avis dans un tableau, la ton programme retient que le dernier (perso je remplacerais avis par numPdtPrefere).Puis tu trie ton tableau et en parcourant le tableau tu affiche pour chaque valeur le nbre de fois ou elle apparait.
C'est comme ca que je ferais mais il doit y avoir d'autre solutions (ptetre meilleures).
Ligne 22 il faut afficher la variable compteur puis tu la remet a zero au debut de ta boucle.
Mais dans ton programmes tu compte le nbre de produit pour tout les numero a partie de zero, alors que tu doit compter que pour les numero de produit presents.
for (i=0; i<nbProduits; i++)
{
compteur = 0;
for (numProduits=0; numProduits<nbPersonnes; numProduits++)
{
if (tableau[numProduits]==i)
compteur++;
}
if(compteur != 0) //pour n'afficher que les numéros de produit existant
printf("%d \n", compteur);
}
Et dans ton poste des hier a 9h47 c'est &tableau[i] dans ton scanf() a la ligne 10
- Edité par thetui 22 juin 2017 à 10:43:29
en difficulté dans un exercice France IOI
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.