Programme en c

Résolu/Fermé
fadim Messages postés 4 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 24 mars 2010 - 20 mars 2010 à 23:31
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 - 21 mars 2010 à 12:00
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 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 1 057
20 mars 2010 à 23:39
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 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 24 mars 2010
20 mars 2010 à 23:48
ok merci
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
Modifié par bizu53 le 21/03/2010 à 00:25
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
21 mars 2010 à 00:32

//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
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
21 mars 2010 à 12:00
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 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 24 mars 2010
21 mars 2010 à 00:27
ok merci bizu ça marche
0