Examen : include ? double vers int ?

Examen : include ? double vers int ?

by Antoine Maier -
Number of replies: 5

Bonjour,

J'ai 2 questions concernant l'examen de programmation de la semaine prochaine.

1. Devons nous mettre les #include au début de nos programmes (iostream, string, ...) selon ceux que nous utilisons, ou est-ce sous-entendu qu'ils sont là ? Devons-nous le faire aussi quand il nous est demandé de coder une seule fonction (et non pas tout un programme avec le main() etc) ? Même question pour "using namespace std;"


2. Dans l'ancien examen de 2016, Question 1, nous devons programmer une fonction "diminution" dans laquelle on manipule des entiers mais nous devons faire une division non entière. Comment devons nous passer cette valeur non-entière vers un int ? Juste par une affectation simple ? Arrondi ? Ceil ? ...



In reply to Antoine Maier

Re: Examen : include ? double vers int ?

by Yassin Kammoun -

Bonjour,

  1. Lorsqu'il s'agit d'écrire un programme complet (avec un main donc), il vous faut à priori inclure les bibliothèques dont vous avez besoin de telle manière que votre programme puisse compiler. C'est la même idée pour les espaces de nom (namespace). En revanche, lorsqu'il s'agit d'implémenter d'une fonction isolée, vous pouvez omettre ces inclusions et partir du principe que les bibliothèques dont vous avez besoin sont inclues, idem pour les espaces de nom.
  2. Dans la question 1 de l'examen 2016, une simple affectation suffirait pour forcer une conversion puisque la valeur réelle serait tronquée. Néanmoins, pour être "propre", l'idéal serait de caster la valeur réelle calculée vers int afin de montrer que vous savez ce que vous faites. Quant à savoir s'il faut arrondir ou utiliser ceil, c'est du cas par cas; cela dépend de l'énoncé de l'exercice.
In reply to Yassin Kammoun

Re: Examen : include ? double vers int ?

by Antoine Maier -

Merci pour ces précisions.

Et si (comme dans l'ancien examen 2016) ce n'est pas précisé si on doit arrondir ou autre, nous devons choisir lequel par défaut ?

In reply to Antoine Maier

Re: Examen : include ? double vers int ?

by Yassin Kammoun -

Je n'ai pas un exemple concret qui me vient en tête mais suivant l'exercice proposé, la réponse à ce genre d'interrogation est évidente de par la nature du problème. Dans le cas contraire, vous pouvez toujours demander une clarification à un assistant.

Enfin, vous pouvez également énoncer vos hypothèses Celles-ci seront prises en compte à condition qu'elles soient justifiées. Cela dit, c'est très rare qu'on ait besoin d'en arriver jusque-là.

Quoi qu'il en soit, il ne faut pas en abuser. Si on vous demande d'implémenter une fonction qui calcule la factorielle d'un entier n et que vous avez pour hypothèse:

"Je suppose qu'il existe une fonction fact dans la bibliothèque cmath"

Il ne faut pas espérer recevoir des points ;).

In reply to Antoine Maier

Re: Examen : include ? double vers int ?

by Jean-Cédric Chappelier -

je ne vous demande pas de connaître plus que ce qui est présenté en cours.

Pour convertir de double vers int, il suffit simplement d'utiliser les types :

double x(3.14)
int i(x);

(et bien sûr de même réciproquement pour la conversion int vers double).

In reply to Jean-Cédric Chappelier

Re: Examen : include ? double vers int ?

by Jean-Cédric Chappelier -

> je ne vous demande pas de connaître plus que ce qui est présenté en cours.

juste pour clarifier : par contre je ne vous empêche pas d'utiliser plus si vous connaissez plus.