• Aucun résultat trouvé

Université de Xidian Université de Xidian

N/A
N/A
Protected

Academic year: 2022

Partager "Université de Xidian Université de Xidian"

Copied!
2
0
0

Texte intégral

(1)

Université de Xidian Université de Xidian

Polytech’Sophia 2017–2018

Examen de Langage C

(V. Granet)

Durée : 1h30 Aucun document autorisé Mobiles interdits

I1. Aux États-Unis (entre autres), les étudiants sont notés avec des lettres qui définissent un grade : A = excellent, B = Bien, C = Passable, D = Insuffisant et F = Très Faible). Écrivez un programme C qui lit un grade sur l’entrée standard, et qui écrit sur la sortie standard l’avis correspondant.

Vous utiliserez l’énoncéswitch. Vous penserez aussi à traiter le cas d’erreur.

#i n c l u d e < stdio .h >

#i n c l u d e < stdlib .h >

i n t main (v oi d) { char grade ;

scanf ("%c", & grade );

s w i t c h( grade ) {

c a s e ’A ’ : printf (" Excellent \n");

break;

c a s e ’B ’ : printf (" Bien \n");

break;

c a s e ’C ’ : printf (" Passable \n");

break;

c a s e ’D ’ : printf (" Insuffisant \n");

break;

c a s e ’F ’ : printf (" Très faible ");

break;

d e f a u l t : fprintf ( stderr , " Grade inconnu \n");

break; }

r e t u r n EXIT_SUCCESS ; }

. . . .

1

On représente les coordonnées d’un pointpdu plan cartésien par deux réels (double)xety tels quep= (x, y).

I 2. Écrivez en C la fonctiondistancequi renvoie la distance entre 2 pointsp1= (x1, y1)etp2= (x2, y2)telle quep

(x2−x1)2+ (y2−y1)2. L’en-tête de cette fonction est le suivant : /*

* Antécédent : (x1 , y1 ) et (x2 , y2 ) 2 points du plan

* Rôle : ...

*/

double distance (double x1 , double y1 , double x2 , double y2 )

/*

* Antécédent : (x1 , y1 ) et (x2 , y2 ) 2 points du plan

* Rôle : renvoie la distance les points (x1, y1)et (x2, y2)

double*/ distance (double x1 , double y1 , double x2 , double y2 ) { r e t u r n sqrt (( x2 - x1 )*( x2 - x1 )+( y2 - y1 )*( y2 - y1 ));

}

. . . . I 3. On appelle¯pla distance d’un pointp= (x, y)par rapport à l’origine(0,0). Écrivez en C la fonctioncomparequi compare 2 points (4 réels double)p1= (x1, y1)etp2= (x2, y2)et renvoie :

-1sip¯1<p¯2

0sip¯1= ¯p2

1sip¯1>p¯2

/*

* Antécédent : (x1 , y1 ) et (x2 , y2 ) 2 points du plan

* Rôle : renvoie :

* -1 si (x1 , y1 ) < (x2 , y2 )

* 0 si (x1 , y1 ) = (x2 , y2 )

* 1 si (x1 , y1 ) > (x2 , y2 )

*/

i n t compare (double x1 , double y1 , double x2 , double y2 ) { double d1 = distance (0 , 0, x1 , y1 );

double d2 = distance (0 , 0, x2 , y2 );

i f (d1 < d2 ) r e t u r n -1;

i f (d1 > d2 ) r e t u r n 1;

// d1==d2 r e t u r n 0;

}

. . . .

2

(2)

I4. Écrivez un programme C qui lit sur l’entrée standard 4 réels (double) qui représentent les coordonnées de 2 points du plan cartésien(x1, y1)et(x2, y2). Votre programme affiche d’abord la comparaison des 2 points, puis calcule la distancedentre les 2 points et affiche sur la sortie standard :

—petite distance, sid <1

—moyenne distance, si16d <10

—grande distance, sid>10

#i n c l u d e < stdio .h >

#i n c l u d e < stdlib .h >

#i n c l u d e <math .h >

#i n c l u d e < assert .h >

i n t main (v oi d) {

double x1 , y1 , x2 , y2 , dist ; // lire les coordonnées de 2 points du plan printf (" x1 = "); scanf ("% lf ", & x1 );

printf (" y1 = "); scanf ("% lf ", & y1 );

printf (" x2 = "); scanf ("% lf ", & x2 );

printf (" y2 = "); scanf ("% lf ", & y2 );

// afficher la comparaison des 2 points printf ("%d\n", compare (x1 ,y1 ,x2 , y2 ));

// calculer la distance entre les 2 points dist = distance (x1 , y1 , x2 , y2 );

// tester la distance assert ( dist >=0);

i f ( dist <1)

printf (" petite distance \n");

e l s e

i f ( dist <10)

printf (" moyenne distance \n");

e l s e // dist>=10

printf (" grande distance \n");

//

r e t u r n EXIT_SUCCESS ; }

. . . .

3

Références

Documents relatifs

En utilisant la fonction compter précédente, écrivez en C le programme myprog qui affiche sur la sortie standard le nombre de lettres et de chiffres d’une chaîne de caractères

En utilisant la fonction compter précédente, écrivez en C le programme myprog qui affiche sur la sortie standard le nombre de lettres et de chiffres d’une chaîne de caractères

Écrivez la fonction main dans laquelle vous déclarerez une variable jour de type lesJours et à laquelle vous affecterez la valeur samedi..

Écrivez la fonction lireJour qui lit sur l’entrée standard un entier (∈ [0; 6]) et qui renvoie la valeur correspondante dans le type lesJours. Écrivez la fonction main dans

Écrivez la fonction lireReel qui lit sur l’entrée standard caractère à caractère (uniquement à l’aide de la fonction scanf(&#34;%c&#34;,...) , à l’exclusion de toute

Écrivez la fonction lireReel qui lit sur l’entrée standard caractère à caractère (uniquement à l’aide de la fonction scanf(&#34;%c&#34;,...) , à l’exclusion de toute

Écrivez un programme C qui lit un grade sur l’entrée standard, et qui écrit sur la sortie standard l’avis correspondant.. Vous utiliserez

Sachant que l’entier le plus grand sur le type long est donné par la constante LONG_MAX , écrivez un programme qui détermine le plus grand entier n dont on peut calculer n!. sur le