/* Fichier String1.cpp Suite de string. Révision de template Préparé par LVN pour IFT 1166 */ #include // entrée-sortie standard #include // formatage (présentation) #include // chaîne de caractères (détails : plus tard) using namespace std; // librairie standard void continuer() { cout << endl << endl << "Appuyez sur une lettre suivie de Entree " ; char lettre; cin >> lettre ; cout << endl << endl; } int nbVoy(string chaine) { cout << "string::npos vaut " << string::npos << endl; // pour voir cette valeur int n = 0; string voyelles = "AEIOUYaeiouy"; for (int i = 0, nbCars = chaine.length(); i < nbCars ; i++) if (voyelles.find(chaine[i]) != string::npos) n++; return n; } template int indMini (T tableau[], int nbElem) { int indPlusPetit = 0; for (int i = 1; i < nbElem ; i++) if ( tableau[i] < tableau[indPlusPetit]) indPlusPetit = i; return indPlusPetit; } template void afficher(T tableau[], int nbElem, string message) { cout << "Contenu du tableau des " << message << " :\n"; for (int i = 0; i < nbElem; i++) cout << setw(3) << i << ") " << setw(15) << tableau[i] << endl; cout << endl; } // patron de fonctions : une des nouveautés de C++ template void permuter(T & a, T &b) { T tempo = a; a = b; b = tempo; } template void trier(T tableau[], int nbElem) { for (int i = 0 ; i < nbElem-1; i++) { int indMin = i; for (int j = i+1; j < nbElem; j++) if (tableau[j] < tableau[indMin]) indMin = j; if ( indMin != i) permuter(tableau[i], tableau[indMin]); } } int main() { string journee[] = { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" }; int temperature[] = { 16, 14, 12, 20, 15, 19, 18, 17, 23, 15 }; int nbJours = sizeof(journee) / sizeof(string); cout << sizeof(journee) << " et " << sizeof(string) << endl ; int nbTemp = sizeof(temperature) / sizeof(int); afficher(journee, nbJours, "journees d'une semaine"); cout << "Valeur plus petite du tableau des journees : " << journee [ indMini(journee, nbJours) ] << endl; afficher(temperature, nbTemp, "temperatures d'une semaine"); cout << "Valeur plus petite du tableau des temperatures : " << temperature [ indMini(temperature, nbTemp) ] << endl; cout << "\nNombre de voyelles dans " << journee[1] << " : " << nbVoy(journee[1]) << endl; trier(journee, nbJours); afficher(journee, nbJours, "journees apres le tri"); trier(temperature, nbTemp); afficher(temperature, nbTemp, "temperatures apres le tri"); continuer(); return 0; } /* Exécution: 28 et 4 Contenu du tableau des journees d'une semaine : 0) Lundi 1) Mardi 2) Mercredi 3) Jeudi 4) Vendredi 5) Samedi 6) Dimanche Valeur plus petite du tableau des journees : Dimanche Contenu du tableau des temperatures d'une semaine : 0) 16 1) 14 2) 12 3) 20 4) 15 5) 19 6) 18 7) 17 8) 23 9) 15 Valeur plus petite du tableau des temperatures : 12 string::npos vaut 4294967295 Nombre de voyelles dans Mardi : 2 Contenu du tableau des journees apres le tri : 0) Dimanche 1) Jeudi 2) Lundi 3) Mardi 4) Mercredi 5) Samedi 6) Vendredi Contenu du tableau des temperatures apres le tri : 0) 12 1) 14 2) 15 3) 15 4) 16 5) 17 6) 18 7) 19 8) 20 9) 23 Appuyez sur une lettre suivie de Entree*/