begin process at 2012 05 27 14:57:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CONVERTISSEUR "BEAUFORT, KM/H, M/S", ORIENTÉ OBJET, CONSOLE DOS

CONVERTISSEUR "BEAUFORT, KM/H, M/S", ORIENTÉ OBJET, CONSOLE DOS


 Information sur la source

Note :
Aucune note
Catégorie :Divers Niveau :Débutant Date de création :18/08/2004 Date de mise à jour :18/08/2004 20:21:15 Vu / téléchargé :10 059 / 112

Auteur : kenjimax

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

Ce programme sert à convertir les differentes unités dans laquelle les forces des vents sont données.
C'est aussi un programme très simple qui permettra à ceux qui ne maitrisent pas la programmation objet de comprendre les bases : encapsulation, objet dynamique, "setter/getter", etc.

Source

  • /*
  • Yo ! Tout le monde !
  • Alors, c'est un programme réalisé parce que je fais un stage de catamaran
  • (du hobit-cat 15 pour être precis) et que j'en ai marre de voir ecris les forces
  • des vents en toutes les unitées possibles et inimaginables.
  • Grâce à ce programme ecris en C++ et tres orienté objet, plus de problemes !
  • On indique la valeur du vent dans l'unité que l'on veut et hop ! La machine
  • nous sort les autres ! Elle est pas belle la vie ?
  • Kenji,
  • progra.... euhh bidouilleur en informatique :D
  • */
  • #include <iostream> //pour les "cout", etc
  • #include <stdlib.h>
  • #include <conio.h> //pour le getch()
  • using namespace std; //la norme, toujours la norme...
  • class Vent //classe contenant toutes les fonctions du programme (sauf "main") :D
  • {
  • private :
  • float km;
  • float ms;
  • float beaufort;
  • char type;
  • public :
  • void kmtoms();
  • void mstokm();
  • void mstobeaufort();
  • void beauforttoms();
  • void calculer();
  • void afficher();
  • inline void settype(char i){this->type = i;};
  • inline void setms(float i) {this->ms = i;};
  • inline void setkm(float i) {this->km = i;};
  • inline void setbeaufort(float i) {this->beaufort = i;};
  • inline float gettype() { return this->type; };
  • };
  • void Vent::kmtoms()
  • {
  • this->ms = (this->km*1000)/3600; //on multiplie par 1000 et on divise par 3600
  • }
  • void Vent::mstokm()
  • {
  • this->km = (this->ms*3600)/1000; // on divise par 1000 et on multiplie par 3600
  • }
  • void Vent::mstobeaufort() //fonction utilisant les equivalences beaufort-> m/s
  • {
  • if(this->ms<0.5) // si le vent va a moins de 0.5 m/s
  • {
  • this->beaufort=0; // il vaut 0 sur l'echelle beaufort
  • return; // on quitte la fonction
  • }
  • if(this->ms<1.5)
  • {
  • this->beaufort=1;
  • return;
  • }
  • if(this->ms<3)
  • {
  • this->beaufort=2;
  • return;
  • }
  • if(this->ms<4.5)
  • {
  • this->beaufort=3;
  • return;
  • }
  • if(this->ms<7)
  • {
  • this->beaufort=4;
  • return;
  • }
  • if(this->ms<9)
  • {
  • this->beaufort=5;
  • return;
  • }
  • if(this->ms<11)
  • {
  • this->beaufort=6;
  • return;
  • }
  • if(this->ms<14)
  • {
  • this->beaufort=7;
  • return;
  • }
  • if(this->ms<17)
  • {
  • this->beaufort=8;
  • return;
  • }
  • if(this->ms<20)
  • {
  • this->beaufort=9;
  • return;
  • }
  • if(this->ms<25)
  • {
  • this->beaufort=10;
  • return;
  • }
  • if(this->ms<30)
  • {
  • this->beaufort=11;
  • return;
  • }
  • if(this->ms>=30)
  • {
  • this->beaufort=12;
  • return;
  • }
  • system("cls"); //on efface l'ecran
  • cout << "Erreur !!! Vos valeurs ne sont pas correctes !\n"; //on previent l'utilisateur
  • system("PAUSE"); // on attend qu'il presse "entrée"
  • exit(0); // on quitte le programme ! Bien fait pour lui :D
  • }
  • void Vent::beauforttoms() //fonction utilisant les equivalences beaufort-> m/s
  • {
  • if(this->beaufort==0) //si le vent vaut 0 sur l'echelle beaufort :
  • {
  • this->ms=0.5; //il va environ a 0.5 m/s
  • return; // on quitte la fonction
  • }
  • if(this->beaufort==1)
  • {
  • this->ms=1.5;
  • return;
  • }
  • if(this->beaufort==2)
  • {
  • this->ms=3;
  • return;
  • }
  • if(this->beaufort==3)
  • {
  • this->ms=4.5;
  • return;
  • }
  • if(this->beaufort==4)
  • {
  • this->ms=7;
  • return;
  • }
  • if(this->beaufort==5)
  • {
  • this->ms=9;
  • return;
  • }
  • if(this->beaufort==6)
  • {
  • this->ms=11;
  • return;
  • }
  • if(this->beaufort==7)
  • {
  • this->ms=14;
  • return;
  • }
  • if(this->beaufort==8)
  • {
  • this->ms=17;
  • return;
  • }
  • if(this->beaufort==9)
  • {
  • this->ms=20;
  • return;
  • }
  • if(this->beaufort==10)
  • {
  • this->ms=25;
  • return;
  • }
  • if(this->beaufort==11)
  • {
  • this->ms=30;
  • return;
  • }
  • if(this->beaufort==12)
  • {
  • this->ms=40;
  • return;
  • }
  • system("cls"); //on efface l'ecran
  • cout << "Erreur !!! Vos valeurs ne sont pas correctes !\n"; //on previent l'utilisateur
  • system("PAUSE"); // on attend qu'il presse "entrée"
  • exit(0); // on quitte le programme ! Bien fait pour lui :D
  • }
  • void Vent::calculer() //pour tout calculer
  • {
  • if(this->km!=0 || this->type=='k') //si on a une valeur en km/h
  • {
  • this->kmtoms(); //on calcule en m/s
  • this->mstobeaufort(); // on calcule en beaufort
  • return; // on quitte la fonction
  • }
  • if(this->ms!=0 || this->type=='m') // si on a une valeur en m/s
  • {
  • this->mstokm(); // on calcule en km/h
  • this->mstobeaufort(); // on calcule en beaufort
  • return; // on quitte la fonction
  • }
  • if(this->beaufort!=0 || this->type=='b') // si on a une valeur en beaufort
  • {
  • this->beauforttoms(); // on calcule en m/s
  • this->mstokm(); // on calcule en km/h
  • return; // on quitte la fonction
  • }
  • //si on a rien de tout ca :
  • exit(0);
  • }
  • void Vent::afficher()
  • {
  • system("cls");
  • cout << "Resultat :\n\n";
  • cout << "Force du vent en m/s :" << this->ms << endl;
  • cout << "Force du vent en km/h :" << this->km << endl;
  • cout << "Equivalence beaufort :" << this->beaufort << endl << endl;
  • }
  • int main(int argc, char *argv[])
  • {
  • Vent * vent = new Vent(); //creation d'un objet dynamique de type "vent"
  • while(1) //boucle principale
  • {
  • system("cls"); //effacement de l'ecran
  • cout << "___________________________" << endl; //"image" de presentation
  • cout << "| |" << endl;
  • cout << "| BIENVENUE !!! |" << endl;
  • cout << "| |" << endl;
  • cout << "|__________________________|"<< endl << endl << endl;
  • char o; //creation d'une variable locale nécessaire au "getch()"
  • cout << "Quelle est l'unite du vent que vous allez donner ?\n";
  • cout << "k --> Km/H \n";
  • cout << "m --> m/s \n";
  • cout << "b --> beaufort \n";
  • cout << "q --> quitter\n\n";
  • o = getch(); //attendre que l'utilisateur presse une touche et l'enregistrer dans "o"
  • //cin o; //si probleme avec la librairie conio.h
  • if(o=='q') exit(0); //si la touche pressée est un "q", on quitte le programme
  • vent->settype(o); //on indique au programme l'unité qui va etre utilisée
  • float u; //creation d'une variable locale nécessaire au "cin"
  • cout << "Donnez maintenant, la valeur de ce vent :\n" ;
  • cin >> u; //attente d'une saisie utilisateur
  • switch(o) //si l'unité utilisée est le :
  • {
  • case 'k' :vent->setkm(u);break; // -km/h, on modifie la variable km de l'objet "vent"
  • case 'm' :vent->setms(u);break; // -m/s, on modifie la variable ms de l'objet "vent"
  • case 'b' :vent->setbeaufort(u);break;// -beaufort, on modifie...
  • default : cout << "Erreur"; continue; //si le type n'est pas valide, on reviens a la boucle
  • }
  • vent->calculer(); //on calcule les autres unitées à partir de la premiere
  • vent->afficher(); //on affiche les resultats
  • vent->settype(0); //on remet tout à 0
  • vent->setkm(0);
  • vent->setms(0);
  • vent->setbeaufort(0);
  • system("PAUSE"); //on attend que l'utilisateur presse la touche "entrée"
  • }
  • delete vent; //on detruit le pointeur "vent" et on libere la memoire
  • return 0; //on quitte le programme
  • }
