Advertisement
Guest User

labo08_enumclass

a guest
Dec 1st, 2015
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.57 KB | None | 0 0
  1. /*
  2.    ----------------------------------------------------------------------------------
  3.    Fichier     : Labo_07_Baillod_Gemesio.cpp
  4.    Auteur(s)   : Baillod Nicolas & Gemesio Denise
  5.    Date        : 30.11.2015
  6.              
  7.    But         : programme permettant de choisir entre plusieurs fonctionnalités
  8.    Remarque(s) : - la saisie utilisateur n'est pas controlée
  9.                          
  10.    Compilateur : MinGW-g++ 4.8.1
  11.    ----------------------------------------------------------------------------------
  12.  */
  13.  
  14. #include <cstdlib>
  15. #include <cmath>
  16. #include <iostream>
  17. #include <time.h>
  18. #include <stdio.h>
  19.  
  20. #define PI 3.1415
  21.  
  22. using namespace std;
  23.  
  24. /*-------------------------------FONCTIONS-----------------------------------------*/
  25.  
  26. bool verifBorne(int borneMin, int borneMax) {
  27.  
  28.    bool isBool(borneMin > borneMax);
  29.    return isBool;
  30. }
  31.  
  32. bool estPair(int valeur) {
  33.  
  34.    bool isBool = !(valeur % 2);
  35.    return isBool;
  36. }
  37.  
  38. int sommeChiffres(int valeur) {
  39.  
  40.    int somme = 0;
  41.    do {
  42.       somme += valeur % 10;
  43.       valeur /= 10;
  44.    } while (valeur != 0);
  45.    return somme;
  46. }
  47.  
  48. void nbre1er(int intervalleMin, int intervalleMax) {
  49.  
  50.    int valeur = intervalleMin;
  51.    while (valeur <= intervalleMax) {
  52.       if ((valeur % 2) && (valeur % 3) &&(valeur % 5) && (valeur % 7) || valeur == 2
  53.               || valeur == 5 || valeur == 7) {
  54.          cout << valeur << " ";
  55.       }
  56.       valeur++;
  57.    }
  58. }
  59.  
  60. void nbreArmstrong(int intervalleMin, int intervalleMax) {
  61.  
  62.    int valeur = intervalleMin;
  63.    while (valeur <= intervalleMax) {
  64.  
  65.       int valeur_interne = 0;
  66.       int somme_armstrong = 0;
  67.       valeur_interne = valeur;
  68.       while (valeur_interne) {
  69.  
  70.          somme_armstrong += (valeur_interne % 10) * (valeur_interne % 10) *
  71.                  (valeur_interne % 10);
  72.          valeur_interne /= 10;
  73.       }
  74.       if (somme_armstrong == valeur) {
  75.          cout << valeur << " ";
  76.       }
  77.       valeur++;
  78.    }
  79. }
  80.  
  81. int aleatoire(int borneMin, int borneMax) {
  82.  
  83.    srand(time(NULL));
  84.    return rand() % borneMax + borneMin;
  85. }
  86.  
  87. void trigo(double angle, double& sin1, double& cos1, double& tan1) {
  88.  
  89.    double radian = PI * angle / 180;
  90.    sin1 = sin(radian);
  91.    cos1 = cos(radian);
  92.    tan1 = tan(radian);
  93. }
  94.  
  95. bool repondOui(const char reponse) {
  96.  
  97.    if (reponse == 'o' || reponse == 'O') {
  98.       return true;
  99.    } else {
  100.       return false;
  101.    }
  102. }
  103.  
  104. int buffer(int& plusGrandChiffre, char& plusPetiteMinuscule) {
  105.    plusPetiteMinuscule = 123;
  106.    plusGrandChiffre = 47;
  107.    char a;
  108.    int counter = 0;
  109.  
  110.    cout << "Entrez ce que vous voulez: ";
  111.  
  112.    do {
  113.       cin.get(a);
  114.       if (islower(a) && (a < plusPetiteMinuscule || plusPetiteMinuscule == NULL))
  115.          plusPetiteMinuscule = a;
  116.  
  117.       if (isdigit(a) && (a > plusGrandChiffre || plusGrandChiffre == NULL))
  118.          plusGrandChiffre = a;
  119.  
  120.       if (plusGrandChiffre == 47)
  121.          plusGrandChiffre = NULL;
  122.  
  123.       if (plusPetiteMinuscule == 123)
  124.          plusPetiteMinuscule = NULL;
  125.  
  126.       counter++;
  127.    } while (a != '\n');
  128.  
  129.    return counter - 1;
  130. }
  131.  
  132. /*-----------------------------------main------------------------------------------*/
  133.  
  134. int main() {
  135.    
  136.    enum class fonction {nbrePaire, somme, nbre1er, nbreArsmstrong, nbreRand, trigo,
  137.                         buffer};
  138.    unsigned short entreeChoix;
  139.    int nombreUtilisateur;
  140.    int borneMin;
  141.    int borneMax;
  142.    double angle;
  143.    double sinus;
  144.    double cosinus;
  145.    double tangente;
  146.    int plusGrandChiffre = NULL;
  147.    char plusPetiteMinuscule = NULL;
  148.  
  149.    
  150.    /*---------------------------presentation et menu-------------------------------*/
  151.    
  152.    do {
  153.       cout << endl;
  154.       cout << "Bonjour, vous avez le choix entre plusieurs fonctions dans ce "
  155.               "programme que voulez vous faire?" << endl;
  156.       cout << endl;
  157.       cout << (int)fonction::nbrePaire <<". nombre paire" << endl;
  158.       cout << (int)fonction::somme << ". somme des chiffres" << endl;
  159.       cout << (int)fonction::nbre1er << ". nombre premier" << endl;
  160.       cout << (int)fonction::nbreArsmstrong << ". nombre Armstrong" << endl;
  161.       cout << (int)fonction::nbreRand << ". nombre aleatoire" << endl;
  162.       cout << (int)fonction::trigo << ". fonction trigonometrique" << endl;
  163.       cout << (int)fonction::buffer << ". buffer" << endl;
  164.       cout << endl;
  165.       cout << "Veuillez entrer le chiffre correspondant: ";
  166.       cin>>entreeChoix;
  167.       while (cin.get() != '\n');
  168.       cout << endl;
  169.  
  170.      
  171. /*---------------------affichage de la fonction selectionnee-----------------------*/
  172.      
  173.       switch (entreeChoix) {
  174.  
  175.          case((int)fonction::nbrePaire): cout << "Ce programme determine si un nombre est paire."
  176.                     << endl;
  177.             cout << "Veuillez entrer un nombre: ";
  178.             cin >> nombreUtilisateur;
  179.             while (cin.get() != '\n');
  180.             (estPair(nombreUtilisateur)) ? cout << "Ce nombre est paire" :
  181.                     cout << "Ce nombre n'est pas paire";
  182.             cout << endl;
  183.             break;
  184.  
  185.          case((int)fonction::somme): cout << "Ce programme determine la somme des chiffres "
  186.                     "composant un nombre." << endl;
  187.             cout << "Veuillez entrer un nombre: ";
  188.             cin>>nombreUtilisateur;
  189.             while (cin.get() != '\n');
  190.             cout << "La somme des chiffres de ce nombre est: "
  191.                     << sommeChiffres(nombreUtilisateur);
  192.             cout << endl;
  193.             break;
  194.  
  195.          case((int)fonction::nbre1er): cout << "Ce programme affiche la liste des nombres premiers "
  196.                     "dans un intervalle." << endl;
  197.             cout << "Borne minimale: ";
  198.             cin>>borneMin;
  199.             while (cin.get() != '\n');
  200.             cout << "Borne maximale: ";
  201.             cin>>borneMax;
  202.             while (cin.get() != '\n');
  203.             if (verifBorne(borneMin, borneMax)) {
  204.                cout << "La borne minimale est plus grande que la borne maximale"
  205.                        << endl;
  206.                break;
  207.             }
  208.             nbre1er(borneMin, borneMax);
  209.             break;
  210.  
  211.          case((int)fonction::nbreArsmstrong): cout << "Ce programme affiche la liste des nombres Armstrong "
  212.                     "dans un intervalle." << endl;
  213.             cout << "Borne minimale: ";
  214.             cin>>borneMin;
  215.             while (cin.get() != '\n');
  216.             cout << "Borne maximale: ";
  217.             cin>>borneMax;
  218.             while (cin.get() != '\n');
  219.             if (verifBorne(borneMin, borneMax)) {
  220.                cout << "La borne minimale est plus grande que la borne maximale"
  221.                        << endl;
  222.                break;
  223.             }
  224.             nbreArmstrong(borneMin, borneMax);
  225.             break;
  226.  
  227.          case((int)fonction::nbreRand): cout << "Ce programme affiche un nombre aleatoire dans un "
  228.                     "intervalle." << endl;
  229.             cout << "Borne minimale: ";
  230.             cin>>borneMin;
  231.             while (cin.get() != '\n');
  232.             cout << "Borne maximale: ";
  233.             cin>>borneMax;
  234.             while (cin.get() != '\n');
  235.             if (verifBorne(borneMin, borneMax)) {
  236.                cout << "La borne minimale est plus grande que la borne maximale"
  237.                        << endl;
  238.                break;
  239.             }
  240.             cout << "Nombre aleatoire: " << aleatoire(borneMin, borneMax);
  241.             cout << endl;
  242.             break;
  243.  
  244.          case((int)fonction::trigo): cout << "Ce programme affiche les sinus, cosinus et tangente"
  245.                     " d'un angle." << endl;
  246.             cout << "Entrez un angle: ";
  247.             cin>>angle;
  248.             while (cin.get() != '\n');
  249.             trigo(angle, sinus, cosinus, tangente);
  250.             cout << "Le sinus est: " << sinus << endl;
  251.             cout << "Le cosinus est: " << cosinus << endl;
  252.             cout << "La tangente est: " << tangente << endl;
  253.             break;
  254.  
  255.          case((int)fonction::buffer):cout << "Il y a "
  256.                     << buffer(plusGrandChiffre, plusPetiteMinuscule)
  257.                     << " caracteres dans le buffer" << endl;
  258.             cout << "Le plus grand chiffre est: " << (char) plusGrandChiffre
  259.                     << endl;
  260.             cout << "La plus petite minuscule est: " << plusPetiteMinuscule
  261.                     << endl;
  262.             break;
  263.  
  264.          default: cout << "Saisie incorrecte" << endl;
  265.       }
  266.      
  267. /*----------------------------recommencer le programme?----------------------------*/
  268.       cout << "Voulez-vous recommencer? Tapez 'O' ou 'o' : ";
  269.    } while (repondOui(getchar()));
  270.  
  271.    return EXIT_SUCCESS;
  272. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement