impasse sur une variable ...

impasse sur une variable ... - C++ - Programmation

Marsh Posté le 25-10-2006 à 17:21:55    

Bonjour a tous,
Je me trouve face a une situation plutot difficile (pour moi xD); en effet je suis en train de travailler sur un programme, et dans celui-ci à un moment le programme dois interroger l'utilisateur concernant une nationalite, le seul probleme, et que je n'arrive pas a resoudre cela va de soi, c'est que lorsque j'execute le programme, au lieu de me demander cette fameuse nationalité, il fait directement impasse dessus et m'ecrit "code nationalite inconnu" comme dans le cas ou elle aurait ete non valavke; le seul hic etant ue je ne l'ai pas tapée ...
 
Je me permet de vous copier la source avec en gras le moment ou ce probleme apparait:
 
 

typedef char CH15[16];
typedef char CH2[3];
typedef char CH20[21];
typedef char CH10[11];
 
struct skieur {  CH15 nom; CH2 nat;int doss; };
void main()
{
 int nbp,doss,i;
 skieur Tskieur[20];
 CH20 nomlu;
 CH2 nat;
 CH2 codnat;
 CH10 natio;
 i=0;
 nbp=0;
 doss=0;
 char r;
 
// ---------------------  PHASE 1:LES INSCRIPTIONS  ---------------------  
 
printf("Entrez un nom de candidat\n" );  
gets(nomlu);
printf("Entrez le code nationalite du candidat\n" );
gets(nat);
if(nomlu[0]!='*')
{
if(strcmp(nat,"FR" )!=0 && strcmp(nat,"IT" )!=0 && strcmp(nat,"LU" )!=0 && strcmp(nat,"PL" )!=0 && strcmp(nat,"CH" )!=0)
printf("LE CODE NATIONALITE %s EST INCONNU.\n VOTRE INSCRIPTION NE SERA PAS PRIS EN COMPTE.\n",nat);
for(i=0; i<=nbp; i=i+1)
{  
 if( strcmp(nomlu,Tskieur[i].nom)!=0 && strcmp(nat,Tskieur[i].nat)!=0 )//Test que le nom n'est pas deja present avec la nationalite entrée
 {
  i=i+1;
  strcpy(nomlu,Tskieur[nbp].nom);
  strcpy(nat,Tskieur[nbp].nat);
  Tskieur[nbp].doss=nbp;
  nbp=nbp+1;
 }
 else
printf("candidat deja enregistre\n" );
}//Fin du for
 }
 for(i=0;i<=nbp;i=i+1)
 {
  printf("%s \n %s \n %d\n",Tskieur[i].nom,Tskieur[i].nat,Tskieur[i].doss);
 }
 printf("Voulez-vous afficher les candidats par nationalité ? (O pour OUI et N pour NON) \n" );
 r=getchar();
 while(r='O')
 {
  printf("AFFICHAGE DES CANDIDATS\n" );  
  system("pause" );
 printf("Entrez le code nationalite du candidat\n" );
   gets(nat);
  if(strcmp(nat,"FR" )!=0 && strcmp(nat,"IT" )!=0 && strcmp(nat,"LU" )!=0 && strcmp(nat,"PL" )!=0 && strcmp(nat,"CH" )!=0)
  {
   printf("LE CODE NATIONALITE %s EST INCONNU.\n ",nat);
  }

  if(codnat=="FR" )strcpy("FRANCE",natio);
  if(codnat=="IT" )strcpy("ITALIE",natio);
  if(codnat=="LU" )strcpy("LUXEMBOURG",natio);
  if(codnat=="PL" )strcpy("POLOGNE",natio);
  if(codnat=="CH" )strcpy("SUISSE",natio);
  if(nbp=0)
   printf("%s %s AUCUN INSCRIT\n",natio,codnat);  
  if(nbp>0)
  {
   for(i=0;i<=nbp;i=i+1)
   {
    if(strcmp(nat,Tskieur[i].nat)==0)
     printf("%s %s %d\n",Tskieur[i].nom,Tskieur[i].nat,Tskieur[i].doss);//ecrire ausse le libelle nationalite
   }
  }
 system("pause" );
 }
 
 
 
 
// ---------------------  FIN DE LA PHASE 1  ---------------------  
 
 system("pause" );
 }//Fin du programme

 
 
 
Voila, sinon j'utilise Visual Studio 2005. Je suis désolé de copier un code comme ca, je sais que ce n'est pas tres lisible comme ca mais je suis vraiment a court de solutions.
Merci beaucoup de votre aide

Reply

Marsh Posté le 25-10-2006 à 17:21:55   

Reply

Marsh Posté le 25-10-2006 à 17:27:32    

Il faut éviter d'utiliser gets, surtout quand on ne le comprend pas.
 
1. C'est une fonction C, donc il n'y a pas lieu de l'utiliser si tu fais du C++ (mais je crois que tu t'es planté de cat, je ne vois que du C dans ton programme)
2. http://mapage.noos.fr/emdel/notes.htm#saisie (je te conseille de lire le reste du site, il est très instructif quand on débute)
3. Pour le forum, si tu veux poster du code précède le de [code] et ferme le avec [/code]


Message édité par masklinn le 25-10-2006 à 17:27:55

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 25-10-2006 à 17:51:49    

en fait, le probleme c'est que c'est ce qu'on nous apprend en cours, utiliser la fonction gets donc je vois pas quoi utiliser d'autre, a mon avis ca doit etre possible comme cela nan ?

Reply

Marsh Posté le 25-10-2006 à 17:53:43    

Zoltan87 a écrit :

en fait, le probleme c'est que c'est ce qu'on nous apprend en cours


C'est quand même une fonction à ne pas utiliser [:spamafote]  

Zoltan87 a écrit :

utiliser la fonction gets donc je vois pas quoi utiliser d'autre, a mon avis ca doit etre possible comme cela nan ?


Tu as lu le site dont je t'ai filé l'adresse?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 25-10-2006 à 18:19:15    

oui j'ai lu, attentivement, mais je comprends pas, moije voudrais inviter a saisir une chaine de deux caracteres donc la fonction a utiliser serait gets ... me trompe-je ?

Reply

Marsh Posté le 25-10-2006 à 18:33:37    

fgets


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 25-10-2006 à 18:40:39    

merci Masklinn

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed