Sorell Stratège
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: (0/0)
| Sujet: TP Exercice 5 - Les N premiers entiers en sous-programme Lun 26 Nov - 16:57 | |
| - Code:
-
/** * * @file SP_NPremiersEntiers.cxx * * @author D. Mathieu * * @date 07/12/2011 * **/ #include <iostream> #include <iomanip> // setw() #include <string>
using namespace std;
namespace { void Bonjour (void); void _10PremiersEntiers (void); void _200PremiersEntiers (void); void NPremiersEntiers (void);
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()
} // namespace
int main () { /* * / Bonjour(); /* */ /* * / _10PremiersEntiers(); /* */ /* * / _200PremiersEntiers(); /* */ /* * / NPremiersEntiers(); /* */
/* */ SP_NPremiersEntiers(); /* */
return 0;
} // main()
| |
|