Bonjour,
Je cherche à faire un programme qui à partir d'un alphabet {a, b}, genere tous les mots possibles de taille inferieure ou egale à un entier "n".
Par exemple pour n=2 :
a; b; aa; ab; ba; bb.
Pour cela, j'ai procédé de la maniere suivante:
Comme vous pourrez le constater dans le code (ou en executant le programme), ca plante juste apres le 1er strcat. En lancant le debuggeur (que je ne maitrise pas du tout) j'ai cru comprendre qu'il s'agissait d'une "segmentation fault".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 #include <stdio.h> #include <stdlib.h> #include <string.h> void generer(char* mot, int n) { char* mot_a; char* mot_b; // J'ai essayé de mettre des malloc, mais ca ne ne donne rien :o). mot_a = (char*) malloc(n*sizeof(char)); mot_b = (char*) malloc(n*sizeof(char)); //on copie mot dans deux variables chaine de caractere. L'une pour //la concatener avec "a", l'autre avec "b". mot_a = mot; mot_b = mot; //condition d'arret du programme. if (n==0) exit(0); //debugage amateur printf("avant probleme\n"); // On concatene la lettre "a" à mot_a, puis on l'affiche strcat(mot_a, "a"); //debugage amateur printf("apres probleme\n"); puts(mot_a); // on fait de meme avec mot_b et "b" strcat(mot_b, "b"); puts(mot_b); //Appels recursifs pour generer les autres mots //On decremente n pour que le programme s'arrete quand n = 0 generer(mot_a, n-1); generer(mot_b, n-1); } int main() { int n; printf("programme de generation de mots a partir de l'alphabet {a, b}\n"); printf("Entrez N\n"); scanf("%d", &n); // on donne un mot "vide" au depart. generer("", n); return 0; }
Voila voila. Alors si vous pouviez m'aider... Merci d'avance.
Partager