-
CréateurSujet
-
décembre 16, 2023 à 3:25 pm #34030BotParticipant
Bonjour, j’implémente une méthode de déterminisation d’un automate en C, cependant dans une de mes boucles for, après la 2e itération, l’erreur Segmentation fault m’est renvoyé (ligne 807).
En utilisant des printf afin d’avoir une trace visuelle de ce que faisait mon code j’ai pu facilement localiser l’erreur, cependant je ne comprends pas pourquoi cela m’est retourné sachant que la première itération s’est passée correctement et que les conditions d’ajout d’une transition sont normalement respectées.Voici le lien vers le fichier : https://github.com/WanisC/Boolean-Expressions/blob/main/src/automate.c
Si des captures d’écran/explications sont nécessaires n’hésitez pas.
Merci de bien vouloir m’aiguiller.
P.S = Bizarrement mon programme s’arrête toujours mais il n’affiche plus Segmentation fault alors que je n’ai pas modifié mon code.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
CréateurSujet
-
AuteurRéponses
-
-
décembre 16, 2023 à 3:35 pm #34031
Bonjour,
Le lien de votre code ne semble pas accessible (Erreur 404: page not found).——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:35 pm #34032
Salut, peut-être le fait que mon repo soit privé empêche l’accès
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:35 pm #34033
Je vais changer cela
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:36 pm #34034
https://github.com/WanisC/Boolean-Expressions/blob/main/src/automate.c
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:36 pm #34035
et maintenant ?
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:50 pm #34036
J’ai accès.
Avez-vous tenté de lancer votre programme avec l’outil valgrind ?——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:50 pm #34037
Non, je ne connais pas cet outil.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:52 pm #34038
Cela vous permettra d’éviter de debug votre programme avec des `printf` et de résoudre votre problème plus facilement.
Vous devriez apprendre à utiliser également un debugger (`gdb` par exemple`).——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:54 pm #34039
Votre programme doit être compilé avec les flags `-g` et `-ggdb3` afin de demander à votre compilateur `gcc` d’ajouter des informations de debug dans votre binaire (format DWARF).
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:54 pm #34040
Vous pourrez ensuite installer `gdb` et/ou `valgrind`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:54 pm #34041
D’accord c’est noté, je vais me pencher dessus.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:57 pm #34042
Lancer votre programme compilé avec ces flags vous permettra de voir l’endroit exact où se trouve l’erreur, par exemple:
1. Lancer `gdb ./a.out`
2. Le programme s’arrête automatiquement sur votre problème (segfault par exemple)
3. Puis afficher la backtrace avec la commande: `bt` à entrer dans l’interface de `gdb`
4. Les fonctions et la ligne exact dans votre code source va s’affiche (grâce aux flags de debug insérer lors de la compilation)——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 3:57 pm #34043
L’outil `valgrind` n’est pas un debugger mais pour votre problème il vous permettra d’aller encore plus loin.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:00 pm #34044
En effet, il est possible qu’une variable de votre programme soit mal initialisée et donc ses informations seront aléatoires (en fonction des données contenues dans votre RAM à ce moment là, par exemple si vous venez d’allumer votre ordinateur il est fort probable que votre RAM soit rempli de valeur NULL et donc que la valeur de votre variable soit initialisée à 0 mais au bout de plusieurs lancement de programmes puis fin de programme la RAM va être initialisée avec des valeurs qui ne seront peut être pas 0), c’est peut-être la raison pour laquelle votre programme segfault une fois sur deux.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:01 pm #34045
L’outil `valgrind` est capable de détecter les problèmes de variable non-initialisée même dans le cas où votre programme ne segfault pas.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:01 pm #34049
D’accord, merci pour vos explications.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:24 pm #34054
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:25 pm #34055
Merci j’ai pu savoir où se trouve mon problème normalement, il me reste plus qu’à comprendre la cause.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:28 pm #34056
Vous pouvez utiliser la commande `bt` comme mentionné plus haut pour voir chaque fonction appelante.
Vous pouvez également voir que votre variable `deb` semble avoir une valeur incohérente pour une adresse (pointeur).——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:32 pm #34057
Donc sur cette capture, je dois en conclure que l’erreur est causée par
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:33 pm #34058
Oui.
Vous pouvez afficher dans `gdb` le contenu des variables avec la commande `print` ou plus court `p nom_de_la_variable`.——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:33 pm #34059
Par exemple: `p deb`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:34 pm #34060
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:35 pm #34061
En effet, de tenter d’accéder au champ `p` de la structure `deb` semble cause le segfault.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:35 pm #34062
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:35 pm #34063
et en faisant la même démarche mais sur ->p
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:35 pm #34064
Pouvez-vous m’envoyer une capture d’écran de la commande: `bt` ?
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:36 pm #34065
Capture du retour de la commande
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:36 pm #34066
Vous pouvez-voir ici que le contenu de deb à changer au bout de la deuxième récursivité comme ce que vous aviez identifié.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:37 pm #34067
C’est exact
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:37 pm #34068
Cela serait dû à la ligne: `automate.c:33`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:38 pm #34069
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:39 pm #34070
En effet, la première itération va mettre à jour `deb->suiv`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:39 pm #34071
Cette mise à jour correspond au retour de la fonction `deb_sup_t`, donc soit 0 ou soit 1.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:40 pm #34072
Lors du deuxième passage `deb->suiv` vaut soit 0 soit 1 + l’offset du champ `suiv`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:41 pm #34073
Ce n’est qu’une supposition, afin d’être certain vous pouvez poser un breakpoint à la ligne 33 de votre fonction inserer_trie.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:42 pm #34074
Pour cela:
1. Ouvrez votre programme avec gdb: `gdb a.out`
2. Poser un breakpoint: `b automate.c:33`
3. Lancer à nouveau votre programme: `run` ou `r`——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:43 pm #34075
Le programme va s’arrêter sur la ligne automate.c:33 et vous pourrez afficher les variables avant qu’elles ne soient modifiées
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:43 pm #34076
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:44 pm #34077
Voici les variables avant la modification en posant un breakpoint à la ligne 33 du fichier automate.c
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:44 pm #34078
Vous pouvez afficher la structure ainsi: `p *t`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:44 pm #34079
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:45 pm #34080
Le problème se trouve ici.
Votre champ `suiv` vaut NULL et pourtant vous essayé d’accéder au champ `deb->p`.——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:47 pm #34081
deb->suiv = inserer_trie(deb->suiv,t); // ligne 33
int deb_sup_t (strut transition *deb, strut transition *t) { if (deb->p > t->p) return 1; // ligne 20 ....
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:48 pm #34082
Bizarre
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:49 pm #34083
La variable deb ici représente les transitions de mon automate
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:52 pm #34084
La correction pourrait éventuellement être de modifier le return code afin de ne pas passer un `int` mais plutôt d’assigner un nouveau nœud à votre champ `suiv`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:54 pm #34085
Malheureusement je ne peux pas modifier le squelette du code qui nous est fourni.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:55 pm #34086
Donc je devrais résoudre le problème depuis la méthode AUTOMATE déterminise (AUTOMATE A)
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:55 pm #34087
Il sera nécessaire, dans ce cas, de vérifier le retour de la fonction `deb_sup_t` à part puis d’assigner ensuite un nouveau nœud de transition en fonction du retour de cette booléenne.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:58 pm #34088
Par exemple:
C’est à vérifié, je n’ai pas connaissance de l’entièreté du code, mais c’est une idée.if (inserer_trie(deb->suiv,t) == 1) { return dev->suiv; } return deb;
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 4:59 pm #34089
Votre fonction va tout d’abord vérifier si: `if (!deb) return t;`, ce qui aura conséquence de protéger des segfault si `deb->suiv` vaut NULL.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:01 pm #34090
Cependant la méthode inserer_trie renvoie une *struct transition* et non pas un int.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:02 pm #34091
Seulement la méthode deb_sup_t retourne une valeur booléenne.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:03 pm #34092
Oui, c’est la raison de votre SIGSEGV.
Le champ `suiv` cependant est une transition.strut transition { // Transition de l'état p vers l'état q ave la lettre a unsigned int p; har a; unsigned int q; strut transition *suiv; };
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:04 pm #34093
Oui, c’est une deuxième erreur dans votre code.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:06 pm #34094
-
décembre 16, 2023 à 5:07 pm #34095
Mais pour le changement du contenu de deb dans cette capture, cela n’est-il pas normal car lors du premier appel deb contient A.T (toutes les transitions de mon automate) et lors du deuxième appel nous appellons seulement sur deb->suiv.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:09 pm #34096
Vous pourriez essayer une approche différente pour bien comprendre ce qu’il se passe.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:10 pm #34097
Vous pouvez à nouveau utiliser le debugger `gdb` et exécuter les instructions ligne par ligne
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:10 pm #34098
Vous pouvez poser un breakpoint au début de la fonction `ajoute_une_transition`: `b ajoute_une_transition`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:12 pm #34099
Lancez le programme avec `run`, puis utilisez la commande `n` (next) pour aller à la ligne suivante et ne pas entrer dans le code des fonctions ou `s` (step) pour entrer dans le code de vos fonctions.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:12 pm #34100
Vous pourriez ainsi afficher ligne par ligne les valeurs de vos variables et mieux comprendre leur changement ligne par ligne.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:13 pm #34101
Vous pouvez même mettre un point d’arrêt (breakpoint) au niveau du point d’entrée de votre programme (fonction `main`) avec de la patience vous finirez par comprendre ce qu’il se passe.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:13 pm #34102
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:14 pm #34103
Après avoir posé un breakpoint ce message ne fait qu’apparaître.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:14 pm #34104
Avez-vous compilé avec les flags `-g` et `-ggdb3` ?
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:15 pm #34105
Oh j’ai oublié désolé.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:18 pm #34106
Courage, vous allez y arriver ! 🙂
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:18 pm #34107
Je suis bien obligé d’y arriver ^^
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:18 pm #34108
Mais merci de votre patience.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:21 pm #34109
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:21 pm #34110
Pour la première insertion tout est bon.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:22 pm #34111
Vous pouvez maintenant continuer avec la commande `step` ou `next`.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:22 pm #34112
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:22 pm #34113
Une fois à la 2e cette transition n’est pas correcte.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:23 pm #34114
q devrait valoir 2
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:23 pm #34115
et non 1
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:24 pm #34116
ah non je me suis trompé
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:24 pm #34117
Ceci est la création de mon automate.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:49 pm #34118
Je suis enfin à ma méthode déterminise ^^
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:50 pm #34119
Désolé pour l’attente mon expression régulière est plutôt grosse.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 5:54 pm #34120
Je comprends, j’espère que la compréhension de votre problème s’éclaire.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:10 pm #34121
Dans le débuggeur, existe-t-il une manière de sauter une partie de code ? Plus précisément j’aimerais si possible sauter la partie de la création de mon automate ainsi que la suppression des epsilons transitions afin d’arriver directement sur ma méthode de déterminisation.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:12 pm #34122
Oui, la commande next permet de ne pas entrer dans ces fonctions, vous pouvez également poser un breakpoint après ces bouts de code puis faire un `c`, continue pour aller directement au prochain breakpoint.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:13 pm #34123
Il est également possible de faire des breakpoint conditionnel, par exemple en fonction d’une valeur d’une variable s’arrêter sur le breakpoint ou non, voire aller encore plus loin en écrivant des scripts à la volée ou même dans un fichier dédié à gdb, cela permet d’automatiser des tests par exemple.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:14 pm #34124
D’accord merci pour les précisions, cela me permettra de gagner un peu de temps.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:18 pm #34125
Je me trouve juste avant l’insertion causant le problème.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:24 pm #34126
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:24 pm #34127
Avant l’entrée dans la méthode inserer_trie voici les valeurs de deb et t
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:25 pm #34128
Sachant que deb représente les transitions de A_determinise (l’automate déterministe que je construis).
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:29 pm #34129
Normalement j’ai compris
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:30 pm #34130
La segmentation fault est déclenchée car on ne peut pas accéder à l’adresse mémoire de deb->suiv
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:30 pm #34131
Oui.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:31 pm #34132
Je suis peut être allé un peu vite dans mon explication précédente mais c’était ce que j’ai essayé de vous dire.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:31 pm #34133
Voir ici.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:32 pm #34134
Vos explications étaient claires pour moi ne vous inquiétez pas. C’est juste que c’est une première pour moi les débuggeurs ^^
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:32 pm #34135
Je vois, vous ne pourrez probablement plus vous en passer maintenant.
Vous allez être capable de résoudre vos problèmes plus facilement.——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:33 pm #34136
Il faut seulement s’armer de patience.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:33 pm #34137
Effectivement.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:34 pm #34138
Juste ce qui me trouble c’est comment j’ai pu donc faire dans ma méthode supprimer_epsilon_transitions pour ne pas avoir ce même problème.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:36 pm #34139
Il n’y a pas de notion de récursivité dans cette fonction, c’est sans doute plus aisé de visualiser le fonctionnement.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:36 pm #34140
Ainsi une simple boucle permet de passer à l’état suivant:
`struct transition *next = supp_e->suiv;`——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:38 pm #34141
La récursivité à tendance à poser des problèmes de représentation car elle est moins intuitive qu’une boucle.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:39 pm #34142
Le principe est cependant semblable à une boucle.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:43 pm #34143
Les résultats d’une fonction récursive sont en général passer en paramètre de la fonction récursive ce qui a pour effet d’enregistrer automatiquement en mémoire les précédentes valeurs d’une fonction, là où avec une boucle il est nécessaire d’allouer de la mémoire manuellement pour les valeurs précédentes si celle-ci change à chaque tour de boucle.
Ce n’est peut être pas clair pour le moment et mon explication peut sembler évasive pour l’instant mais un exercice intéressant pour bien comprendre ces deux concepts serait de: s’entraîner à coder un programme qui utilise une fonction récursive puis coder un même programme qui n’utilise pas de récursivité mais uniquement des boucles, cela permettra de mieux appréhender les différences.——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:50 pm #34144
La récursivité est en général à proscrire quand c’est possible, pour plusieurs raison:
– La récursivité est limité en nombre de récursion car elle va utiliser de la mémoire RAM qui est limité en nombre, cela est parfois difficile à contrôler par rapport à une démarche itérative (boucle et allocation manuelle)
– Elle rend le debug plus difficile, en effet, comme vous avez pu le voir avec `gdb` il peut être plus difficile de comprendre ce qu’il se passe car la même fonction dans la backtrace apparait
– La difficulté à maintenir le code, principalement lié au fait de la difficulté de visualisation, cela reste cependant qu’une question d’habitude
L’avantage principal d’une récursion reste le gain de lignes de code conséquent par rapport à une boucle.——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:51 pm #34145
C’est avant tout une question de goût.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 6:52 pm #34146
Compris.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 11:18 pm #34149
Bonsoir , en continuant mon projet j’ai implémenté une méthode permettant de rendre complet mon automate cependant bien que mon résultat possède les bonnes transitions ainsi que le bon nombre d’états lors de l’affichage, mes transitions sont affichées à l’infini.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 11:34 pm #34150
Le temps qui vous est imparti est peut-être limité mais il serait intéressant d’avoir une visualisation avec un logiciel tel que GraphViz afin d’avoir un affichage graphique sur les états et transitions de votre automate.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 11:35 pm #34151
Je viens tout juste de régler mon soucis ^^
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 11:35 pm #34152
Félicitation !
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 11:35 pm #34153
Mais je compte également jeter un petit coup d’oeil à votre proposition.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 16, 2023 à 11:35 pm #34154
Merci.
——————–
cwano – Envoyé depuis le Discord : Culte du code -
décembre 17, 2023 à 5:42 pm #34185
[Résolu] Méthode de déterminisation d’un automate (erreur Segmentation fault)
——————–
cwano – Envoyé depuis le Discord : Culte du code
-
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
Sujets récents
-
HTML/ CSS /JS/PHP – Débutant
par Bot
il y a 1 heure et 21 minutes
-
Cloud caméra
par Bot
il y a 1 jour
-
Problème écran en 144hz
par Bot
il y a 1 jour et 16 heures
-
Discord bot projetc
par Bot
il y a 1 jour et 10 heures
-
Seeking a new work as a Full Stack Developer
par Bot
il y a 3 jours et 21 heures
Réponses récentes
Statistiques des Forums
- Comptes enregistrés
- 2 604
- Forums
- 51
- Sujets
- 940
- Réponses
- 17 611
- Mot-clés du sujet
- 0