diff --git a/DEV1.1/TP05/TP05_reponses.txt b/DEV1.1/TP05/TP05_reponses.txt index e69de29..3e72a4d 100644 --- a/DEV1.1/TP05/TP05_reponses.txt +++ b/DEV1.1/TP05/TP05_reponses.txt @@ -0,0 +1,65 @@ +---- TP05: Réels ---- + + + +1. Avec 12 chiffres après la virgule, on obtient bien le nombre de chiffres +souhaités, mais le programme affiche un 4 au lieu d'un 3 à la fin. +Avec 15 chiffres, on se rend compte que le programme affiche des chiffres +qu'on ne lui a pas demandé d'afficher, ce qui s'explique sûrement par +le fait qu'au niveau binaire, ce nombre est impossible à représenter +de façon exacte comme en base 10. Le 13e chiffre étant un 5, +on comprend donc que le progamme a simplement arrondi le nombre +à partir du 12e chiffre après la virgule. + + + +2. Lors de l'emploi de l'opérateur %, on effectue l'opération sur deux réels +(de type double), ceci provoque une erreur car il n'y aura jamais de reste +dans une opération entre réels, car on effectue toujours une division +non euclidienne. + + + +3. On obtient les résultats suivants : + +inf +-inf +-nan + +Les 2 premiers résulats peuvent peut-être s'expliquer par le fait qu'informatiquement, +on divise +1.0 et -1.0 par une valeur nulle, ce qui revient donc +à multiplier ces nombres par l'inverse de la "valeur nulle", donc l'infini. + + + +4. En écrivant le programme de façon classique, on se rend compte que le tampon +stocke le saut de ligne comme un caractère lorsque l'utilisateur valide le réel +qu'il a entré. Le programme affiche donc 5 fois un saut de ligne sans attendre quoique +ce soit de l'utilisateur car le tampon n'est en réalité pas vide. Pour pallier ce problème, +il suffit d'ajouter un getchar qui ne stockera rien pour se débarasser du caractère \n : + +On a donc le programme suivant : + +# include +# include + +int main(void) { + double nombre; + char lettre; + printf("Veuillez saisir un réel : "); + scanf("%lf", &nombre); + printf("\nSa notation scientifique est : %e\n", nombre); + printf("Veuillez taper un caractère : "); + getchar(); + lettre = getchar(); + printf("%c\n", lettre); + printf("%c\n", lettre); + printf("%c\n", lettre); + printf("%c\n", lettre); + printf("%c\n", lettre); + return EXIT_SUCCESS; +} + + + +5. \ No newline at end of file