/*
Yo ! Tout le monde !
Alors, c'est un programme réalisé parce que je fais un stage de catamaran
(du hobit-cat 15 pour être precis) et que j'en ai marre de voir ecris les forces
des vents en toutes les unitées possibles et inimaginables.
Grâce à ce programme ecris en C++ et tres orienté objet, plus de problemes !
On indique la valeur du vent dans l'unité que l'on veut et hop ! La machine
nous sort les autres ! Elle est pas belle la vie ?

Kenji,
progra.... euhh bidouilleur en informatique :D
*/

#include <iostream> //pour les "cout", etc
#include <stdlib.h> 
#include <conio.h> //pour le getch()

using namespace std; //la norme, toujours la norme...

class Vent //classe contenant toutes les fonctions du programme (sauf "main") :D
{
    private :
        float km;
        float ms;
        float beaufort;
        char type;
    
    public :
        
        void kmtoms();
        void mstokm();
        void mstobeaufort();
        void beauforttoms();
        
        void calculer();
        void afficher();
        
        inline void settype(char i){this->type = i;};
        inline void setms(float i) {this->ms = i;};
        inline void setkm(float i) {this->km = i;};
        inline void setbeaufort(float i) {this->beaufort = i;};
        
        inline float gettype() { return this->type; };
};

