CONVERTISSEUR

Signaler
Messages postés
23
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2011
-
Messages postés
7
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
8 mai 2010
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51429-convertisseur

Messages postés
7
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
8 mai 2010

Tu pourrait mettre quelques commentaires ainsi que les spécifications des fonctions ( pré-requis, résultat, par exemple) Ceci facilite grandement la lecture et évite de se casser la tete lorsque l'on veu reprendre le code aprés une période d'inactivitée ;)
Messages postés
23
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2011
3
Voici un rectificatif global de ce que j'ai posté plus tôt.

//-------------------------------------------------------------------------------------

#include
#include <sstream>

int entier()
{
std::string saisie;
std::string verif;

bool good=1;
bool trouble=0;
int num;

do
{
if(good==0)
{
std::cout<<std::endl<<"-> Saisie incorrecte, ressaisissez: ";
}

std::cin>>saisie;

std::istringstream iss(saisie);// conversion du type string en type double.
iss>>num;
if(iss.fail())
{
good=0;
trouble=1;
}
else
{
std::ostringstream oss;
oss<<num;
verif=oss.str();

if(verif.size() < saisie.size())
{
good=0;
trouble=1;
}
else{good=1;}
}

if(good==1 && trouble==1)
{
std::cout<<"-> OK!"<<std::endl;
}

}while(good==0);

return num;
}

double reel()
{
std::string saisie;
std::string verif;

size_t found;
bool good=1;
bool trouble=0;
double num;

do
{
if(good==0)
{
std::cout<<std::endl<<"-> Saisie incorrecte, ressaisissez: ";
}

std::cin>>saisie;

found=saisie.find_first_of(",");
while (found!=std::string::npos)
{
saisie[found]='.';// les virgules françaises seront automatiquement transformées en point.
found=saisie.find_first_of(",",found+1);
}

std::istringstream iss(saisie);// conversion du type string en type double.
iss>>num;
if(iss.fail())
{
good=0;
trouble=1;
}
else
{
std::ostringstream oss;
oss<<num;
verif=oss.str();

if(verif.size() < saisie.size())
{
good=0;
trouble=1;
}
else{good=1;}
}

if(good==1 && trouble==1)
{
std::cout<<"-> OK!"<<std::endl;
}

}while(good==0);

return num;
}

int main()
{
std::cout<<">-------------------- CONVERTISSEUR D'ARGENT --------------------<"<<std::endl<<std::endl;

int quitter=0;
int choix;
double money;
double val;

std::cout<<"-> Etalonnage du programme <-"<<std::endl;
std::cout<<"-> Donner la correspondance d'un euro en dollar: ";
money=reel();
std::cout<<std::endl<<"<--------------------------->"<<std::endl<<std::endl;

do//pour le "quitter" de fin
{
std::cout<<"-------------------- MENU --------------------"<<std::endl<<std::endl;

std::cout<<" 1. Conversion euros -> dollars"<<std::endl;
std::cout<<" 2. Conversion dollars -> euros"<<std::endl<<std::endl;
std::cout<<" 0. ) Quitter ("<<std::endl;

std::cout<<std::endl<<"--> Choix: ";
do
{
choix=entier();
if(choix<0 || choix>2){std::cout<<std::endl<<"-> Le choix "<<choix<<" n'existe pas, ressaisissez: ";}
}while(choix<0 || choix>2);

if(choix==0)
{
std::cout<<std::endl<<">----------------------------------------------------------------<"<<std::endl<<std::endl;
return 0;
}

std::cout<<std::endl<<"Entrez la valeur que vous voulez convertir: ";
val=reel();

if(choix==1)
{
std::cout<<std::endl<<val<<" euros = "<<val*money<<" dollars";
}
else
{
std::cout<<std::endl<<val<<" dollars = "<<val/money<<" euros";
}

std::cout<<std::endl<<std::endl<<">----------------------------------------------------------------<"<<std::endl;
std::cout<<std::endl<<"--> Faire une autre conversion? (1=oui/0=non): ";
quitter=entier();
std::cout<<std::endl<<">----------------------------------------------------------------<"<<std::endl<<std::endl;
}while(quitter>0);
return 0;
}
Messages postés
23
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2011
3
//Oups, je me suis trompé dans les lignes de fin,

