Programme en c

Résolu
fadim Messages postés 4 Statut Membre -  
 Utilisateur anonyme -
bonjour , quelqu'un pourrait m'aider a ecrire en c un programme qui demande à l'utilisateur de taper 10 entiers compris entre
0 et 20 qui seront stockés dans un tableau. Le programme cherche ensuite le nombre de fois qu'on
a tapé un 0, le nombre de 1, le nombre de 2, ..., le nombre de 20.
merci.

4 réponses

le hollandais volant Messages postés 5294 Statut Membre 1 058
 
Salut !

Ben je veux bien t'aider pour le principe :

Tu fais une boucle for pour i variant de 0 à 20 qui demande à l'utilisateur de taper un nombre (scanf) et qui le place dans la case "i" du tableau.

ensuite, tu fais deux boucles imbriqués.
La première qui incremante sur la valeur que tu veux compter (par exemple le "1") et l'autre, ou tu crée un nouveau tableau qui ajoute +1 à chaque fois que la valeur est rencontré dans le tableau.

0
fadim Messages postés 4 Statut Membre
 
ok merci
0
Utilisateur anonyme
 
Pas besoin de conserver la valeur saisie par l'utilisateur (après je ne sais pas si pour ton exercice tu dois obligatoirement les stocker...).

Bien plus simple et avec une seule boucle :
Tu crées une liste de 21 valeurs que tu initialises à 0 (pour les compteurs de 0, de 1, de 2 ... de 19, de 20).
Dans une seule boucle for() rebouclant 10 fois, tu fais un scanf("%d", &n); (en admettant que 'n' est un int), et tu as juste à incrémenter compteur[n] (en admenttant que 'compteur' est un int[21]).

//déclaration des 21 compteurs 
int compteur[21]; 

//initialisation des 21 compteurs à 0 
for(i = 0; i <= 20; ++i) 
    compteur[i] = 0; 

//demande de 10 valeurs entre 0 et 20 
for(i = 0; i < 10; ++i) { 
    int n; 
    scanf("%d", &n); 
    if(n < 0 || n > 20) { 
        printf("%d n'est pas dans [0, 20]\n", n); 
        --i; 
    } else { 
        ++compteur[n]; //un 'n' supplémentaire a été saisi 
    } 
}
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 

//déclaration des 21 compteurs
int compteur[21];

//initialisation des 21 compteurs à 0
for(i = 0; i <= 20; ++i)
compteur[i] = 0;

Ou plus simplement : int compteur[21]={0};
0
Utilisateur anonyme
 
Oui :-) Comme je ne pisse plus de C, je ne savais plus bien comment ça se faisait d'initialiser à la déclaration, alors pour ne pas mettre de bêtise la for() marche toujours ;-)
0
fadim Messages postés 4 Statut Membre
 
ok merci bizu ça marche
0