UdMHaut
UdMBAS

IFT1166
Programmation Orientée Objet avec C++

Département d'informatique et de recherche opérationnelle

Direction de l'enseignement de service en informatique
 

Image C++
 
Automne 2005

Accueil

Professeurs et
Démonstrateurs

Horaires et locaux

Notes de cours

Cours
après Cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Sessions antérieures

  Démonstration #3 Solutionnaire  
 
Dernière mise à jour : dim 25 sep 2005 13:10:05 EDT
 

Buts:

  • [Entrées et Sorties], [Spécificités C++], [Opérateurs, expressions et conversions] et [Les structures de contrôle].

Entrées et Sorties

  • Q1: Que va afficher en sortie le programme suivant (q1.cpp). Essayez de trouver la réponse sans vous aider de votre compilateur! [Solutionnaire].

Spécificités C++

  • Q2: La compilation et le linkage du programme suivant (q2.cpp) se passent bien. Cependant le programme plante à l'exécution! Pourquoi? Essayez de trouver la réponse sans vous aider de votre compilateur! [Solutionnaire].

Opérateurs, expressions et conversions

  • Q3: Sachant que X=200 et que Y=400, dites pour chacune des expressions logiques suivantes, si elle est vraie ou fausse et expliquer pourquoi?

    • a.
      (x<y && x!=y)
      
        Est-ce que (200 < -400)? La réponse est non. Donc la première partie de l'expression est fausse. Comme les deux parties de l'expression sont liées par l'opérateur logique && (et); il suffit que l'une des parties soit fausse pour que toute l'expression soit fausse aussi et cela sans qu'on ait le besoin d'examiner la 2e partie de l'expression. Réponse: FAUX
    • b.
      (x>y || x==y)
      
        Est-ce que (200 > -400)? La réponse est oui. Donc la première partie de l'expression est vraie. Comme les deux parties de l'expression sont liées par l'opérateur logique || (ou); il suffit que l'une des parties soit vraie pour que toute l'expression soit vraie aussi et cela sans qu'on ait le besoin d'examiner la 2e partie de l'expression. Réponse: VRAI
    • c.
      !(x>y)
      
        Est-ce que (200 > -400)? La réponse est oui. L'opérateur "!" permet de réaliser la négation. Donc le VRAI (oui) se transforme en FAUX. Réponse: FAUX

  • Q4: Écrire les expressions suivantes en C++.

    • a.
      si(a/b)>100 et a<b
      
        if ( ((a/b)>100) && (a<b) )
    • b.
      si(a+b) n'est pas égal à 200 et b>=300
      
        if ( ((a+b)!= 200) && (b>=300) )
    • c.
      si(a+b)<= 2200 ou (a-b)x4 est égal à 500
      
        if ( ((a+b)<= 2200) || ( ((a-b)*4)==500) )

  • Q5: Écrire un programme qui lit 2 entiers différents du clavier et affiche en sortie si le premier nombre est un multiple du second (utiliser pour cela l'opérateur modulo). [Solutionnaire].

  • Q6: Écrire un programme qui affiche en sortie la valeur entière d'une lettre (majuscule ou minuscule), d'un digit (0, 1, 2, 3 etc.) ou d'un caractère spécial (espace blanc, +, $ etc.) [Solutionnaire].

  • Q7: Écrire un programme qui demande à un usager d'entrée la valeur d'un angle. Cette valeur est comprise entre 0o et 360o. Ce programme affiche en sortie à quel cadran appartient la valeur de cet angle. On suppose qu'il y a 4 cadrans à intervalle de 90o. [Solutionnaire].

  • Q8: Écrire un programme C++ qui affiche la séquence suivante: 2 4 6 8 10 20 22 24 26 28 30 40 42 44 46 48 50 60. Vous ne devez utiliser qu'une seule boucle for, l'opérateur conditionnel ternaire (?:) et un cout (en plus du cout pour un saut de ligne à la fin du programme) pour afficher le résultat en sortie. [Solutionnaire].

Les structures de contrôle

  • Q9: Dites si les déclarations suivantes sont correctes ou pas.

    • a.
          if (jour=7) cout << "Aller au parc";
          else cout << "Aller au travail";
      
        La déclaration est incorrecte à cause du signe = au lieu de == i.e jour==7 et non pas jour=7
    • b.
          if (jour==7); cout << "Aller au travail";
      
        La déclaration est correcte, même si if (jour==7); ne sert à rien!
    • c.
          int h=17, m, n, o;
          if (m<n)
              o = h;
              n = o;
          else
              m = h;
      
        Le segment de code est incorrect. Le "else" vient trop loin! Soit ajouter des {} sinon le "else" doit suivre directement le "if".
    • d.
          y = ? z>x :a w;
      
        L'expression est incorrecte. Il fallait écrire y = z > x ? a : w;

       

      On suppose pour ce qui suit que les variables a et b sont du type int. a=1 et b=2.

    • e.
          default:
      
        Pas d'erreur.
    • f.
          switch(a);
      
        Erreur: Il faudra retirer le ";" pour avoir: switch(a)
    • g.
          case 123;
      
        Erreur: Il faudra remplacer le ";" par un ":".
    • h.
          switch {a+b};
      
        Erreur: Il faudra retirer le ";" et remplacer {} par () pour avoir: switch (a+b)
    • i.
          switch (a): {case 1: b=a+2; break;}
      
        Erreur: Il faudra retirer le ":" pour avoir: switch (a) {...}

  • Q10: Que va afficher en sortie le programme suivant (q10.cpp). Essayez de trouver la réponse avant d'exécuter le programme. [Solutionnaire].



pift1166@iro.umontreal.ca
[top]