M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner. Pour vous aider, l'ordinateur vous dira si vous êtes trop haut ou trop bas. Dès que vous l'aurez trouvé, il vous dira combien de coups vous avez dû jouer pour arriver à la bonne solution. TP1_1 Exercice 3.11 #include using namespace std; void main() { int chiffre, chifAcher; // chifAcher : c'est le chiffre que l'on cherche cout<<"Entrez le chiffre positif (entre 1 et 100) a chercher : "; cin >> chifAcher; cout<<"Entrez votre chiffre positif "<<endl; cin >> chiffre; if (chiffre>chifAcher) cout << "Votre chiffre est Trop Haut \n"; else if (chiffre == chifAcher) cout << "Bravo c'est trouve \n"; else cout << "Votre chiffre est Trop Bas \n"; } Pour vous aider voici le début Etape 1:
M. BENJELLOUN : 2005 Problème 1 : Cachez chifAcher au voisin == > donc Ajout l’équivalent de cls (effacer écran) Problème 2 : ++ Testez chifAcher dans [ 0, 100] et chiffre >0 == > do..while Problème 3 : ++ Testez au moins 5 x. Mais problème : si on le trouve, on continu comme même. Problème 4 : ++ 5 fois ce n'est pas assez donc tant que l'on ne trouve pas la réponse. (rep=false). En plus, il faut compter le nombre d'essais. Problème 5 : ++ Remplacez chifAcher par l'ordinateur: c'est lui qui génère le chiffre entre 0 et 100 aléatoirement. Pour vous aider dans la génération du nombre aléatoire, voici des bouts de code que vous devrez incorporer dans votre programme.
M. BENJELLOUN : 2005 #include //pour utiliser srand() et rand()..... int nbr; cout<<"Entrez un chiffre positif pour initialiser le generateur de nombre aleatoire : "; do cin>>nbr; while(nbr<0); srand(nbr); //on initialise le générateur de chiffre aléatoire avec nbr do //une boucle pour nous donner un nombre aléatoire entre 0 et 100. chifAcher=rand(); while(chifAcher>100); // pour que chifAcher soit entre 0 et 100
M. BENJELLOUN : 2005 si a=b=c=0 Il y a une infinité de solutions réelles si a=b=0 et c !=0 Il n'y a aucune solution si a=0, b!=0 et c !=0 une racine réelle de valeur -c/b si a!=0, b!=0 et c !=0 delta = b*b - 4.0*a*c si delta=0//racine double racine1 = racine2 = -b/(2*a) sinon si delta > 0 //2 racines réelles temp = sqrt(delta) racine1 = (-b + temp)/(2*a) racine2 = (-b - temp)/(2*a) sinon 2 racines complexes conjuguées temp = sqrt(-delta) reel = -b/2*a imag = temp/2*a afficher("z1 = reel + imag*i") afficher("z1 = reel - imag*i") Écrire un programme C++ qui calcule les racines d'un polynôme du second degré à coefficients réels. Examinez toutes les possibilités (racines réelles, complexes, doubles, infinité ou inexistence de solutions). a*x*x + b*x + c = 0 sqrt(x) = racine carrée de x, TP1_2
M. BENJELLOUN : 2005 Demande un entier N [ 1, Nmax ]. Nmax est une constante = 10. Tant que N [ 1, Nmax ], redemander l’introduction de N. Si l’utilisateur se trompe plus de z=3 fois, le programme s’arrête. Calcule et affiche la factorielle de N. Saisit N réels, les range dans un tableau. Calcule et affiche la somme. Saisit NxN caractères, les range dans une matrice. Affiche en MAJUSCULE caractère par caractère ce qui se trouve dans la matrice. Regrouper les 3 programmes (2.1, 2.2 et 2.3) en un seul. Utiliser un menu pour le choix avec switch_case. Un programme qui : TP
M. BENJELLOUN : 2005 Écrire un programme qui transforme le TP2 en utilisant des fonctions et qui gère en boucle un menu de choix. Écrire un programme qui traite un vecteur de nombres entiers (taille max = 20) et qui gère en boucle le menu de choix suivant : 1 : Saisie du vecteur et Affichage de ses données 2 : Calcul de la moyenne des données du vecteur 3 : Calcul du minimum des données du vecteur 4 : Calcul du maximum des données du vecteur 5 : Calcul du PGCD du (maximum, minimum) 6 : Tri à bulles du vecteur et Affichage 7 : Quitter Les points 1 à 6 seront chacun traités par au moins une fonction. TP3_1 TP3_2
M. BENJELLOUN : 2005 "Combien de nombres dans le vecteur(entre 1 et NMAX )? " ---- N boucle{ menu(); 1 :saisie_vect(???); Affichage(???); 2 :moy = moyenne(???); 3 :Mini = Min_Vect(???); 4 :Maxi = Max_Vect(???); 5 :pgcd = pgcd(Maxi, Mini, ???); 6 : Tri(????); Affichage(???); } Afficher : moyenne=moy; Min=Mini; Max=Maxi; PGCD= pgcd; Tri à bulles while(???){ for j = 0 to …. { if (tab[j] > tab[j+1] ) { } …… tab[j] < tab[j+1] j tab[j] TP3_2 suite Apres boucle
M. BENJELLOUN : 2005 TP4 Écrire un programme qui gère en boucle et qui effectue les opérations suivantes : 1 : Saisie d’1 vecteur Vect1 et Affichage de ses données 2 : Calcul de la moyenne des carrés des données du vecteur Vect1:( x i 2 )/ Nvect1 3 : Calcul du minimum et du maximum des données de Vect1 (1 seule fonction) 4 : Tri à bulles du vecteur des entiers Vect1 et Affichage 5 : Tri à bulles d’1 vecteur Vect2 des noms (Saisie et Affichage) 6 : Quitter Les points 1 à 5 seront chacun traités par au moins une fonction. La taille max. pour Vect1 et Vect2 est de 20. Les nombres Nvect1 et Nvect2 <= (taille_max) doivent être demandés et testés dans les fonctions de Saisie. On évitera l’utilisation de return dans les fonctions. Il faut plutôt utiliser les pointeurs.
M. BENJELLOUN : 2005 qui gère en boucle le menu de choix suivant : 1 : Saisie des enregistrements 2 : Affichage des données 3 : Tri suivant le code 4 : Tri suivant le nom 5 : Effacer un élément selon le nom 6 : Ajouter un élément selon le nom 7 : Sauvegarder sur fichier 8 : Lecture du fichier et affichage 9 : Quitter Écrire un programme : qui traite un tableau d’enregistrements (taille max = 20) dont chaque élément comprend les informations suivantes : un nom (char Tab[20]), un Rec Utilisez les règles de bonnes pratiques déjà étudiées, telles que l’indentation syntaxique, la programmation modulaire, … Le menu sera affiché via une fonction, les choix seront traités via l’instruction case. Les points 1 à 8 seront chacun traités par au moins une fonction. On utilisera la recherche dichotomique pour la localisation aux points 5 et 6. Le point 8 utilisera un vecteur crée dynamiquement pour recevoir les données se trouvant dans le fichier. struct Rec { charcode; floatprix; }; TP5&6