void Vent::kmtoms()
{
    this->ms = (this->km*1000)/3600; //on multiplie par 1000 et on divise par 3600
}

void Vent::mstokm()
{
    this->km = (this->ms*3600)/1000; // on divise par 1000 et on multiplie par 3600
}

void Vent::mstobeaufort() //fonction utilisant les equivalences beaufort-> m/s
{
    if(this->ms<0.5) // si le vent va a moins de 0.5 m/s
    {
        this->beaufort=0; // il vaut 0 sur l'echelle beaufort
        return; // on quitte la fonction
    }
    if(this->ms<1.5)
    {
        this->beaufort=1;
        return;
    }   
    if(this->ms<3)
    {
        this->beaufort=2;
        return;
    }   
    if(this->ms<4.5)
    {
        this->beaufort=3;
        return;
    }   
    if(this->ms<7)
    {
        this->beaufort=4;
        return;
    }   
    if(this->ms<9)
    {
        this->beaufort=5;
        return;
    }   
    if(this->ms<11)
    {
        this->beaufort=6;
        return;
    }   
    if(this->ms<14)
    {
        this->beaufort=7;
        return;
    }   
    if(this->ms<17)
    {
        this->beaufort=8;
        return;
    }   
    if(this->ms<20)
    {
        this->beaufort=9;
        return;
    }
    if(this->ms<25)
    {
        this->beaufort=10;
        return;
    }       
    if(this->ms<30)
    {
        this->beaufort=11;
        return;
    }
    if(this->ms>=30)
    {
        this->beaufort=12;
        return;
    }
    
    system("cls"); //on efface l'ecran
    cout << "Erreur !!! Vos valeurs ne sont pas correctes !\n"; //on previent l'utilisateur
    system("PAUSE"); // on attend qu'il presse "entrée"
    exit(0); // on quitte le programme ! Bien fait pour lui :D
}

