Prog C , ou est l'erreur
Résolu
Soufedj
-
Soufedj -
Soufedj -
Bonjour,
Je débute en C , j'essaye d'écrire un pgm qui me fait une liste de citoyens dont je fais plusieurs opérations sur celle ci
et j'ai un petit souci , lorsque j'entre les données dans la liste et que je veut faire une autre opération le pgm sort directement ,
un coup de main serait vraiment très apprécie ^^
les autres procedures ou fonction a part creation , importe peu pour l'instant , je veu juste que creation marche et que je peu choisire une autre opération a faire ,
voici le code :
#include<stdio.h>
#include<stdlib.h>
char num;
typedef struct pers {
char nc ;
char nom [10];
char prenom [10];
char adresse [20];
char date ;
char lieu[20];
char nation[20];
char dv ;
pers*suiv;
pers*prec;
}pers;
struct pers *tete,*e;
void creation (void)
{
char rep='o';
while (rep=='o')
{
e=(pers*)malloc(sizeof(pers));
if (tete==NULL)
{
printf("entrez le numero de la cn \n");
_flushall();
scanf("%s",&e->nc);
printf ("entrez le nom\n");
_flushall();
scanf ("%s",&e->nom);
printf ("prenom?\n");
_flushall();
scanf ("%s",&e->prenom);
printf ("entrez l'adresse\n");
_flushall();
scanf ("%s",&e->adresse);
printf ("entrez la date de naissance\n");
_flushall();
scanf ("%d",&e->date);
printf ("entrez le lieu de naissance\n");
_flushall();
scanf ("%s",&e->lieu);
printf ("entrez la nationalité\n");
_flushall();
scanf ("%s",&e->nation);
printf ("entrez la date de délivrance\n");
_flushall();
scanf ("%s",&e->dv);
}
else {
printf("liste pas vide , entrez un nouveu element \n" );
printf("entrez le numero de la cn \n");
_flushall();
scanf("%s",&e->nc);
printf ("entrez le nom\n");
_flushall();
scanf ("%s",&e->nom);
printf ("prenom?\n");
_flushall();
scanf ("%s",&e->prenom);
printf ("entrez l'adresse\n");
_flushall();
scanf ("%s",&e->adresse);
printf ("entrez la date de naissance\n");
_flushall();
scanf ("%d",&e->date);
printf ("entrez le lieu de naissance\n");
_flushall();
scanf ("%s",&e->lieu);
printf ("entrez la nationalité\n");
_flushall();
scanf ("%s",&e->nation);
printf ("entrez la date de délivrance\n");
_flushall();
scanf ("%s",&e->dv);
}
tete=e;
e->suiv=NULL;
e->prec=NULL;
printf ("avez vous une autre personne a entrez? o / n ");
_flushall();
scanf ("%s",&rep);
_flushall();
}
}
void consultation (void)
{
printf("la liste des citoyens \n ");
e=tete;
if (e==NULL)
{
printf(" la liste est vide \n");
}
else
{
while ( e!=NULL )
{
puts("");
puts("========================================");
printf("%d",e->nc);
printf("%s",e->nom);
printf("%s",e->prenom);
printf("%s",e->adresse);
printf("%s",e->lieu);
printf("%s",e->date);
printf("%s",e->nation);
printf("%s",e->dv);
puts("========================================");
puts("");
e=e->suiv;
}
}
}
int totale ()
{
int co;
co=0;
e=tete;
if (e==NULL)
{
printf("il n'ya aucun citoyen enregistré \n");
}
else
{
while (e!=NULL)
{
e=e->suiv;
co=co++;
}
printf (" le nombre totale de citoyens enregistrés est : %d \n",co );
}
return 0 ;
}
int recherche ()
{
printf("entrez le numero de la cn de la personne ");
_flushall();
scanf("%s",&num);
if (e==NULL)
{
printf("la liste est vide \n ");
}
else
{
if ( num==e->nc)
{
printf("son adresse est %s:",e->adresse );
}
else
{
while ((e->suiv!=NULL) && (e->nc != num ))
{
e=e->suiv;
}
if (e->suiv==NULL)
{
printf("la personne n'a pas eté trouvé");
}
else
{
printf("son adresse est %s:",e->adresse );
}
}
}
return 0;
}
main ()
{
tete = NULL ;
char ans='o';
int choice ;
while (ans == 'o' )
{
puts (" 1 - enregistrez un citoyens ");
puts (" 2 - Chercher un citoyen ");
puts (" 3 - Suprimer un citoyen ");
puts (" 4 - Consultaion ") ;
puts (" 5 - Nombre total des citoyen ");
puts (" 6 - Quiter ! ");
printf("choisissez une opération :\n");
scanf("%d",&choice);
if (choice == 1)
{
creation();
}
if (choice==2)
{
recherche();
}
if (choice == 4)
{
consultation();
}
if (choice == 5)
{
totale();
}
if (choice == 6)
{
puts(" au revoir ");
}
_flushall();
printf("avez vous une autre opération a faire ? o / n " );
_flushall();
scanf("%s",& ans );
}
}
Je débute en C , j'essaye d'écrire un pgm qui me fait une liste de citoyens dont je fais plusieurs opérations sur celle ci
et j'ai un petit souci , lorsque j'entre les données dans la liste et que je veut faire une autre opération le pgm sort directement ,
un coup de main serait vraiment très apprécie ^^
les autres procedures ou fonction a part creation , importe peu pour l'instant , je veu juste que creation marche et que je peu choisire une autre opération a faire ,
voici le code :
#include<stdio.h>
#include<stdlib.h>
char num;
typedef struct pers {
char nc ;
char nom [10];
char prenom [10];
char adresse [20];
char date ;
char lieu[20];
char nation[20];
char dv ;
pers*suiv;
pers*prec;
}pers;
struct pers *tete,*e;
void creation (void)
{
char rep='o';
while (rep=='o')
{
e=(pers*)malloc(sizeof(pers));
if (tete==NULL)
{
printf("entrez le numero de la cn \n");
_flushall();
scanf("%s",&e->nc);
printf ("entrez le nom\n");
_flushall();
scanf ("%s",&e->nom);
printf ("prenom?\n");
_flushall();
scanf ("%s",&e->prenom);
printf ("entrez l'adresse\n");
_flushall();
scanf ("%s",&e->adresse);
printf ("entrez la date de naissance\n");
_flushall();
scanf ("%d",&e->date);
printf ("entrez le lieu de naissance\n");
_flushall();
scanf ("%s",&e->lieu);
printf ("entrez la nationalité\n");
_flushall();
scanf ("%s",&e->nation);
printf ("entrez la date de délivrance\n");
_flushall();
scanf ("%s",&e->dv);
}
else {
printf("liste pas vide , entrez un nouveu element \n" );
printf("entrez le numero de la cn \n");
_flushall();
scanf("%s",&e->nc);
printf ("entrez le nom\n");
_flushall();
scanf ("%s",&e->nom);
printf ("prenom?\n");
_flushall();
scanf ("%s",&e->prenom);
printf ("entrez l'adresse\n");
_flushall();
scanf ("%s",&e->adresse);
printf ("entrez la date de naissance\n");
_flushall();
scanf ("%d",&e->date);
printf ("entrez le lieu de naissance\n");
_flushall();
scanf ("%s",&e->lieu);
printf ("entrez la nationalité\n");
_flushall();
scanf ("%s",&e->nation);
printf ("entrez la date de délivrance\n");
_flushall();
scanf ("%s",&e->dv);
}
tete=e;
e->suiv=NULL;
e->prec=NULL;
printf ("avez vous une autre personne a entrez? o / n ");
_flushall();
scanf ("%s",&rep);
_flushall();
}
}
void consultation (void)
{
printf("la liste des citoyens \n ");
e=tete;
if (e==NULL)
{
printf(" la liste est vide \n");
}
else
{
while ( e!=NULL )
{
puts("");
puts("========================================");
printf("%d",e->nc);
printf("%s",e->nom);
printf("%s",e->prenom);
printf("%s",e->adresse);
printf("%s",e->lieu);
printf("%s",e->date);
printf("%s",e->nation);
printf("%s",e->dv);
puts("========================================");
puts("");
e=e->suiv;
}
}
}
int totale ()
{
int co;
co=0;
e=tete;
if (e==NULL)
{
printf("il n'ya aucun citoyen enregistré \n");
}
else
{
while (e!=NULL)
{
e=e->suiv;
co=co++;
}
printf (" le nombre totale de citoyens enregistrés est : %d \n",co );
}
return 0 ;
}
int recherche ()
{
printf("entrez le numero de la cn de la personne ");
_flushall();
scanf("%s",&num);
if (e==NULL)
{
printf("la liste est vide \n ");
}
else
{
if ( num==e->nc)
{
printf("son adresse est %s:",e->adresse );
}
else
{
while ((e->suiv!=NULL) && (e->nc != num ))
{
e=e->suiv;
}
if (e->suiv==NULL)
{
printf("la personne n'a pas eté trouvé");
}
else
{
printf("son adresse est %s:",e->adresse );
}
}
}
return 0;
}
main ()
{
tete = NULL ;
char ans='o';
int choice ;
while (ans == 'o' )
{
puts (" 1 - enregistrez un citoyens ");
puts (" 2 - Chercher un citoyen ");
puts (" 3 - Suprimer un citoyen ");
puts (" 4 - Consultaion ") ;
puts (" 5 - Nombre total des citoyen ");
puts (" 6 - Quiter ! ");
printf("choisissez une opération :\n");
scanf("%d",&choice);
if (choice == 1)
{
creation();
}
if (choice==2)
{
recherche();
}
if (choice == 4)
{
consultation();
}
if (choice == 5)
{
totale();
}
if (choice == 6)
{
puts(" au revoir ");
}
_flushall();
printf("avez vous une autre opération a faire ? o / n " );
_flushall();
scanf("%s",& ans );
}
}
A voir également:
- Prog C , ou est l'erreur
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
7 réponses
Je te répond rapidement avant d'aller me coucher:
d'après GCC: struct pers n'a pas de menbre nommé prec ou suiv.
erreur l.18 102 103 142 162 193 195 197
d'après GCC: struct pers n'a pas de menbre nommé prec ou suiv.
erreur l.18 102 103 142 162 193 195 197
Soufedj
merci aramir , je vais voir
Bonjour,
C'est une bonne idée d'éviter d'avoir plusieurs fois les mêmes lignes de code écrites comme ici :
puisque les scanf sont exécutés dans les deux cas, pourquoi ne pas écrire simplement :
?
Ce genre de choses éclaircit le code, donc améliore sa lisibilité (pour trouver un bug ou simplement relire son programme après quelques semaines) et aussi évite des bugs (on modifie une partie, mais on oublie de modifier l'autre qui fait exactement la même chose)
C'est une bonne idée d'éviter d'avoir plusieurs fois les mêmes lignes de code écrites comme ici :
if (tete==NULL) { printf("entrez le numero de la cn \n"); _flushall(); scanf("%s",&e->nc); printf ("entrez le nom\n"); _flushall(); scanf ("%s",&e->nom); printf ("prenom?\n"); _flushall(); scanf ("%s",&e->prenom); printf ("entrez l'adresse\n"); _flushall(); scanf ("%s",&e->adresse); printf ("entrez la date de naissance\n"); _flushall(); scanf ("%d",&e->date); printf ("entrez le lieu de naissance\n"); _flushall(); scanf ("%s",&e->lieu); printf ("entrez la nationalité\n"); _flushall(); scanf ("%s",&e->nation); printf ("entrez la date de délivrance\n"); _flushall(); scanf ("%s",&e->dv); } else { printf("liste pas vide , entrez un nouveu element \n" ); printf("entrez le numero de la cn \n"); _flushall(); scanf("%s",&e->nc); printf ("entrez le nom\n"); _flushall(); scanf ("%s",&e->nom); printf ("prenom?\n"); _flushall(); scanf ("%s",&e->prenom); printf ("entrez l'adresse\n"); _flushall(); scanf ("%s",&e->adresse); printf ("entrez la date de naissance\n"); _flushall(); scanf ("%d",&e->date); printf ("entrez le lieu de naissance\n"); _flushall(); scanf ("%s",&e->lieu); printf ("entrez la nationalité\n"); _flushall(); scanf ("%s",&e->nation); printf ("entrez la date de délivrance\n"); _flushall(); scanf ("%s",&e->dv); }
puisque les scanf sont exécutés dans les deux cas, pourquoi ne pas écrire simplement :
if (tete!=NULL) { printf("liste pas vide , entrez un nouveu element \n" ); } printf("entrez le numero de la cn \n"); _flushall(); scanf("%s",&e->nc); printf ("entrez le nom\n"); _flushall(); scanf ("%s",&e->nom); printf ("prenom?\n"); _flushall(); scanf ("%s",&e->prenom); printf ("entrez l'adresse\n"); _flushall(); scanf ("%s",&e->adresse); printf ("entrez la date de naissance\n"); _flushall(); scanf ("%d",&e->date); printf ("entrez le lieu de naissance\n"); _flushall(); scanf ("%s",&e->lieu); printf ("entrez la nationalité\n"); _flushall(); scanf ("%s",&e->nation); printf ("entrez la date de délivrance\n"); _flushall(); scanf ("%s",&e->dv);
?
Ce genre de choses éclaircit le code, donc améliore sa lisibilité (pour trouver un bug ou simplement relire son programme après quelques semaines) et aussi évite des bugs (on modifie une partie, mais on oublie de modifier l'autre qui fait exactement la même chose)
Hello,
J'ai pas tout regardé, mais :
tu écris : scanf("%s",&e->nc); alors que e->nc est de type char.
Il faut donc utiliser %c.
Il ne faut pas mettre non plus d'esperluette (&) devant les chaînes de caractères pour afficher son adresse.
scanf ("%s",&e->nom);
Il faut mettre : e->nom tout simplement.
De plus attention avec ton utilisation des scanf. Tu ne fais aucun contrôle sur la taille. C'est pourquoi il vaut mieux utiliser fgets avec les contrôles qui vont bien. Tu peux même faire une fonction pour rendre encore le tout plus propre.
Le prototype de main() sans argument est : int main(void). Il ne faut pas non plus oublier de renvoyer 0 ou EXIT_SUCCESS enfin de programme pour signaler que tout va bien.
Corrige tout ces points et n'hésite pas à reposter la nouvelle version s'il y a toujours des erreurs en les décrivant.
Cdlt,
J'ai pas tout regardé, mais :
tu écris : scanf("%s",&e->nc); alors que e->nc est de type char.
Il faut donc utiliser %c.
Il ne faut pas mettre non plus d'esperluette (&) devant les chaînes de caractères pour afficher son adresse.
scanf ("%s",&e->nom);
Il faut mettre : e->nom tout simplement.
De plus attention avec ton utilisation des scanf. Tu ne fais aucun contrôle sur la taille. C'est pourquoi il vaut mieux utiliser fgets avec les contrôles qui vont bien. Tu peux même faire une fonction pour rendre encore le tout plus propre.
Le prototype de main() sans argument est : int main(void). Il ne faut pas non plus oublier de renvoyer 0 ou EXIT_SUCCESS enfin de programme pour signaler que tout va bien.
Corrige tout ces points et n'hésite pas à reposter la nouvelle version s'il y a toujours des erreurs en les décrivant.
Cdlt,
voici mon nouveau code , dont j'ai pas fait de grand changement a part le ' & ' d'adressage que j'ai enlevé des chaines de caracteres , et le int main(void)
, et mettre EXIT SUCCESS a la fin
j'ai oublié de preciser que je travaille avec Code:Blocks ,
si quelqun pourrait l'essayer sur C et voir comment se comporte le programme
voici ce que me retourne le programme Process terminated with status -1073741819
Merci beacoup pour votre aide
, et mettre EXIT SUCCESS a la fin
j'ai oublié de preciser que je travaille avec Code:Blocks ,
si quelqun pourrait l'essayer sur C et voir comment se comporte le programme
voici ce que me retourne le programme Process terminated with status -1073741819
Merci beacoup pour votre aide
#include<stdio.h> #include<stdlib.h> char num; typedef struct pers { char nc ; char nom [10]; char prenom [10]; char adresse [20]; char date ; char lieu[20]; char nation[20]; char dv ; pers*suiv; pers*prec; }pers; struct pers *tete,*e; void creation (void) { char rep='o'; while (rep=='o') { e=(pers*)malloc(sizeof(pers)); if (tete==NULL) { printf("entrez le numero de la cn \n"); _flushall(); scanf("%c",&e->nc); printf ("entrez le nom\n"); _flushall(); scanf ("%s",e->nom); printf ("prenom?\n"); _flushall(); scanf ("%s",e->prenom); printf ("entrez l'adresse\n"); _flushall(); scanf ("%s",e->adresse); printf ("entrez la date de naissance\n"); _flushall(); scanf ("%s",&e->date); printf ("entrez le lieu de naissance\n"); _flushall(); scanf ("%s",e->lieu); printf ("entrez la nationalité\n"); _flushall(); scanf ("%s",e->nation); printf ("entrez la date de délivrance\n"); _flushall(); scanf ("%c",&e->dv); } else { printf("liste pas vide , entrez un nouveu element \n" ); printf("entrez le numero de la cn \n"); _flushall(); scanf("%s",&e->nc); printf ("entrez le nom\n"); _flushall(); scanf ("%s",e->nom); printf ("prenom?\n"); _flushall(); scanf ("%s",e->prenom); printf ("entrez l'adresse\n"); _flushall(); scanf ("%s",e->adresse); printf ("entrez la date de naissance\n"); _flushall(); scanf ("%d",&e->date); printf ("entrez le lieu de naissance\n"); _flushall(); scanf ("%s",e->lieu); printf ("entrez la nationalité\n"); _flushall(); scanf ("%s",e->nation); printf ("entrez la date de délivrance\n"); _flushall(); scanf ("%s",&e->dv); } tete=e; e->suiv=NULL; e->prec=NULL; printf ("avez vous une autre personne a entrez? o / n "); _flushall(); scanf ("%s",&rep); _flushall(); } } void consultation (void) { printf("la liste des citoyens \n "); e=tete; if (e==NULL) { printf(" la liste est vide \n"); } else { while ( e!=NULL ) { puts(""); puts("========================================"); printf("%d",e->nc); printf("%s",e->nom); printf("%s",e->prenom); printf("%s",e->adresse); printf("%s",e->lieu); printf("%s",e->date); printf("%s",e->nation); printf("%s",e->dv); puts("========================================"); puts(""); e=e->suiv; } } } int main (void) { tete = NULL ; char ans='o'; int choice ; while (ans == 'o' ) { puts (" Bonjour \a "); puts (" 1 - enregistrez un citoyens "); puts (" 2 - Chercher un citoyen "); puts (" 3 - Suprimer un citoyen "); puts (" 4 - Consultaion ") ; puts (" 5 - Nombre total des citoyen "); puts (" 6 - Quiter ! "); printf("choisissez une opération :\n"); scanf("%d",&choice); if (choice == 1) { creation(); } if (choice == 4) { consultation(); } if (choice == 6) { puts(" au revoir "); } _flushall(); printf("avez vous une autre opération a faire ? o / n " ); _flushall(); scanf("%c",& ans ); } EXIT_SUCCESS; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tu as toujours ton bout de code en double dont je t'ai parlé avant
de plus je vois que ton indentation n'est pas bonne.
Ce n'est pas seulement pour faire joli, c'est primordial si tu veux pouvoir lire toi même, comprendre et faire lire et faire comprendre rapidement ton code.
La règle (simple) : après chaque accolade ouvrante tu indentes. A chaque accolade fermante tu enlève l'indentation.
de plus je vois que ton indentation n'est pas bonne.
Ce n'est pas seulement pour faire joli, c'est primordial si tu veux pouvoir lire toi même, comprendre et faire lire et faire comprendre rapidement ton code.
La règle (simple) : après chaque accolade ouvrante tu indentes. A chaque accolade fermante tu enlève l'indentation.
if (...) { code; code; while(...) { code; code; } code; }
je crois que le double code ne nui pas a la totalité du programme donc j'ai laissé
et pour l'indentation je vois pas ou est le probleme ? puisque le pgm s'execute sans probleme ( sinon c'est ou exactement l'erreur d'indentation ? :s )
je trouve toujours pas mon probleme , quand le pgm sort d'un seul coup sa veut dire quoi , et a tu vu le Process terminated with status -1073741819
sa veut dire quoi sa aussi ?
et pour l'indentation je vois pas ou est le probleme ? puisque le pgm s'execute sans probleme ( sinon c'est ou exactement l'erreur d'indentation ? :s )
je trouve toujours pas mon probleme , quand le pgm sort d'un seul coup sa veut dire quoi , et a tu vu le Process terminated with status -1073741819
sa veut dire quoi sa aussi ?
d'autre part :
ici c'est comme si tu écrivais :
c'est à dire c'est comme
(instruction vide qui ne fait rien)
je pense que tu voulais dire
(main est in fonction et doit retourner qqchose)
c'est peut-être la cause de ta valeur de sortie bizarre.
EXIT_SUCCESS;
ici c'est comme si tu écrivais :
0;
c'est à dire c'est comme
;
(instruction vide qui ne fait rien)
je pense que tu voulais dire
return EXIT_SUCCESS;
(main est in fonction et doit retourner qqchose)
c'est peut-être la cause de ta valeur de sortie bizarre.
d'autre part, tu me dis "ce n'est pas ça"... oui mais non.
Une mauvaise écriture (répétition des memes lignes de code inutile, mauvaise indentation), ça laisse la porte ouverte à d'autres bugs qui peuvent se rajouter, et ça empêche de voir ceux existants. ça doit être une priorité.
Donc ça ne mange pas de pain de le faire, et de reposter ensuite ton code, qui gagnera en lisibilité (et qui donnera peut-être envie à plus de personnes de te donner un coup de main ;) )
Une mauvaise écriture (répétition des memes lignes de code inutile, mauvaise indentation), ça laisse la porte ouverte à d'autres bugs qui peuvent se rajouter, et ça empêche de voir ceux existants. ça doit être une priorité.
Donc ça ne mange pas de pain de le faire, et de reposter ensuite ton code, qui gagnera en lisibilité (et qui donnera peut-être envie à plus de personnes de te donner un coup de main ;) )
o fait ,
j'ai normalement trouvé le problème pourquoi sa passait pas ,
c'est parce que j'avais mis rep comme char , et quand j'entrais si je voulais continuer ou arrêter dans création j'ai mis rep comme "%s" alors il fallait mettre " %c "
alalallalalalal , c'était vraiment pas grand chose mais qui fait beaucoup de dégâts
je vais voir si le tout marche ou pas !
j'ai normalement trouvé le problème pourquoi sa passait pas ,
c'est parce que j'avais mis rep comme char , et quand j'entrais si je voulais continuer ou arrêter dans création j'ai mis rep comme "%s" alors il fallait mettre " %c "
alalallalalalal , c'était vraiment pas grand chose mais qui fait beaucoup de dégâts
je vais voir si le tout marche ou pas !
et pour l'indentation je vois pas ou est le probleme ? puisque le pgm s'execute sans probleme ( sinon c'est ou exactement l'erreur d'indentation ? :s )
ici par exemple :
ça devrait plutot être quelquechose comme :
(j'ai juste fait copié collé avec les erreurs... bref c'est juste pour voir les indentations)
ici par exemple :
while (rep=='o') { e=(pers*)malloc(sizeof(pers)); if (tete==NULL) { printf("entrez le numero de la cn \n"); _flushall(); scanf("%c",&e->nc); ... } else { printf("liste pas vide , entrez un nouveu element \n" ); printf("entrez le numero de la cn \n"); _flushall(); scanf("%s",&e->nc); ..... } tete=e; e->suiv=NULL; e->prec=NULL; printf ("avez vous une autre personne a entrez? o / n "); _flushall(); scanf ("%s",&rep); _flushall(); } }
ça devrait plutot être quelquechose comme :
type fonction(...) { while (rep=='o') { e=(pers*)malloc(sizeof(pers)); if (tete==NULL) { printf("entrez le numero de la cn \n"); _flushall(); scanf("%c",&e->nc); ... } else { printf("liste pas vide , entrez un nouveu element \n" ); printf("entrez le numero de la cn \n"); _flushall(); scanf("%s",&e->nc); ..... } tete=e; e->suiv=NULL; e->prec=NULL; printf ("avez vous une autre personne a entrez? o / n "); _flushall(); scanf ("%s",&rep); _flushall(); } }
(j'ai juste fait copié collé avec les erreurs... bref c'est juste pour voir les indentations)