//j'ai mis:

std::cout<<std::endl<<"--> Faire un autre calcul d'incertitude? (1=oui/0=non): ";

//il faut remplacer par:

std::cout<<std::endl<<"--> Faire une autre conversion? (1=oui/0=non): ";

//^^.
Messages postés
23
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2011
3
Je n'ai pas vraiment de bon tuto à te proposer...

Les strings sont des chaînes permettant de stocker des caractères.

par ex:

std::string a;
a="Bonjour";// ne pas oublier les "".
std::cout<
#include <sstream>

int entier()
{
std::string saisie;
std::string verif;

bool good=1;
bool trouble=0;
int num;

do
{
if(good==0)
{
std::cout<<std::endl<<"-> Saisie incorrecte, ressaisissez: ";
}

std::cin>>saisie;

std::istringstream iss(saisie);// conversion du type string en type double.
iss>>num;
if(iss.fail())
{
good=0;
trouble=1;
}
else
{
std::ostringstream oss;
oss<<num;
verif=oss.str();

if(verif.size() < saisie.size())
{
good=0;
trouble=1;
}
else{good=1;}
}

if(good==1 && trouble==1)
{
std::cout<<"-> OK!"<<std::endl;
}

}while(good==0);

return num;
}

double reel()
{
std::string saisie;
std::string verif;

size_t found;
bool good=1;
bool trouble=0;
double num;

do
{
if(good==0)
{
std::cout<<std::endl<<"-> Saisie incorrecte, ressaisissez: ";
}

std::cin>>saisie;

found=saisie.find_first_of(",");
while (found!=std::string::npos)
{
saisie[found]='.';// les virgules françaises seront automatiquement transformées en point.
found=saisie.find_first_of(",",found+1);
}

std::istringstream iss(saisie);// conversion du type string en type double.
iss>>num;
if(iss.fail())
{
good=0;
trouble=1;
}
else
{
std::ostringstream oss;
oss<<num;
verif=oss.str();

if(verif.size() < saisie.size())
{
good=0;
trouble=1;
}
else{good=1;}
}

if(good==1 && trouble==1)
{
std::cout<<"-> OK!"<<std::endl;
}

}while(good==0);

return num;
}

int main()
{
std::cout<<">-------------------- CONVERTISSEUR D'ARGENT --------------------<"<<std::endl<<std::endl;

int quitter=0;
int choix;
double money;
double val;

std::cout<<"-> Etalonnage du programme <-"<<std::endl;
std::cout<<"-> 1 euro = ";
money=reel();
std::cout<<std::endl<<"<--------------------------->"<<std::endl<<std::endl;

do//pour le "quitter" de fin
{
std::cout<<"-------------------- MENU --------------------"<<std::endl<<std::endl;

std::cout<<" 1. Conversion euros -> dollards"<<std::endl;
std::cout<<" 2. Conversion dollards -> euros"<<std::endl<<std::endl;
std::cout<<" 0. ) Quitter ("<<std::endl;

std::cout<<std::endl<<"--> Choix: ";
do
{
choix=entier();
if(choix<0 || choix>2){std::cout<<std::endl<<"-> Le choix "<<choix<<" n'existe pas, ressaisissez: ";}
}while(choix<0 || choix>2);

if(choix==0)
{
std::cout<<std::endl<<">----------------------------------------------------------------<"<<std::endl<<std::endl;
return 0;
}

std::cout<<std::endl<<"Entrez la valeur que vous voulez convertir: ";
val=reel();

if(choix==1)
{
std::cout<<std::endl<<val<<" euros = "<<val*money<<" dollards";
}
else
{
std::cout<<std::endl<<val<<" dollards = "<<val/money<<" euros";
}

std::cout<<std::endl<<std::endl<<">----------------------------------------------------------------<"<<std::endl;
std::cout<<std::endl<<"--> Faire un autre calcul d'incertitude? (1=oui/0=non): ";
quitter=entier();
std::cout<<std::endl<<">----------------------------------------------------------------<"<<std::endl<<std::endl;
}while(quitter>0);
return 0;
}

// voilà, si tu as des questions n'hésite pas à m'en faire part...
Afficher les 6 commentaires