Nintendo-city
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Retrouvez l'univers nintendo sous toutes ses faces !!
 
AccueilPortailDernières imagesS'enregistrerConnexion
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

 

 TP1 Exercice 6 - Choix entre les exercices

Aller en bas 
AuteurMessage
Sorell
Stratège
Sorell


Masculin
Nombre de messages : 521
Localisation : Quel part où le sang coule.
Date d'inscription : 01/05/2008

Feuille de personnage
Surnom dans la team: Sénéchal Noir
Victoire/défaite:
TP1 Exercice 6 - Choix entre les exercices Left_bar_bleue0/0TP1 Exercice 6 - Choix entre les exercices Empty_bar_bleue  (0/0)

TP1 Exercice 6 - Choix entre les exercices Empty
MessageSujet: TP1 Exercice 6 - Choix entre les exercices   TP1 Exercice 6 - Choix entre les exercices Icon_minitimeLun 26 Nov - 17:08

Code:

/**
 *
 * @file  ChoixEntreExos.cxx
 *
 * @author D. Mathieu
 *
 * @date  07/12/2011
 *
**/
#include <iostream>
#include <iomanip>      // setw()
#include <string>

using namespace std;

namespace
{
    void Bonjour (void)
    {
        cout << "Bonjour" << endl;

    } // Bonjour()

    void _10PremiersEntiers (void)
    {
        cout << "Les dix premiers entiers naturels : " << endl;

        cout << 0;
        for (unsigned i = 1; i <= 9; ++i)
        {
            cout << '\t' << i;
        }
        cout << endl;

    } // _10PremiersEntiers()

    void _200PremiersEntiers (void)
    { 
        cout << "Les 200 premiers entiers naturels à 10 par ligne"
            << endl;

        unsigned ValDebutLigne = 0;

        for (unsigned NbLignes = 0;
            NbLignes < 20;
            NbLignes = NbLignes + 1)
        {
            cout << setw (4) << ValDebutLigne;

            for (unsigned ValAffichee = ValDebutLigne + 1;
                ValAffichee < ValDebutLigne + 10;
                ValAffichee = ValAffichee + 1)
            {
                cout <<  '\t' << setw (4) << ValAffichee;
            }
            cout << endl;
            ValDebutLigne = ValDebutLigne + 10;
        }

    } // _200PremiersEntiers()

    unsigned SaisirEntierPositif (string Invite, string MsgErr)
    {
        unsigned N;

        for ( ; ; )
        {
            cout << Invite;
            cin >> N;
            if (N > 0) break;
            cout <<  MsgErr << endl;
        }
        return N;

    } // SaisirEntiePositif()

    void AffichTabInt (unsigned Tableau [],
                      unsigned NbElem,
                      unsigned NbParLigne,
                      unsigned Width,
                      char    Separateur)
    {
        // Affichage du tableau

        unsigned RgFirstElem = 0;
        unsigned NbLignesCompletes =  NbElem / NbParLigne;

        // Affichage de toutes les lignes complètes

        for (unsigned NbLignes = 0;
            NbLignes < NbLignesCompletes;
            NbLignes = NbLignes + 1)
        {
            cout << setw (Width) <<Tableau [RgFirstElem];

            // Affichage d'une ligne (forcément complète)

            for (unsigned RgElem = RgFirstElem + 1;
                RgElem < RgFirstElem + NbParLigne;
                RgElem = RgElem + 1)
            {
                cout << Separateur << setw (Width) << Tableau [RgElem];
               
            }
            cout << endl;
            RgFirstElem = RgFirstElem + NbParLigne;
        }
   
        // Affichage de la dernière ligne SI ELLE EST INCOMPLETE

        if (RgFirstElem < NbElem)
        {
           
            for (unsigned RgElem = RgFirstElem;
                RgElem < NbElem - 1;
                RgElem = RgElem + 1)
            {
                cout << setw (Width) <<Tableau [RgElem] << Separateur;
            }
            // Affichage du dernier nombre de la dernière ligne

            cout << setw (Width) <<Tableau [NbElem - 1] << endl;
        }

    } // AffichTabInt()

    void SP_NPremiersEntiers (void)
    {
        unsigned N = SaisirEntierPositif (
                "Taper le nombre d'entiers voulus,                "
                "puis <entrée> : ",
                "Le nombre doit être POSITIF !!!\n");

        unsigned NbParLigne = SaisirEntierPositif (
                "Taper le nombre de valeurs par ligne,            "
                "puis <entrée> : ",
                "Le nombre doit être POSITIF !!!\n");

        unsigned Largeur = SaisirEntierPositif (
                "Taper la largeur d'affichage,                    "
                "puis <entrée> : ",
                "Le nombre doit être POSITIF !!!\n");

        cout << "Taper le caractère de séparation                "
                "puis <entrée> : ";
        char Separ;
        cin >> Separ;

        unsigned TabInt [N];

        // Génération du tableau

        for (unsigned i = 0; i < N; i = i + 1)
        {
            TabInt [i] = i;
        }
        //  Affichage du tableau

        cout << "Les " << N << " premiers entiers naturels à "
            << NbParLigne << " par ligne" << endl;

        AffichTabInt (TabInt, N, NbParLigne, Largeur, Separ);

    } // SP_NPremiersEntiers()

    void ClearScreen (void)
    {
        cout << "\033[2J\033[1;1H";

    } // ClearScreen()

    char ChoixDansMenu (const string & Invite)
    {
        ClearScreen();

        cout << Invite;

        char Choix;
        cin >> Choix;

        ClearScreen();

        return Choix;

    } // ChoixDansMenu()

    void Pause (void)
    {
        cout << "\n\n\nPour continuer, taper un caractère non espace "
                "suivi de <entrée> ";
        char Bidon;
        cin >> Bidon;

    } // Pause()

    void TraiterCommande (char Cmd)
    {
        switch (Cmd)
        {
          case 'A' :
          case 'a' :
            Bonjour();
            break;

          case 'B' :
          case 'b' :
            _10PremiersEntiers();
            break;

          case 'C' :
          case 'c' :
            _200PremiersEntiers();
            break;

          case 'D' :
          case 'd' :
            SP_NPremiersEntiers();
            break;

          default :
            cout << "Commande " << Cmd << " invalide";
        }

    } // TraiterCommande()

    void ChoixEntreExos (void)
    {
        const string KInvite (
                "A : Bonjour\n"
                "B : Les dix premiers entiers naturels\n"
                "C : Les 200 premiers entiers naturels à 10 par ligne\n"
                "D : Les N premiers entiers naturels\n"
                "Q : Quitter\n\n"
                "Votre choix (suivi de <entrée>) : ");

        for ( ; ; )
        {
            char Commande = ChoixDansMenu (KInvite);

            if ('Q' == Commande) break;
            if ('q' == Commande) break;

            TraiterCommande (Commande);
            Pause ();
        }

    } // ChoixEntreExos()

} // namespace

int main ()
{
    ChoixEntreExos();

    return 0;

} // main()

Revenir en haut Aller en bas
 
TP1 Exercice 6 - Choix entre les exercices
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» TP3 Exercice 6 -
» TP1 Exercice 1 - Bonjour
» TP1 Exercice 2 - Les 10 premiers entiers
» TP1 Exercice 3 - Les 200 premiers entiers
» TP1 Exercice 4 - Les N premiers entiers

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Nintendo-city :: Informatique :: Section C++ :: Corrigés :: TP1-
Sauter vers: