/* Fichier string2.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[] = { -22, -36, -18, -20, -23, -12, -14 }; int nbJours = 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, nbJours, "temperatures d'une semaine"); cout << "Valeur plus petite du tableau des temperatures : " << temperature [ indMini(temperature, nbJours) ] << endl; cout << "\nNombre de voyelles dans " << journee[1] << " : " << nbVoy(journee[1]) << endl; trier(journee, nbJours); afficher(journee, nbJours, "journees apres le tri"); trier(temperature, nbJours); afficher(temperature, nbJours, "temperatures apres le tri"); continuer(); return 0; } /* Exécution: Les comparaisons avec string : ch1[3] vaut j ordre : 106 ch2[3] vaut s ordre : 115 ch1 == ch2 vaut 0 ch1 < ch2 vaut 1 ch1.substr(0,3) == ch2.substr(0,3) vaut 1 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) -22 1) -36 2) -18 3) -20 4) -23 5) -12 6) -14 Valeur plus petite du tableau des temperatures : -36 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) -36 1) -23 2) -22 3) -20 4) -18 5) -14 6) -12 Appuyez sur une lettre suivie de Entree */