Problème de logique algorithmique (language C
Résolu
cap'tain sheeps
-
cap'tain sheeps -
cap'tain sheeps -
Bonjour,
J'ai un gros problème que je n'arrive pas à résoudre et qui est plutôt bisarre :
j'aimerais à partir d'un fichier écris avec des lignes du type :
0| | | |006|100|+S| |R|0.5|BNA/1|RT.3/Z26|RT.3/Z28|RT.3/Z30|
récupérer dans un tableau d'enregistrement les nom des connecteurs et contacts en enlevant les "|" , "/", et les infos du début.
J'ai donc fais ce code (j'ai seulement gardé la partie qui pose problème) :
Le problème est que dans mon fichierTest, il ne veut pas prendre la première lettre du connecteur des connections mis à part la première (dans cette exemple, il ne me donnera pas le R, le R puis le R :
Voyez par vous meme le contenu de mon fichier test:
0 nom du connecteur : B
0 nom du connecteur : N
0 nom du connecteur : A
0 nom du contact : 1
1 nom du connecteur : |
1 nom du connecteur : T
1 nom du connecteur : .
1 nom du connecteur : 3
1 nom du contact : Z
1 nom du contact : 2
1 nom du contact : 6
2 nom du connecteur : |
2 nom du connecteur : T
2 nom du connecteur : .
2 nom du connecteur : 3
2 nom du contact : Z
2 nom du contact : 2
2 nom du contact : 8
3 nom du connecteur : |
3 nom du connecteur : T
3 nom du connecteur : .
3 nom du connecteur : 3
J'ai essayé plusieurs choses mais c'est encore plus bisarre :
Si je saute un caractère à toutes les connections en changeant la condition du if en 1 :
Le fichier test me donne ca :
0 nom du connecteur : B
0 nom du connecteur : N
0 nom du connecteur : A
0 nom du contact : 1
1 nom du connecteur : T
1 nom du connecteur : .
1 nom du connecteur : 3
1 nom du contact : Z
1 nom du contact : 2
1 nom du contact : 6
2 nom du connecteur : T
2 nom du connecteur : .
2 nom du connecteur : 3
2 nom du contact : Z
2 nom du contact : 2
2 nom du contact : 8
3 nom du connecteur : T
3 nom du connecteur : .
3 nom du connecteur : 3
quelqu'un pourrait-il m'expliquer ce que mon programme a contre ces R? Parce que ca fait un petit moment que je suis sur ce problème ...
Merci d'avance !
Sheeps.
J'ai un gros problème que je n'arrive pas à résoudre et qui est plutôt bisarre :
j'aimerais à partir d'un fichier écris avec des lignes du type :
0| | | |006|100|+S| |R|0.5|BNA/1|RT.3/Z26|RT.3/Z28|RT.3/Z30|
récupérer dans un tableau d'enregistrement les nom des connecteurs et contacts en enlevant les "|" , "/", et les infos du début.
J'ai donc fais ce code (j'ai seulement gardé la partie qui pose problème) :
while(fgetc (fichierFil) != 10)//10 étant l'entier associé au caractère "retour à la ligne"
{
//on saute les renseignements qui ne nous interresent pas
while(iSaut < 10)
{
carac = fgetc (fichierFil);
if(carac == 124)//124 étant l'entier associé au caractère "|"
{
iSaut++;
}
}
//on récupere les connexion dans le tableau tableauConnections
if( testPremiereBoucle == 1)
{
carac = fgetc (fichierFil);
testPremiereBoucle = 0;
}
while(carac != 47)//47 étant l'entier associé au caractère "/"
{
tableauConnections[i].nomConnecteur = carac;
fprintf(fichierTest,"\n %d nom du connecteur : %c", i, tableauConnections[i].nomConnecteur);
carac = fgetc (fichierFil);
}
carac = fgetc (fichierFil);
while(carac != 124)
{
tableauConnections[i].contact = carac;
fprintf(fichierTest,"\n %d nom du contact : %c", i, tableauConnections[i].contact);
carac = fgetc (fichierFil);
}
i++;
}
Le problème est que dans mon fichierTest, il ne veut pas prendre la première lettre du connecteur des connections mis à part la première (dans cette exemple, il ne me donnera pas le R, le R puis le R :
Voyez par vous meme le contenu de mon fichier test:
0 nom du connecteur : B
0 nom du connecteur : N
0 nom du connecteur : A
0 nom du contact : 1
1 nom du connecteur : |
1 nom du connecteur : T
1 nom du connecteur : .
1 nom du connecteur : 3
1 nom du contact : Z
1 nom du contact : 2
1 nom du contact : 6
2 nom du connecteur : |
2 nom du connecteur : T
2 nom du connecteur : .
2 nom du connecteur : 3
2 nom du contact : Z
2 nom du contact : 2
2 nom du contact : 8
3 nom du connecteur : |
3 nom du connecteur : T
3 nom du connecteur : .
3 nom du connecteur : 3
J'ai essayé plusieurs choses mais c'est encore plus bisarre :
Si je saute un caractère à toutes les connections en changeant la condition du if en 1 :
if(1)
{
carac = fgetc (fichierFil);
testPremiereBoucle = 0;
}
Le fichier test me donne ca :
0 nom du connecteur : B
0 nom du connecteur : N
0 nom du connecteur : A
0 nom du contact : 1
1 nom du connecteur : T
1 nom du connecteur : .
1 nom du connecteur : 3
1 nom du contact : Z
1 nom du contact : 2
1 nom du contact : 6
2 nom du connecteur : T
2 nom du connecteur : .
2 nom du connecteur : 3
2 nom du contact : Z
2 nom du contact : 2
2 nom du contact : 8
3 nom du connecteur : T
3 nom du connecteur : .
3 nom du connecteur : 3
quelqu'un pourrait-il m'expliquer ce que mon programme a contre ces R? Parce que ca fait un petit moment que je suis sur ce problème ...
Merci d'avance !
Sheeps.
A voir également:
- Problème de logique algorithmique (language C
- Eql test logique - Forum Études / Formation High-Tech
- Autocad 2010 language pack french download - Forum AutoCAD
- Et logique excel - Guide
- Ecrire un algorithme qui permet de resoudre ax²+bx+c=0 pdf - Forum Algorithmes / Méthodes
- Vistalizator language pack windows 7 - Télécharger - Traduction
3 réponses
Je pensais que le titre en aurait captivé plus d'un ...
Je ne peux vraiment pas avancer tant que je n'ai pas cette partie du code alors UP !
Je ne peux vraiment pas avancer tant que je n'ai pas cette partie du code alors UP !
Quand tu es passé une première fois dans la boucle, tu viens de lire le | qu'il y a entre 1 et RT.3
ensuite, tu remontes au while :
while(fgetc (fichierFil) != 10)
Ce while lit aussi un caractère ; il lit donc le R sans le mettre dans carac.
La suite est logique...
tu peux t'en tirer simplement :
while((carac=fgetc (fichierFil)) != 10)
ensuite, tu remontes au while :
while(fgetc (fichierFil) != 10)
Ce while lit aussi un caractère ; il lit donc le R sans le mettre dans carac.
La suite est logique...
tu peux t'en tirer simplement :
while((carac=fgetc (fichierFil)) != 10)