Taille de la saisie dans cin

Taille de la saisie dans cin - C++ - Programmation

Marsh Posté le 05-05-2004 à 18:20:06    

Salut, je voudrais juste savoir s'il existe une fonction (et si oui laquelle évidement) qui peut me donner la taille d'une saisie réalisée avec le cin ?
 
Merci d'avance, a+

Reply

Marsh Posté le 05-05-2004 à 18:20:06   

Reply

Marsh Posté le 05-05-2004 à 18:22:54    

ça veut rien dire ce que tu demandes.

Reply

Marsh Posté le 05-05-2004 à 18:57:21    

sizeof cin ?
 
 
 
 
 
 
 
 
 
[:cirius]

Reply

Marsh Posté le 05-05-2004 à 19:20:41    

Ha oui c'est juste !!! J'l'avais oublié celui la. C'était simplement ca. Merci bcp ;-)

Reply

Marsh Posté le 05-05-2004 à 19:22:58    

tu nous montres ton petit programme juste pour voir si tu ne fais pas d'erreur ailleurs ?


Message édité par Taz le 05-05-2004 à 19:23:16
Reply

Marsh Posté le 05-05-2004 à 19:25:37    

Ben apparement ca veut quand meme dire qq chose Taz puisqu'on m'a répondu et correctement en plus ! C'était un bete truc mais j'avais oublié son existence !
 
Merci à toi quand même, tu m'as bien aidé ! Cela dit tu n'as pas l'air super sympa ... Tout le monde n'a pas tes compétences hein ! Alors merci quand meme et, si possible, n'oublie pas que toi aussi un jour tu as débuté ;-) Cela dis tu es serviable et ce n'est pas toujours le cas de tout le monde il faut le reconnaitre.
 
Allez a+

Reply

Marsh Posté le 05-05-2004 à 19:27:20    

n'oublie pas de dire merci à HelloWorld pour ses conseils judicieux


Message édité par Taz le 05-05-2004 à 19:27:27
Reply

Marsh Posté le 05-05-2004 à 19:28:39    

je veux bien mais j'ai co une bete question Taz... tu fais comment pour attacher un doc dans une réponse ?

Reply

Marsh Posté le 05-05-2004 à 19:29:48    

tu ne fais pas.

Reply

Marsh Posté le 05-05-2004 à 19:36:59    

:lol:
 
jackyyyyyyyyyyyyyyyyyyyyyyyyyyyy


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 05-05-2004 à 19:36:59   

Reply

Marsh Posté le 05-05-2004 à 19:43:18    

Ben comment tu veux que je te montre tout le programme alors ? Si je peux pas l'attacher !

Reply

Marsh Posté le 05-05-2004 à 19:44:10    

si tu y penses très fort, ça peut marcher ...

Reply

Marsh Posté le 05-05-2004 à 19:48:42    

Taz a écrit :

si tu y penses très fort, ça peut marcher ...

arrête de déconner là, j'ai envie de le voir son programme moi !
 
 
mono > tu nous montre la version avec le sizeof hein !
tu copies-colle avec des balises [cpp] avant et après.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-05-2004 à 19:54:09    

Oui ca je me doute nraynaud mais bon il est assez long le prog (sur 4 .cpp et 1 .h. Si je pete tout comme ca, ca va pas etre tres lisible. Merci Taz pour tes remarques très pertinantes ! C'est un "plaisir" de te connaitre !

Reply

Marsh Posté le 05-05-2004 à 19:55:17    

ben tu peux nous poster le morceau de code en question (la fonction ou quelques lignes)

Reply

Marsh Posté le 05-05-2004 à 19:55:47    

Pas grave, poste le je pense qu'on va apprendre plein de trucs grâce à toi :ange:


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 05-05-2004 à 20:09:23    

Grand News : TotalRecall est un comique !!! ;-)
Ok ben si ca peut vous amuser ma fois voici mon ti code. C'est rien d'exceptionnel, on est bien d'accord mais ca a le mérite de fonctionner (enfin plus ou moins). Merci a tous ceux qui m'ont aider et "merci" a tous ceux que cela amuse...
 