void Vent::beauforttoms() //fonction utilisant les equivalences beaufort-> m/s
{
    if(this->beaufort==0) //si le vent vaut 0 sur l'echelle beaufort :
    {
        this->ms=0.5; //il va environ a 0.5 m/s
        return; // on quitte la fonction
    }
    if(this->beaufort==1)
    {
        this->ms=1.5;
        return;
    }   
    if(this->beaufort==2)
    {
        this->ms=3;
        return;
    }   
    if(this->beaufort==3)
    {
        this->ms=4.5;
        return;
    }   
    if(this->beaufort==4)
    {
        this->ms=7;
        return;
    }   
    if(this->beaufort==5)
    {
        this->ms=9;
        return;
    }   
    if(this->beaufort==6)
    {
        this->ms=11;
        return;
    }   
    if(this->beaufort==7)
    {
        this->ms=14;
        return;
    }   
    if(this->beaufort==8)
    {
        this->ms=17;
        return;
    }   
    if(this->beaufort==9)
    {
        this->ms=20;
        return;
    }
    if(this->beaufort==10)
    {
        this->ms=25;
        return;
    }       
    if(this->beaufort==11)
    {
        this->ms=30;
        return;
    }
    if(this->beaufort==12)
    {
        this->ms=40;
        return;
    }
    
    system("cls"); //on efface l'ecran
    cout << "Erreur !!! Vos valeurs ne sont pas correctes !\n"; //on previent l'utilisateur
    system("PAUSE"); // on attend qu'il presse "entrée"
    exit(0); // on quitte le programme ! Bien fait pour lui :D
}                                                           

void Vent::calculer() //pour tout calculer
{
    
    if(this->km!=0 || this->type=='k') //si on a une valeur en km/h
    {
        this->kmtoms(); //on calcule en m/s
        this->mstobeaufort(); // on calcule en beaufort
        return; // on quitte la fonction
    }
    
    if(this->ms!=0 || this->type=='m') // si on a une valeur en m/s
    {
        this->mstokm(); // on calcule en km/h
        this->mstobeaufort(); // on calcule en beaufort
        return; // on quitte la fonction
    }
    
    if(this->beaufort!=0 || this->type=='b') // si on a une valeur en   beaufort
    {
        this->beauforttoms(); // on calcule en m/s
        this->mstokm(); // on calcule en km/h
        return; // on quitte la fonction
    }
    
    //si on a rien de tout ca :
        exit(0);
                        
} 

void Vent::afficher()
{
    system("cls");
    cout << "Resultat :\n\n";
    cout << "Force du vent en m/s :" << this->ms << endl;
    cout << "Force du vent en km/h :" << this->km << endl;
    cout << "Equivalence beaufort :" << this->beaufort << endl << endl;
}

