Problème avec la boucle while
Résolu/Fermé
enigman0001
Messages postés
28
Date d'inscription
samedi 30 avril 2016
Statut
Membre
Dernière intervention
28 décembre 2017
-
11 juil. 2017 à 12:27
YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 - 12 juil. 2017 à 16:09
YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 - 12 juil. 2017 à 16:09
A voir également:
- Problème avec la boucle while
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mon PC s'allume puis s'éteint tout seul. Que faire ? ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
3 réponses
YCN-
Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017
12
Modifié le 11 juil. 2017 à 17:05
Modifié le 11 juil. 2017 à 17:05
Bonjour !
Voilà je te laisse le soin de comprendre comment mon implémentation fonctionne :
Pour tester :
ça fait ce que tu as demandé dans tes specs. Quote : cette fonction doit cherche une lettre dans une chaine et donner le numéro de de son emplacement dans la chaine, par ex : si la chaîne est " tarte " , et que je tape "r", la fonction doit me renvoyer 3, parce que la lettre r se trouve a l'emplacement n3
Voilà je te laisse le soin de comprendre comment mon implémentation fonctionne :
void tarte (char * str , char my_char, int * whr){ int i; int q=0; for (i=0;i<strlen(str);i++){ if (str[i] == my_char){ whr[q+1]=i; q++; } } whr[0] = q; }
Pour tester :
int main(void) { int tab [126]; tarte("tarte",'t',tab); printf("%s contient %c %d fois, à la place %d , %d \n", "tarte" , 't' , tab[0],tab[1],tab[2]); tarte("peripatetitienne",'t',tab); printf("peripatetitienne contient %c %d fois, à la place %d , %d , %d \n", 't' ,tab[0],tab[1],tab[2],tab[3]); return 0; }
ça fait ce que tu as demandé dans tes specs. Quote : cette fonction doit cherche une lettre dans une chaine et donner le numéro de de son emplacement dans la chaine, par ex : si la chaîne est " tarte " , et que je tape "r", la fonction doit me renvoyer 3, parce que la lettre r se trouve a l'emplacement n3
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
11 juil. 2017 à 19:47
11 juil. 2017 à 19:47
Bonjour,
Regarde ta fonction lire_caractere() et le caractère qui est retournée n'est pas le premier tapé (il y a une ligne de trop).
Ta fonction partie() devrait aussi gérer le cas où le caractère n'est pas dans le mot. C'est le cas si on rencontre le caractère '\0' avant le caractère cherché.
Regarde ta fonction lire_caractere() et le caractère qui est retournée n'est pas le premier tapé (il y a une ligne de trop).
Ta fonction partie() devrait aussi gérer le cas où le caractère n'est pas dans le mot. C'est le cas si on rencontre le caractère '\0' avant le caractère cherché.
enigman0001
Messages postés
28
Date d'inscription
samedi 30 avril 2016
Statut
Membre
Dernière intervention
28 décembre 2017
12 juil. 2017 à 13:48
12 juil. 2017 à 13:48
bonjour et merci pour vos réponses
j'ai finalement trouvé le d'ou vient problème :
moi je tape un caractère en majuscule, mais dans ma base de donnée les caractères sont en minuscule, et pour l'ordinateur E et e c'est pas la même chose, donc il cherche et il cherche mais sans rien trouver.
reste maintenant a savoir pour quoi 4320 fois, puisque normalement la boucle devrait se répéter a l'infini.
et non Dalfab il n'y as pas de ligne de trop justement, j'appelle la fonction getchar une fois pour vider du buffer le "\n" tapé par l'utilisateur,puis une deuxième fois pour récupérer les caractère.
j'ai finalement trouvé le d'ou vient problème :
moi je tape un caractère en majuscule, mais dans ma base de donnée les caractères sont en minuscule, et pour l'ordinateur E et e c'est pas la même chose, donc il cherche et il cherche mais sans rien trouver.
reste maintenant a savoir pour quoi 4320 fois, puisque normalement la boucle devrait se répéter a l'infini.
et non Dalfab il n'y as pas de ligne de trop justement, j'appelle la fonction getchar une fois pour vider du buffer le "\n" tapé par l'utilisateur,puis une deuxième fois pour récupérer les caractère.
YCN-
Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017
12
Modifié le 12 juil. 2017 à 16:09
Modifié le 12 juil. 2017 à 16:09
Salut :),
Si tu veux faire une comparaison sans prendre en compte la casse tu peux ajouter à ma fonction :
Si tu veux faire une comparaison sans prendre en compte la casse tu peux ajouter à ma fonction :
if (str[i] == my_char || ((int) str[i] == (int) (my_char - 32)) ){ ... }