Fréquence d'un nombre en C
the-kraken
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
salut a tous
j'aimerais résoudre un exercice en C mais je gallere depuis pas mal de temps, alors l'énoncé dit:
on doit afficher la frequence d'un nombre dans une serie, par ex:
10 10 15 12 15 3 3 3 8 8 9
on doit avoir a la sortie
10 2 fois
15 2 fois
12 1 fois
3 3 fois
8 2 fois
9 1 fois
j'espère que j'etait bien claire, merci d'avance
salut a tous
j'aimerais résoudre un exercice en C mais je gallere depuis pas mal de temps, alors l'énoncé dit:
on doit afficher la frequence d'un nombre dans une serie, par ex:
10 10 15 12 15 3 3 3 8 8 9
on doit avoir a la sortie
10 2 fois
15 2 fois
12 1 fois
3 3 fois
8 2 fois
9 1 fois
j'espère que j'etait bien claire, merci d'avance
A voir également:
- Fréquence d'un nombre en C
- Fréquence du processeur - Guide
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Frequence 4g - Guide
- Ascii nombre de caractères - Guide
2 réponses
Oui, c'est bien clair.
Le plus simple est d'utiliser un tableau pour stocker les éléments.
Tu prends le premier, et tu regardes le nombre de fois qu'il apparaît.
Puis tu passes au suivant (attention à ce qu'il soit différent des éléments précédents) et tu comptes son nombre d'apparition. Etc.
Voilà, l'idée. A toi d'approfondir pour bien comprendre le principe.
Ensuite tu pourras écrire l'algorithme et enfin le programme C.
Cdlt,
Le plus simple est d'utiliser un tableau pour stocker les éléments.
Tu prends le premier, et tu regardes le nombre de fois qu'il apparaît.
Puis tu passes au suivant (attention à ce qu'il soit différent des éléments précédents) et tu comptes son nombre d'apparition. Etc.
Voilà, l'idée. A toi d'approfondir pour bien comprendre le principe.
Ensuite tu pourras écrire l'algorithme et enfin le programme C.
Cdlt,
Bonjour,
La même chose mais d'une manière à ne pas réutiliser la boucle servant à récupérer le nombre de répétition d'un nombre si il a déjà été testé :
Vous devriez pouvoir le comprendre sans commentaires
La même chose encore pour la route :
#include <stdio.h> int main() { /* mise de la serie dans un tableau de int c'est à vous de voir comment les y mettre */ int tab_serie[]={10,10,15,12,15,3,3,3,8,8,9}; /* récupération de la taille du tableau sizeof(tab_de_int) retourne la taille en octet du tableau alors pour savoir le nombre de int qu'il contient on divise par la taille que prend un int en octet */ int taille_tab=sizeof(tab_serie)/sizeof(int); /* i et j : pour les boucle nb_cpt : pour compter les repetitions d'un nombre dejavu : si un nombre a déjà été vu alors pas besoin de l'afficher à nouveau. Il y a une tonne de façons de faire... */ int i,j,nb_cpt,dejavu; /* première boucle i faite sur chaque int du tableau permet de garder le nombre courant i pour le tester ensuite dans une boucle interne sur le tableau en utilisant j */ for(i=0;i<taille_tab;i++) { nb_cpt=0,dejavu=0; /* boucle j permet de faire le teste et d'incrémenter nb_cpt */ for(j=0;j<taille_tab;j++) { if(tab_serie[i]==tab_serie[j]) { nb_cpt++; } } /* recyclage de j (qui est devenu inutile) pour créer une boucle sur les nombres précédemment utilisés afin de ne pas faire de copies. si le nombre courant i se retrouve dans ceux déjà vu (entre j=0 à j=i-1 enfin c'est une façon de voir) alors dejavu++ */ for(j=0;j<i;j++) { if(tab_serie[i]==tab_serie[j]) { dejavu++; } } if(dejavu==0) { printf("%d %d fois\n",tab_serie[i],nb_cpt); } } return 0; }
La même chose mais d'une manière à ne pas réutiliser la boucle servant à récupérer le nombre de répétition d'un nombre si il a déjà été testé :
Vous devriez pouvoir le comprendre sans commentaires
#include <stdio.h> int main() { int tab_serie[]={10,10,15,12,15,3,3,3,8,8,9}; int taille_tab=sizeof(tab_serie)/sizeof(int); int i,j,nb_cpt,dejavu; for(i=0;i<taille_tab;i++) { nb_cpt=0,dejavu=0; for(j=0;j<i;j++) { if(tab_serie[i]==tab_serie[j]) { dejavu++; } } if(dejavu==0) { for(j=0;j<taille_tab;j++) { if(tab_serie[i]==tab_serie[j]) { nb_cpt++; } } printf("%d %d fois\n",tab_serie[i],nb_cpt); } } return 0; }
La même chose encore pour la route :
int main() { int tab_serie[]={10,10,15,12,15,3,3,3,8,8,9}; int taille_tab=sizeof(tab_serie)/sizeof(int); int i,j,nb_cpt; for(i=0;i<taille_tab;i++) { nb_cpt=0; for(j=0;j<taille_tab;j++) { if(tab_serie[i]==tab_serie[j]) { if(j<i){ break; } else { nb_cpt++; } } if(j==taille_tab-1){ printf("%d %d fois\n",tab_serie[i],nb_cpt); } } } return 0; }