int main(int argc, char *argv[])
{
Vent * vent = new Vent(); //creation d'un objet dynamique de type "vent"
    
while(1) //boucle principale
{
system("cls"); //effacement de l'ecran
cout << "___________________________" << endl; //"image" de presentation
cout << "|                           |" << endl;
cout << "|       BIENVENUE !!!         |" << endl;
cout << "|                           |" << endl;
cout << "|__________________________|"<< endl << endl << endl;
    
char o; //creation d'une variable locale nécessaire au "getch()"
    
cout << "Quelle est l'unite du vent que vous allez donner ?\n";
cout << "k --> Km/H \n";
cout << "m --> m/s \n";
cout << "b --> beaufort \n";
cout << "q --> quitter\n\n";
    
o = getch(); //attendre que l'utilisateur presse une touche et l'enregistrer dans "o"
    //cin o; //si probleme avec la librairie conio.h
    
if(o=='q') exit(0); //si la touche pressée est un "q", on quitte le programme
    
vent->settype(o); //on indique au programme l'unité qui va etre utilisée
    
float u; //creation d'une variable locale nécessaire au "cin"
cout << "Donnez maintenant, la valeur de ce vent :\n" ;
cin >> u; //attente d'une saisie utilisateur
    
switch(o) //si l'unité utilisée est le :
{
case 'k' :vent->setkm(u);break; // -km/h, on modifie la variable km de l'objet "vent"
case 'm' :vent->setms(u);break; // -m/s, on modifie la variable ms de l'objet "vent"
case 'b' :vent->setbeaufort(u);break;// -beaufort, on modifie...
        
default : cout << "Erreur"; continue; //si le type n'est pas valide, on reviens a la boucle
}   
    
vent->calculer(); //on calcule les autres unitées à partir de la premiere
vent->afficher(); //on affiche les resultats
    
vent->settype(0); //on remet tout à 0
vent->setkm(0);
vent->setms(0);
vent->setbeaufort(0);
    
system("PAUSE"); //on attend que l'utilisateur presse la touche "entrée"
}
    
delete vent; //on detruit le pointeur "vent" et on libere la memoire
    
return 0; //on quitte le programme
}

 Conclusion

Les ameliorations que l'on pourrait trouver :

- un systeme de gestion d'erreur digne de ce nom :D
- un affichage de la taille de voile préconiséeen fonction du vent
- une colorisation
- un passage sous wxwindows
- A vous de le dire ! :D

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • beaufort.devTélécharger ce fichier [Réservé aux membres club]853 octets
  • beaufort.exeTélécharger ce fichier [Réservé aux membres club]454 609 octets
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 534 octets

Télécharger le zip


 Historique

18 août 2004 20:18:52 :
Petit bug qui ne remettait pas à 0 les valeurs rentrées ==> la deuxieme utilisation du programme donnait des valeurs erronées
18 août 2004 20:21:15 :
Rajous d'un zip avec l'executable, le fichier source et le fichier *.dev du projet.

 Sources du même auteur

Source avec Zip Source avec une capture OPENGL 2D SIMULATION MOUVEMENT BROWNIEN
Source avec une capture PGA : RPG EN C++/OPENGL
Source avec une capture FRACTALE(S) TPE (OPENGL // GLUT)
Source avec Zip Source avec une capture RPG ALLENDE // JEUX EN OPENGL (VERSION BETA 4)
Source avec Zip Source avec une capture METEROID IV // JEU SOUS OPENGL (DEVC++)

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

Commentaires et avis

Commentaire de vecchio56 le 18/08/2004 21:51:13 administrateur CS

pas regardé la source en détail, mais remplacer succession de if(this->beaufort==X) par switch(beaufort)

Commentaire de kenjimax le 18/08/2004 22:54:50

Non, un switch compare un "integer" et forcement à des constantes. Ca sabre donc les possibilitées d'upgrade du programme.

Commentaire de vecchio56 le 18/08/2004 23:15:24 administrateur CS

hein??

Commentaire de djl le 19/08/2004 08:22:33

kenjimax > tu fais une comparaison binaire sur un float, c'est forcement mauvais
soit tu test la difference avec la  valeur à comparer (en te servant d'un seuil), soit tu switch sur la partie  entiere ( tu multiplies par 100 si tu veux garder une precision à 2 chiffres par exemple)

Commentaire de kenjimax le 19/08/2004 11:49:16

Oui bien sur, mais ca ne me donne rien ! 3ms de calcul en plus ? je les concede :D

Je suis d'accord avec toi djl, mais ce programme est pour moi un programme pratique et non pas une demonstration de mes ridicules talents de programmeur :D
Merci beaucoup de vos conseils en tout cas.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales