Exercice langage C : programme qui affiche les valeurs du sinus de tous les angles de 0 à 90 degrés

A. Ecrivez un programme qui affiche les valeurs du sinus de tous les angles de 0 à 90 degrés, par pas de 15 degrés.

On souhaite un affichage de la forme :

sin(0) = 0.000000

sin(15) = 0.258819

sin(30) = 0.500000

sin(90) = 1.000000

B. Modifiez le programme précédent, de sorte qu’il affiche les valeurs du sinus des angles de 0 à 90 degrés, par pas de degrés, où ? est une valeur lue au clavier.

C. Modifiez le programme précédent, afin qu’il affiche les valeurs du sinus des angles de h à i degrés, par pas de degrés, où h, i et ? sont des valeurs lues au clavier.


[1] La seule difficulté est de se rappeler que les fonctions trigonométriques de la bibliothèque requièrent leur argument exprimé en radians (180 degrés = PI radians) alors que nous devons l'afficher en degrés. D'où une conversion à faire au moment de l'appel de la fonction sin :

1
2
3
4
5
6
7
8
9
10
11
12
#include 
#include 

int a, pi = 4 * atan(1);

main() {
    a = 0;
    while (a <= 90) {
        printf("sin(%d) = %f\n", a, sin(a * (pi / 180)));
        a = a + 15;
    }
}

 



Notez que ce programme n'a aucune chance de fonctionner si on oublie la ligne « #include » . Cela est dû à la fonction sin, dont la déclaration est donnée dans le fichier math.h (sans cette déclaration le compilateur fait l'hypothèse que sin rend un int, cela ne peut pas être juste).

[2] La bibliothèque mathématique standard ne comporte pas de définition de la constante pi (3.141592653589793 etc.). Une manière d'en obtenir une expression en accord avec les besoins de la bibliothèque consiste à le faire calculer par une fonction de la bibliothèque. Si on se souvient que la tangente de pi / 4 est 1 on en déduit que pi vaut quatre fois l'arc tangente de 1.

[3] On peut rendre ce programme encore plus compact avec l'instruction for

...
main() {
    for (a = 0; a <= 90; a = a + 15)
        printf("sin(%d) = %f\n", a, sin(a * pi / 180));
}

[4] Les versions B et C demandées sont d'infimes variations de ce qui précède. Par exemple, la version C peut être ainsi écrite :

1
2
3
4
5
6
7
8
9
10
11
#include 
#include 

int a, b, p, pi = 4 * atan(1);

main() {
    printf("donnez a b p : ");
    scanf("%d%d%d", &a, &b, &p);
    for ( ; a <= b; a = a + p)
        printf("sin(%d) = %f\n", a, sin(a * pi / 180));
}