Mes déclas
 

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <iostream.h>
  5. #include <ctype.h> 
  6. #include <sstream>
  7.                                                                                          
  8. struct Page
  9. {
  10. int NumPg;
  11. struct Page * PtrNextPg;
  12. };
  13. struct Mot
  14. {
  15. char * ZoneMot;
  16. struct Page * PtrPremPg;
  17. struct Page * PtrDernPg;
  18. struct Mot * PtrNextMot;
  19. };
  20. typedef struct Mot TypeMot;
  21. typedef TypeMot * TypeMotPtr;
  22. typedef struct Page TypePage;
  23. typedef TypePage * TypePagePtr;
  24. TypeMotPtr PushMotNew ( TypeMotPtr );
  25. TypeMotPtr PushPopMotExist ( TypeMotPtr, int );
  26. TypeMotPtr PushPgWiz ( TypeMotPtr );
  27. TypeMotPtr PushPg ( TypeMotPtr );
  28. TypeMotPtr PopMot ( TypeMotPtr );
  29. TypeMotPtr PopPg ( TypeMotPtr );
  30. TypeMotPtr Mot0Pg ( TypeMotPtr, TypeMotPtr, TypeMotPtr );
  31. int GetChoix( void );
  32. int CinInt ( void );
  33. int MotIsEmpty ( TypeMotPtr );
  34. int PageIsEmpty ( TypePagePtr );
  35. void SortirPages ( TypeMotPtr );
  36. void SortirMots ( TypeMotPtr );
  37. void Affichage ( TypeMotPtr );
  38. void MenuPg ( void );
  39. void MenuPrp ( void );
  40. template <class TMP>
  41. int TestAlloc ( TMP Obj )
  42. {
  43. if (Obj == NULL)
  44. {//test d'allocation
  45.  cout << endl << endl <<"   Plus assez d'espace memoire pour memoriser quoi que ce soit !" << endl << endl;
  46.  return 0;
  47. }
  48. else return 1;
  49. };


 
 
Mon main ...

Code :
  1. #include "decla.h"
  2. void main ( void )
  3. {
  4. TypeMotPtr MotPtr = NULL;
  5. int Choix;
  6. Choix = GetChoix();
  7. while ( Choix != 6 )
  8. {
  9.  switch ( Choix )
  10.  {
  11.   case 1 :
  12.    // entrée mots & pages
  13.    MotPtr = PushMotNew ( MotPtr );
  14.   break;
  15.   case 2 :
  16.    // entrée de pages d'un mot existant
  17.    MotPtr = PushPopMotExist ( MotPtr, 1 );
  18.   break;
  19.   case 3 :
  20.    // suppression d'un mot
  21.    if ( !MotIsEmpty ( MotPtr ) )
  22.    {
  23.     MotPtr = PopMot ( MotPtr );
  24.    }
  25.    else
  26.    {
  27.     cout << endl << endl << "Il n y a plus de mot dans l index !!!" << endl << endl;
  28.    }
  29.   break;
  30.   case 4 :
  31.    // suppression d'une page
  32.    MotPtr = PushPopMotExist ( MotPtr, 0);
  33.   break;
  34.   case 5 :
  35.    // affichage de l'index et de l etat des listes chainées
  36.    Affichage (MotPtr);
  37.   break;
  38.   case 6 :
  39.    cout << endl <<"               *** Fin du programme ***" <<endl<<endl<<endl;
  40.   break;
  41.   default:
  42.    cout << endl << "Choix incorrecte !" << endl;
  43.   break;
  44.  }
  45.  system("pause" );
  46.  system("cls" );
  47.  Choix = GetChoix();
  48. }
  49. }
  50. int MotIsEmpty ( TypeMotPtr TopPtrMot )
  51. {
  52. return (TopPtrMot == NULL ? 1 : 0);
  53. }
  54. int PageIsEmpty ( TypePagePtr TopPtrPg )
  55. {
  56. return (TopPtrPg == NULL ? 1 : 0);
  57. }


 
Mon Saisie.cpp

Code :
  1. #include "decla.h"
  2. int GetChoix()
  3. {
  4. int x;
  5. bool ok = false;
  6. MenuPrp ();
  7. while ( ok != true )
  8. {
  9.  cout << endl << " Entrer votre choix :" << endl;
  10.  if (cin >> x)// fait la saisie et verifie que ca c'est bien passé.
  11.   ok = true;
  12.  else
  13.  {
  14.   cout << endl << endl << "Veuillez entrer un entier svp !!!" << endl;
  15.   system("pause" );
  16.   system("cls" );
  17.   MenuPrp ();
  18.   cin.clear(); // efface les bits erronés
  19.  }
  20.  while(cin.get() != '\n'); // vire le reste de la ligne jusqu'à arriver a la fin
  21. }
  22. return x;
  23. }
  24. int CinInt ()
  25. {
  26. int Val;
  27. while ( ! (cin >> Val) ) 
  28.  cin.clear();
  29.         cin.ignore ( sizeof (cin),'\n');
  30.  cout << endl << "Vous devez saisir un entier !!!" << endl; 
  31.  cout << "Veuillez reintroduire celui-ci ..." << endl << flush;
  32. }
  33. return Val;
  34. }


 
mon FctsPP.cpp

Code :
  1. #include "decla.h"
  2. using namespace std;
  3. TypeMotPtr PushMotNew ( TypeMotPtr TopPtrMot )
  4. {
  5. int Choix = 0;
  6. int FlagPass = 1;
  7. char * LeMot;
  8. LeMot = new ( char );
  9. if (! TestAlloc ( LeMot )) return 0;
  10. TypeMotPtr NewPtrMot;
  11. TypeMotPtr PrecPtrMot;
  12. TypeMotPtr CurrentPtrMot;
  13. CurrentPtrMot = TopPtrMot;
  14. PrecPtrMot = TopPtrMot;
  15. cout << "Entrez le mot dans l'index." << endl;
  16. cin >> LeMot;
  17. if ( TopPtrMot == NULL )
  18. {//insert du premier mot
  19.  NewPtrMot = new (TypeMot);
  20.  if (! TestAlloc ( NewPtrMot )) return 0;
  21.  NewPtrMot -> PtrNextMot = TopPtrMot;
  22.  NewPtrMot -> ZoneMot = LeMot;
  23.  NewPtrMot -> PtrPremPg = NULL;
  24.  NewPtrMot -> PtrDernPg = NULL;
  25.  TopPtrMot = NewPtrMot;
  26.  CurrentPtrMot = TopPtrMot;
  27. }
  28. else
  29. {
  30.  while (( CurrentPtrMot != NULL ) && ( strcmp ( CurrentPtrMot -> ZoneMot , LeMot ) < 0 ))
  31.  {
  32.   PrecPtrMot = CurrentPtrMot;
  33.   CurrentPtrMot = CurrentPtrMot -> PtrNextMot;
  34.  }
  35.  if ( CurrentPtrMot != NULL )
  36.  {
  37.   if (strcmp ( CurrentPtrMot -> ZoneMot , LeMot) != 0)
  38.   {// si le mot n'est pas encore repris dans l'index
  39.    NewPtrMot = new (TypeMot);
  40.    if (! TestAlloc ( NewPtrMot )) return 0;
  41.    NewPtrMot -> PtrNextMot = CurrentPtrMot;
  42.    NewPtrMot -> ZoneMot = LeMot;
  43.    NewPtrMot -> PtrPremPg = NULL;
  44.    NewPtrMot -> PtrDernPg = NULL;
  45.    if ( CurrentPtrMot == TopPtrMot )
  46.    {//insert en début
  47.     TopPtrMot = NewPtrMot;
  48.    }
  49.    else
  50.    {//insert en milieu
  51.     PrecPtrMot -> PtrNextMot = NewPtrMot;
  52.    }
  53.    CurrentPtrMot = NewPtrMot;
  54.   }
  55.   else
  56.   {
  57.    cout <<endl<<" Ce mot est deja repris dans l index !"<<endl<<endl;
  58.    FlagPass = 0;
  59.   }
  60.  }
  61.  else
  62.  {// insert en fin
  63.   NewPtrMot = new (TypeMot);
  64.   if (! TestAlloc ( NewPtrMot )) return 0;
  65.   NewPtrMot -> PtrNextMot = CurrentPtrMot;
  66.   NewPtrMot -> ZoneMot = LeMot;
  67.   NewPtrMot -> PtrPremPg = NULL;
  68.   NewPtrMot -> PtrDernPg = NULL;
  69.   PrecPtrMot -> PtrNextMot = NewPtrMot;
  70.   CurrentPtrMot = NewPtrMot;
  71.  }
  72. }
  73. if ( FlagPass == 1)
  74. {
  75.  CurrentPtrMot = PushPgWiz ( CurrentPtrMot );
  76.  TopPtrMot = Mot0Pg ( PrecPtrMot, TopPtrMot, CurrentPtrMot );
  77. }
  78. return TopPtrMot;
  79. }
  80. TypeMotPtr PushPopMotExist ( TypeMotPtr TopPtrMot, int PushOrPop )
  81. {
  82. // PushOrPop == 1 si Push
  83. // PushOrPop == 0 si Pop
  84. char * MotATrouv;
  85. MotATrouv = new ( char );
  86. if (! TestAlloc ( MotATrouv )) return 0;
  87. char * MsgVerb;
  88. TypeMotPtr PrecPtrMot;
  89. TypeMotPtr CurrentPtrMot;
  90. CurrentPtrMot = TopPtrMot;
  91. PrecPtrMot = TopPtrMot;
  92. if ( CurrentPtrMot != NULL )
  93. {
  94.  SortirMots ( TopPtrMot );
  95.  if ( PushOrPop == 1 )
  96.  {
  97.   MsgVerb = "ajouter";
  98.  }
  99.  else
  100.  {
  101.   MsgVerb = "suprimer";
  102.  }
  103.  cout << endl << " Pour lequel de ces mots desirez vous " << MsgVerb << " un numero de page dans l index ?" << endl;
  104.  cin >> MotATrouv;
  105.  while (( CurrentPtrMot != NULL ) && ( strcmp ( CurrentPtrMot -> ZoneMot , MotATrouv ) != 0 ))
  106.  {
  107.   PrecPtrMot = CurrentPtrMot;
  108.   CurrentPtrMot = CurrentPtrMot -> PtrNextMot;
  109.  }
  110.  if ( CurrentPtrMot == NULL )
  111.  {// si on est arrivé à la fin (sans trouver le mot correspondant)
  112.   cout << endl << " Ce mot n est pas encore repris dans l index !!!" << endl;
  113.  }
  114.  else
  115.  {
  116.   if ( PushOrPop == 1 )
  117.   {// insertion d'une page pour ce mot
  118.    CurrentPtrMot = PushPgWiz ( CurrentPtrMot );
  119.   }
  120.   else
  121.   {// suppression d'une page pour ce mot
  122.    CurrentPtrMot = PopPg ( CurrentPtrMot );
  123.   }
  124.   TopPtrMot = Mot0Pg ( PrecPtrMot, TopPtrMot, CurrentPtrMot );
  125.  }
  126. }
  127. else
  128. {
  129.  cout << endl << "Il n y a pas de mot dans l index !!!" << endl << endl;
  130. }
  131. return TopPtrMot;
  132. }
  133. TypeMotPtr PushPgWiz ( TypeMotPtr CurrentPtrMot )
  134. {
  135. int Choix = 0;
  136. CurrentPtrMot = PushPg ( CurrentPtrMot );
  137. cout << " ";
  138. system("pause" );
  139. system("cls" );
  140. MenuPg();
  141. cin >> Choix;
  142. while ( Choix != 3 )
  143. {
  144.  switch ( Choix )
  145.  {
  146.   case 1 :// entrer une page
  147.    CurrentPtrMot = PushPg ( CurrentPtrMot );
  148.   break;
  149.   case 2:// retirer une page
  150.    if ( !PageIsEmpty ( CurrentPtrMot -> PtrPremPg ) )
  151.    {
  152.     CurrentPtrMot = PopPg ( CurrentPtrMot );
  153.    }
  154.    else
  155.    {
  156.     cout << endl << " Il n'y a plus de page contenant ce mot" << endl;
  157.    }
  158.   break;
  159.   default:
  160.    cout << endl << endl<< " Ce Choix est incorecte !!! "<<endl;
  161.   break;
  162.  }
  163.  system("pause" );
  164.  system("cls" );
  165.  MenuPg();
  166.  cin >> Choix;
  167. }
  168. return CurrentPtrMot;
  169. }
  170. TypeMotPtr PushPg ( TypeMotPtr CurrentPtrMot )
  171. {
  172. int ValPg;
  173. TypePagePtr NewPtrPg;
  174. TypePagePtr PrecPtrPg;
  175. TypePagePtr CurrentPtrPg;
  176. PrecPtrPg = CurrentPtrMot -> PtrPremPg;
  177. CurrentPtrPg = CurrentPtrMot -> PtrPremPg;
  178. cout << "Entrez le numero de la page contenant le mot ..." << endl;
  179. ValPg = CinInt();
  180. if ( CurrentPtrMot -> PtrPremPg == NULL )
  181. {//insert premiere page
  182.  NewPtrPg = new (TypePage);
  183.  if (! TestAlloc ( NewPtrPg )) return 0;
  184.  NewPtrPg -> PtrNextPg = CurrentPtrMot -> PtrPremPg;
  185.  NewPtrPg -> NumPg = ValPg;
  186.  CurrentPtrMot -> PtrPremPg = NewPtrPg;
  187.  CurrentPtrMot -> PtrDernPg = NewPtrPg;
  188.  CurrentPtrPg = CurrentPtrMot -> PtrPremPg;
  189. }
  190. else
  191. {
  192.  while (( CurrentPtrPg != NULL ) && ( CurrentPtrPg -> NumPg < ValPg ))
  193.  {
  194.   PrecPtrPg = CurrentPtrPg;
  195.   CurrentPtrPg = CurrentPtrPg -> PtrNextPg;
  196.  }
  197.  if ( CurrentPtrPg != NULL )
  198.  {
  199.   if ( CurrentPtrPg -> NumPg != ValPg)
  200.   {// si le numero n'est pas encore repris dans l'index
  201.    NewPtrPg = new (TypePage);
  202.    if (! TestAlloc ( NewPtrPg )) return 0;
  203.    NewPtrPg -> PtrNextPg = CurrentPtrPg;
  204.    NewPtrPg -> NumPg = ValPg;
  205.    if ( CurrentPtrPg == CurrentPtrMot -> PtrPremPg )
  206.    {//insert en début
  207.     CurrentPtrMot -> PtrPremPg = NewPtrPg;
  208.    }
  209.    else
  210.    {//insert en milieu
  211.     PrecPtrPg -> PtrNextPg = NewPtrPg;
  212.    }
  213.   }
  214.   else
  215.   {
  216.    cout << endl<<" Cette page est deja repertoriee"<<endl;
  217.   }
  218.  }
  219.  else
  220.  {//insert en fin  
  221.   NewPtrPg = new (TypePage);
  222.   if (! TestAlloc ( NewPtrPg )) return 0;
  223.   NewPtrPg -> PtrNextPg = CurrentPtrPg;
  224.   NewPtrPg -> NumPg = ValPg;
  225.   PrecPtrPg -> PtrNextPg = NewPtrPg;
  226.   CurrentPtrMot -> PtrDernPg = NewPtrPg;
  227.  }
  228. }
  229. return CurrentPtrMot;
  230. }
  231. TypeMotPtr PopMot( TypeMotPtr TopPtrMot )
  232. {
  233. TypeMotPtr CurrentPtrMot = TopPtrMot;
  234. char * MotASup;
  235. TypeMotPtr PrecPtrMot = TopPtrMot;
  236. MotASup = new ( char );
  237. if (! TestAlloc ( MotASup )) return 0;
  238. if ( CurrentPtrMot != NULL )
  239. {
  240.  SortirMots ( TopPtrMot );
  241.  cout << endl << " Veuillez saisir le mot a supprimer ..." << endl;
  242.  cin >> MotASup;
  243.  while (( CurrentPtrMot != NULL ) && ( strcmp ( CurrentPtrMot -> ZoneMot , MotASup ) != 0))
  244.  {// recherche du mot a supprimer
  245.   PrecPtrMot = CurrentPtrMot;
  246.   CurrentPtrMot = CurrentPtrMot -> PtrNextMot;
  247.  }
  248.  if ( CurrentPtrMot == NULL )
  249.  {
  250.   cout << endl << "Le mot \"" << MotASup << "\" n existe pas dans l index !" << endl;
  251.  }
  252.  else
  253.  {
  254.   cout << endl << " Le mot a supprimer etait : " << MotASup <<endl;
  255.   if (CurrentPtrMot != TopPtrMot)
  256.   {
  257.    PrecPtrMot -> PtrNextMot = CurrentPtrMot -> PtrNextMot;
  258.   }
  259.   else
  260.   {
  261.    TopPtrMot = CurrentPtrMot -> PtrNextMot;
  262.   }
  263.  }
  264. }
  265. else
  266. {
  267.  cout << endl << " Aucun mot dans l index !" << endl;
  268. }
  269. return TopPtrMot;
  270. }
  271. TypeMotPtr PopPg ( TypeMotPtr CurrentPtrMot )
  272. {
  273. TypePagePtr CurrentPtrPg = CurrentPtrMot -> PtrPremPg;
  274. TypePagePtr PrecPtrPg = CurrentPtrMot -> PtrPremPg;
  275. int PgASup;
  276. if ( CurrentPtrMot != NULL )
  277. {
  278.  if ( CurrentPtrMot -> PtrPremPg != NULL )
  279.  {
  280.   SortirPages ( CurrentPtrMot );
  281.   cout << endl << " Veuillez saisir la page a supprimer ..." << endl;
  282.   PgASup = CinInt();
  283.   while (( CurrentPtrPg != NULL ) && ( CurrentPtrPg -> NumPg != PgASup ))
  284.   {// recherche de la page a supprimer
  285.    PrecPtrPg = CurrentPtrPg;
  286.    CurrentPtrPg = CurrentPtrPg -> PtrNextPg;
  287.   }
  288.   if ( CurrentPtrPg == NULL )
  289.   {
  290.    cout << endl << "La page " << PgASup << " n existe pas dans l index !" << endl;
  291.   }
  292.   else
  293.   {
  294.    cout << endl << " La page a supprimer etait la page no " << PgASup <<endl;
  295.    if ( CurrentPtrPg != CurrentPtrMot -> PtrPremPg )
  296.    {// chainage si suppresion du no au milieu ou en fin
  297.     PrecPtrPg -> PtrNextPg = CurrentPtrPg -> PtrNextPg;
  298.     if ( CurrentPtrPg == CurrentPtrMot -> PtrDernPg )
  299.     {// si suppression de la derniere page de l'index pour un mot
  300.      CurrentPtrMot -> PtrDernPg = PrecPtrPg;
  301.     }
  302.    }
  303.    else
  304.    {// chainage si suppression du no en début
  305.     CurrentPtrMot -> PtrPremPg = CurrentPtrPg -> PtrNextPg;
  306.    }
  307.   }
  308.  }
  309.  else
  310.  {
  311.   cout << endl << " Ce mot ne figure dans aucune page !" << endl;
  312.  }
  313. }
  314. else
  315. {
  316.  cout << endl << " Aucun mot dans l index !" << endl;
  317. }
  318. return CurrentPtrMot;
  319. }
  320. TypeMotPtr Mot0Pg ( TypeMotPtr PrecPtrMot, TypeMotPtr TopPtrMot, TypeMotPtr CurrentPtrMot )
  321. {
  322. char  OuiOuNon = 'x';
  323. if ( CurrentPtrMot -> PtrPremPg == NULL )
  324. {
  325.  cout << endl << " Il n'y a plus de page contenant ce mot a present." << endl;
  326.  while ( OuiOuNon != 'O' &&  OuiOuNon != 'o' && OuiOuNon != 'N' && OuiOuNon != 'n')
  327.  {
  328.   cout << " Desirez vous supprimer ce mot de l index ? (o/n) "<<endl;
  329.   cin >> OuiOuNon;
  330.   switch ( OuiOuNon )
  331.   {
  332.    case 'O' : case 'o' :
  333.     if (CurrentPtrMot != TopPtrMot)
  334.     {
  335.      PrecPtrMot -> PtrNextMot = CurrentPtrMot -> PtrNextMot;
  336.     }
  337.     else
  338.     {
  339.      TopPtrMot = CurrentPtrMot -> PtrNextMot;
  340.     }
  341.    break;
  342.    case 'N' : case 'n' :
  343.     cout << endl << endl << "Ce mot, bien que n' etant repris dans aucune page,";
  344.     cout << endl << "restera donc present dans l'index." << endl << endl;
  345.    break;
  346.    default :
  347.     cout << endl << endl << "Cette reponse n'est pas correcte !" << endl;
  348.    break;
  349.   }
  350.  }
  351. }
  352. return TopPtrMot;
  353. }


 
