Convertisseur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 388 fois - Téléchargée 20 fois

Contenu du snippet

Voici un convertisseur de dollar en euro (ou l'inverse)
j'aimerai savoir si ma source est bien coder et savoir comment l'améliolrer

Source / Exemple :


#include "stdafx.h"
#include <iostream>
#include <windows.h> 
#include <string.h>

using namespace std;

void cdollars (double b)
{   
 double a;
 double r = 1.36544;
 a = b * r;
 cout <<" la conversion donne : " << a <<" dolars \n\n";

}
 void dollarsc (double b)
 {
	  double a;
 double r = 0.73236;
 a = b * r;
 cout <<" la conversion donne : " << a <<" euros \n\n";
 }

void LPL( std::string text )
{
    for ( unsigned int i = 0; i < text.size(); ++i )
    {
        cout<<text[i];
		Sleep(30);
    }
}

int _tmain(int argc, _TCHAR* argv[])
{

  int a = NULL;
  double b = NULL;
  char z[4], oui[4] = "oui", non[4] = "non";
  bool nomix = NULL, nomax = true, nomer = false;

  LPL("\a\t Bonjours, Bienvenu(e) dans le Convertisseur         By Martin \n ");
  do
  {
  
	  LPL("Veuillez choisir votre mode de convertisseur : \n\n\n");
  do
  {
  cout << "1- Euro via Dollars \n 2- Dollars via Euro : \n" <<endl;
  cin >> a;
  cout << "\n";
   if(a == 1)
  {
	  LPL("Vous avez choisi de convertir des Euros en Dollars \n");
	  nomer = false;
  }
    if(a == 2)
     {
	   LPL("Vous avez choisi de convertir des Dollars en Euro \n\n");
       nomer = false;
     }
  if(a !=2 && a != 1)
  {
	  cout << "veuillez choisir la conversion en choisissant 1 ou 2\n\n";
	  nomer = true;
  }
  }while(nomer);

       LPL("Veuillez entrer la somme a convertir \n");
       cin >> b;

       if(a == 1)
  {
	  cdollars(b);
      nomax = true;
  }
  
  if(a == 2)
  {
      dollarsc(b);
	  nomax = true;
  }

  while(nomax)
  {
  cout << " si vous voulez recommencez, veuillez répondre par oui  ou  non. \n";
  cin >> z;
  if(strcmp(z, oui) == 0)
  {
	  nomix = true;
	  nomax = false;
	  
  }
  if(strcmp(z, non) == 0)
  {
	  nomix = false;
	  nomax = false;
	 
  }
  if(strcmp(z, non) == 1 && strcmp(z, oui) == 1)
  {
	  cout << " veuillez repondre a la question correctement \n";
  }
  }
  }while(nomix);

  return 0;
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
7
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
8 mai 2010
4
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
21
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
21
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
21
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...
Messages postés
23
Date d'inscription
jeudi 11 mars 2010
Statut
Membre
Dernière intervention
1 septembre 2014

Génial merci pour ces deux fonctions. parcontre je ne comprend pas comment marchent les string et comment les utiliser :
"std::istringstream iss(saisie);// conversion du type string en type double."
"std::ostringstream oss;"
est ce que sa serait possible d'avoir de tutoriels ou de explications ?
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.