Préfixes d'un mot
Résolu/Fermé
UniCode08
Messages postés
1
Date d'inscription
jeudi 4 octobre 2012
Statut
Membre
Dernière intervention
4 octobre 2012
-
4 oct. 2012 à 09:53
mamiemando Messages postés 33545 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 février 2025 - 10 oct. 2012 à 19:34
mamiemando Messages postés 33545 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 février 2025 - 10 oct. 2012 à 19:34
A voir également:
- Préfixes d'un mot
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Voir mot de passe wifi android - Guide
- Mettre un mot de passe sur un dossier - Guide
- Mot de passe administrateur - Guide
2 réponses
mamiemando
Messages postés
33545
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
25 février 2025
7 829
Modifié par mamiemando le 4/10/2012 à 10:24
Modifié par mamiemando le 4/10/2012 à 10:24
Si j'ai bien compris voilà à quoi devrait ressembler ton programme :
À l'exécution :
Quelque remarques :
- getch n'est qu'un hack "windows" pour pouvoir lancer une commande ms-dos et avoir le temps de lire ce qui est dans la fenêtre... Mais en tout rigueur le programme ne devrait pas comporter getch et devrait simplement être exécuté depuis une fenêtre commande ms-dos et non pas par un explorateur.
- tu as oublié le type de retour de main (int). La fonction main est sensée retourner 0 (EXIT_SUCCESS) quand tout va bien et une autre valeur sinon (par exemple EXIT_FAILURE). Si tu veux utiliser les constantes EXIT_SUCCESS et EXIT_FAILURE il faut aussi inclure <stdlib.h>
- si tu décides de faire un malloc, tu es sensé libérer la mémoire quand tu n'utilise plus cette zone mémoire (free(w) dans ton code). Par ailleurs ici vu que tu connais avant la compilation du programme la taille de ton bloc mémoire, autant faire une allocation statique comme j'ai fait, ce qui évite d'avoir à se poser ce genre de question.
Bonne chance
#include <stdio.h> #include <string.h> int main(){ const unsigned max_len = 255; unsigned i, j = 0, len; char word[max_len]; printf("Tapez un mot:\n"); scanf("%s", word); len = strnlen(word, max_len); for(i = 0; i < len; ++i) { printf("Préfixe %d: ", i + 1); for(j = 0; j <= i; ++j) { printf("%c", word[j]); } printf("\n"); } printf("%d préfixes trouvés\n", i); return 0; }
À l'exécution :
(mando@silk) (~) $ gcc -W -Wall toto.c (mando@silk) (~) $ ./a.out Tapez un mot: tapir Préfixe 1: t Préfixe 2: ta Préfixe 3: tap Préfixe 4: tapi Préfixe 5: tapir 5 préfixes trouvés
Quelque remarques :
- getch n'est qu'un hack "windows" pour pouvoir lancer une commande ms-dos et avoir le temps de lire ce qui est dans la fenêtre... Mais en tout rigueur le programme ne devrait pas comporter getch et devrait simplement être exécuté depuis une fenêtre commande ms-dos et non pas par un explorateur.
- tu as oublié le type de retour de main (int). La fonction main est sensée retourner 0 (EXIT_SUCCESS) quand tout va bien et une autre valeur sinon (par exemple EXIT_FAILURE). Si tu veux utiliser les constantes EXIT_SUCCESS et EXIT_FAILURE il faut aussi inclure <stdlib.h>
- si tu décides de faire un malloc, tu es sensé libérer la mémoire quand tu n'utilise plus cette zone mémoire (free(w) dans ton code). Par ailleurs ici vu que tu connais avant la compilation du programme la taille de ton bloc mémoire, autant faire une allocation statique comme j'ai fait, ce qui évite d'avoir à se poser ce genre de question.
Bonne chance
mamiemando
Messages postés
33545
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
25 février 2025
7 829
5 oct. 2012 à 20:38
5 oct. 2012 à 20:38
je vois pas clairement la procédure. :/
Je n'ai pas compris la question.
Dans l'idée la boucle "for j" écrit caractère par caractère (le j-ième caractère) le mot et s'arrête une fois le i-ème caractère atteint. Ceci est englobé dans une boucle "for i" qui repousse d'un cran ce caractère à chaque itération.
Je n'ai pas compris la question.
Dans l'idée la boucle "for j" écrit caractère par caractère (le j-ième caractère) le mot et s'arrête une fois le i-ème caractère atteint. Ceci est englobé dans une boucle "for i" qui repousse d'un cran ce caractère à chaque itération.
mamiemando
Messages postés
33545
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
25 février 2025
7 829
10 oct. 2012 à 19:34
10 oct. 2012 à 19:34
Parfait, bonne continuation !
5 oct. 2012 à 12:44
je comprend ici qu'on aura une accumulation des valeur des préfixes à chaque itération :
je vois pas clairement la procédure. :/