Salut,

Ne sachant plus quoi faire devant mon PC, je me suis dit un jour "pourquoi pas essayer de programmer et pourquoi pas en C++ " Quel gros naif!!!.

Enfin bref, je me suis mis en tête d'essayer de faire une application console à deux balle de conversion d'unités.(il faut bien commencer par quelque chose)

Mis à part une syntaxe ou l'autre que vous trouverez foireuse, voici mon problème:

Le code dispose de deux niveaux de menus.
Le premier est le choix du type de conversion.
Le deuxième est le choix de l'unité à convertir (pour le moment je n'ai fait que les distances en attendant que ça fonctionne comme je souhaite.
Dans ce menu,en option 7 je souhaite revenir au menu principal.
Au mieux je sais retourner au deuxième menu pour l'instant.
J'ai essayé avec GOTO, ça marche, mais suite à tout le mal que j'en ai lu je n'ai pas envie d'être maudit sur 7 générations.
Voici le code et merci d'avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
 
#include <iostream>
#include <iomanip>
 
using namespace::std;
 
void ShowMainMenu (void);//menu principal
void ShowDistMenu (void);//menu distances
void ShowDistTable (double);//Calcul et affichage de tableau de solution
 
int main()
{
 
    float valeur=0;// pour le type de conversion
    short choix=0;// pour cl'unité à convertir
 
    cout<<setw(50)<<right<<"Conversion d'unites\n";
    cout<<setw(51)<<right<<"___________________\n\n";
 
    ShowMainMenu(); // affiche le menu principal
    cin>>valeur;// selectionne le sous menu
    cout<<"\n";
 while (valeur!=EOF)
{     
    if (valeur==1)// conversion des distances
    {
       ShowDistMenu (); 
       cin>>choix;
       double interm=0.0;
 
      while (choix!=EOF)
      {
                  if (choix==1)
                  { 
                  cout<<setw(30)<<left<<"Entrez le nombre de NM : ";
                  cin>>interm;/*fournit une valeur intermediaire (basée sur le mètre) pour pouvoir utiliser la fonction "ShowDistTable" valable
                  indépendament de l'unité choisie*/ 
		  ShowDistTable (interm*1852);//donne le facteur d'adaptation selon l'unité calculée.
		  system("PAUSE");
		  ShowDistMenu ();//Affiche à nouveau le menu distances pour redemarrer la boucle 
                  cin>>choix;
                  cout<<"\n";
		  }
 
                  else if (choix==2)
		  {		
  		  cout<<setw(30)<<left<<"Entrez le nombre de KM : ";
		  cin>>interm;
		  ShowDistTable (interm*1000);
		  system("PAUSE");
		  ShowDistMenu ();
                  cin>>choix;
                  cout<<"\n";
		  }
 
                  else if (choix==3)
		  {		
		  cout<<setw(30)<<left<<"Entrez le nombre de SM : ";
		  cin>>interm;
		  ShowDistTable (interm*1609.344);
		  system("PAUSE");
		  ShowDistMenu ();
                  cin>>choix;
                  cout<<"\n";
		  }
 
                  else if (choix==4)
		  {		
		  cout<<setw(30)<<left<<"Entrez le nombre de Ft : ";
		  cin>>interm;
		  ShowDistTable (interm*0.3048);
		  system("PAUSE");
		  ShowDistMenu ();
                  cin>>choix;
                  cout<<"\n";
		  }
 
                  else if (choix==5)
		  {		
		  cout<<setw(30)<<left<<"Entrez le nombre de Mtr : ";
		  cin>>interm;
		  ShowDistTable (interm);
		  system("PAUSE");
		  ShowDistMenu ();
                  cin>>choix;
                  cout<<"\n";
		  }
 
                  else if (choix==6)
		  {		
		  cout<<setw(30)<<left<<"Entrez le nombre de Yds : ";
		  cin>>interm;
		  ShowDistTable (interm*0.9144);
		  system("PAUSE");
		  ShowDistMenu ();
                  cin>>choix;
                  cout<<"\n";
		          }
 
		  else if (choix==7)
		  {
                  ShowMainMenu(); // affiche le menu principal
                  cin>>valeur;
                  cout<<"\n";               
                  }  
                  else if (choix<1 || choix>7)
                  {
                  cout<< "Erreur de saisie.\n";
                  cout<<"Veuillez entrer votre choix\n";
		          cin>>choix; 
                  }
                  else if( ! ( cin >> choix ) )
		   {
                  cerr << "Erreur de saisie.\n";
                  cin.clear(); // effacer les bits d'erreurs
                  cin.ignore( numeric_limits<streamsize>::max(), '\n' ); // supprimer la ligne erronée dans le buffer
		   cout<<"Veuillez entrer votre choix\n";
		   cin>>choix;
   		   } 
               }         
          }
 
}
  system("PAUSE");      
  return 0;
}
 
void ShowMainMenu (void)//menu racine
{
    cout<<"Distances\t\t1"<<endl;
    cout<<"Volumes\t\t\t2"<<endl;
    cout<<"Masses\t\t\t3"<<endl;
    cout<<"Masse/Volumes liquides\t4"<<endl;
    cout<<"Pressions\t\t5"<<endl;
    cout<<"Altitudes\t\t6\n"<<endl;
    }
void ShowDistMenu (void)//menu distances
{
     cout<<"Pour convertir des NM     1\n";
     cout<<"Pour convertir des KM     2\n";
     cout<<"Pour convertir des SM     3\n";
     cout<<"Pour convertir des Feet   4\n";
     cout<<"Pour convertir des Metres 5\n";
     cout<<"Pour convertir des Yards  6\n";
     cout<<"Pour revenir au menu principal entrez  7\n\n";
     }
void ShowDistTable (double value)
{
      double NM,KM,SM,Ft,Mtr,Yds; 
      NM=value*0.0005399568;//calcul des distances 
      KM=value*0.001;
      SM=value*0.0006213710;
      Ft=value*3.2808333333;
      Mtr=value;
      Yds=value*1.093613298;
      cout<<"\n\n";
      cout<<"     ********************************************"<<endl;//affichage du résultat
      cout<<"     **"<<setw(15)<<right<<setprecision(6)<<NM<<" NM **"<<setw(15)<<right<<setprecision(6)<<Ft<<" Ft **"<<endl;
      cout<<"     ********************************************"<<endl;
      cout<<"     **"<<setw(15)<<right<<setprecision(6)<<KM<<" KM **"<<setw(15)<<right<<setprecision(6)<<Mtr<<" Mtr**"<<endl;
      cout<<"     ********************************************"<<endl;
      cout<<"     **"<<setw(15)<<right<<setprecision(6)<<SM<<" SM **"<<setw(15)<<right<<setprecision(6)<<Yds<<" Yds**"<<endl;
      cout<<"     ********************************************"<<endl;
      cout<<"\n\n";
}