et enfin mon FctsOut.cpp

Code :
  1. #include "decla.h"
  2. void MenuPrp ( void )
  3. {
  4. cout << "Que desirez-vous faire ?" << endl << endl;
  5. cout << "<1> Entrer un nouveau mot dans l'index" << endl;
  6. cout << "<2> Entrer une page pour un mot deja repertorie" << endl;
  7. cout << "<3> Effacer un mot de l'index" << endl;
  8. cout << "<4> Effacer une page d un mot deja repertorie" << endl;
  9. cout << "<5> Afficher l index" << endl;
  10. cout << "<6> Quitter le programme" << endl << endl;
  11. cout << "Votre choix ..." << endl;
  12. }
  13. void MenuPg ( void )
  14. {
  15. cout << "Que desirez-vous faire ?" << endl << endl;
  16. cout << "<1> Entrer le numero d une autre page" << endl;
  17. cout << "<2> Effacer le numero d une des pages" << endl;
  18. cout << "<3> Retour au menu principal" << endl << endl;
  19. cout << "Votre choix ..." << endl;
  20. }
  21. void Affichage ( TypeMotPtr CurrentPtrMot )
  22. {
  23. TypePagePtr RetPagePtr;
  24. if ( CurrentPtrMot == NULL )
  25. {
  26.  cout <<endl<< "Desole, l index est vide." << endl;
  27. }
  28. else
  29. {
  30.  cout << endl << "  MOTS      :    PAGES " << endl;
  31.  cout << " ******         *******" << endl << endl;
  32.  while ( CurrentPtrMot != NULL )
  33.  {
  34.   cout << " > " << CurrentPtrMot -> ZoneMot << " : ";
  35.   if ( CurrentPtrMot -> PtrPremPg == NULL )
  36.   {// si il n' y a pas de page pour un mot
  37.    cout << " --- aucune --- " << endl;
  38.   }
  39.   else
  40.   {// si il y a une ou plusieurs pages comprenant le mot
  41.    RetPagePtr = CurrentPtrMot -> PtrPremPg;
  42.    while ( CurrentPtrMot -> PtrPremPg != NULL )
  43.    {// tant qu'on a pas sorti toutes les pages pour un des mots
  44.     cout << "p." << CurrentPtrMot -> PtrPremPg -> NumPg;
  45.     if (CurrentPtrMot -> PtrPremPg -> PtrNextPg != NULL)
  46.     {// si il y a encore une page après celle qu'on sort
  47.      cout << ", ";
  48.     }
  49.     else
  50.     {// si c'était la dernière page pour ce mot
  51.      cout << endl << " La premiere page comprenant ce mot est la page " << RetPagePtr -> NumPg;
  52.      cout << endl << " La derniere page comprenant ce mot est la page " << CurrentPtrMot -> PtrDernPg -> NumPg;
  53.      cout << endl << endl;
  54.     }
  55.     CurrentPtrMot -> PtrPremPg = CurrentPtrMot -> PtrPremPg -> PtrNextPg;
  56.    }
  57.    CurrentPtrMot -> PtrPremPg = RetPagePtr;
  58.   }
  59.   CurrentPtrMot = CurrentPtrMot -> PtrNextMot;
  60.  }
  61.  cout << endl << " ******         *******" << endl << endl;
  62. }
  63. }
  64. void SortirMots ( TypeMotPtr CurrentPtrMot )
  65. {
  66. if ( CurrentPtrMot == NULL )
  67. {
  68.  cout <<endl<< "Il n y a pas de mot." << endl;
  69. }
  70. else
  71. {
  72.  cout << " Les mots de l'index sont : ";
  73.  while ( CurrentPtrMot != NULL )
  74.  {
  75.   cout << CurrentPtrMot -> ZoneMot << " --> ";
  76.   CurrentPtrMot = CurrentPtrMot -> PtrNextMot;
  77.  }
  78.  cout << "NULL"<<endl;
  79. }
  80. }
  81. void SortirPages ( TypeMotPtr CurrentPtrMot )
  82. {/*On sort les pages pour chaque mot*/
  83. TypePagePtr RetPagePtr;
  84. if ( CurrentPtrMot == NULL )
  85. {
  86.  cout <<endl<< "Il n y a pas de mot." << endl;
  87. }
  88. else
  89. {
  90.  while ( CurrentPtrMot != NULL )
  91.  {
  92.   if ( CurrentPtrMot -> PtrPremPg == NULL )
  93.   {
  94.    cout <<endl<< "Il n y a pas de page comprenant \"" << CurrentPtrMot -> ZoneMot << "\" "<< endl << endl;
  95.   }
  96.   else
  97.   {
  98.    RetPagePtr = CurrentPtrMot -> PtrPremPg;
  99.    cout << " Les pages comprenant le mot \""<<CurrentPtrMot->ZoneMot<<"\" sont : ";
  100.    while ( CurrentPtrMot -> PtrPremPg != NULL )
  101.    {
  102.     cout << CurrentPtrMot -> PtrPremPg -> NumPg << " --> ";
  103.     CurrentPtrMot -> PtrPremPg = CurrentPtrMot -> PtrPremPg -> PtrNextPg;
  104.    }
  105.    cout << "NULL"<<endl;
  106.    CurrentPtrMot -> PtrPremPg = RetPagePtr;
  107.   }
  108.   CurrentPtrMot = CurrentPtrMot -> PtrNextMot;
  109.  }
  110. }
  111. }


 

Reply

Marsh Posté le 05-05-2004 à 20:12:13    

Taz, pour pas que tu t'amuses a relire tout le code, la fct ou j'ai employé tes conseils se situe dans le saisie.cpp (ca doit etre la 3eme source je crois) et la fct concernée c'est CinInt();
 
Amusez vous bien et ne mourrez pas de rire ;-)

Reply

Marsh Posté le 05-05-2004 à 20:16:49    

tiens du C ... et ce que j'aime bien c'est que j'ai encore parler pour rien ici http://forum.hardware.fr/hardwaref [...] 0723-1.htm
 
 
sinon y a pas à dire, c'est du bon C
 - while ( ok != true )  
 - connait pas do{ }while
 - des char * bien gérer (aucun débordement possible
 - des très utiles void MenuPg ( void )
 - des header bien protégés, les entêtes standards sont soigneusement utilisés et bien placés  
 - pas de delete : après tout la mémoire, c'est le boulot de l'OS
 - une bonne compréhensio de l'opérateur new : une gestion efficace dans le cas ou new retournerait NULL

Reply

Marsh Posté le 05-05-2004 à 20:26:30    

Non Taz tu n'as pas parlé pour rien !!! Sans ton dernier message j'aurais pas pensé au cin.ignore pour la bonne et simple raison que je le connaissais pas !!! J'avais juste besoin de la partie avec le clear et le ignore de ton ti prog mais bon. Par contre dans ce ti prog la taille avec le <int> et le :: max(), ca fonctionnait pas chez moi, alors j'ai simplement utilisé le sizeof cin comme on me l'a conseillé tout a l'heure. Donc tu n'as pas fais tout ca pour rien ! ;-)
 
Merci pour ton aide et pour ta critique du prog, c'est sympa. a+

Reply

Marsh Posté le 05-05-2004 à 20:29:38    

numeric_limit<int>::max() cai juste le plus grand entier possible pour dire à cin de manger le plus de caractères possibles, d'en manger un maximum si possible

Reply

Marsh Posté le 05-05-2004 à 20:36:07    

Ben oui je me disais bien que ca voullais dire ca mais quand je compilais il me sortait 3 erreures en disant qu'il connaissait pas numeric_limit, que <int> n'avait rien a foutre la et que max() n'était pas déclaré donc j'ai opté pour une autre solution.

Reply

Marsh Posté le 05-05-2004 à 20:52:00    

#include <limits>

Reply

Marsh Posté le 05-05-2004 à 23:12:51    

un nickname bien choisi :jap:
 
Taz : laisse tomber , c'est mauvais pour ton coeur.

Reply

Marsh Posté le 06-05-2004 à 02:38:44    

tain vous êtes pas en forme, y a personne qui a mis le code en QUOTE encore... kesky se passe ? :D :lol:


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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