- 1 - Travail dirigé langage C ------------------------------------------------

- 1 - Travail dirigé langage C ---------------------------------------------------------------------------------------------------------------- Ecole Supérieure de Technologie - Adresse : B.P 242, Kénitra - Maroc | Tél : (+212) 5 37 32 92 00 Fax : (+212) 5 37 37 40 52 : Réalisé par : Mohamed-Ali ASRI Travail dirigé langage C Informatique industrielle et systèmes automatisés Professeur : Younes CHIHAB Année universitaire : 2019 / 2020 - 2 - Travail dirigé langage C ---------------------------------------------------------------------------------------------------------------- Ecole Supérieure de Technologie - Adresse : B.P 242, Kénitra - Maroc | Tél : (+212) 5 37 32 92 00 Fax : (+212) 5 37 37 40 52 SOMMAIRE : I- Exercice 1 :……………...……………………………………….…….3 II- Exercice 2 :………………………………………………………….…3 III- Exercice 3 :.…...…………………………………………………….…4 IV- Exercice 4 :.……………………………………………………………5 V- Exercice 5 :.…………………………………………………………....6 VI- Exercice 6 :………………………………………………………….…7 - 3 - Travail dirigé langage C ---------------------------------------------------------------------------------------------------------------- Ecole Supérieure de Technologie - Adresse : B.P 242, Kénitra - Maroc | Tél : (+212) 5 37 32 92 00 Fax : (+212) 5 37 37 40 52 I- Exercice 1 :  Enoncé : • Quelle modification faut-il apporter au programme suivant pour qu’il devienne correct : #include <stdio.h> main() { int n, p=10 ; n = fct (p) ; printf("p = %d n = %d ",p,n); } int fct (int r) { return 2*r ; }  Il faut placer la définition de la fonction avant celle de la fonction (main) #include <stdio.h> int fct (int r) { return 2*r ; } main() { int n, p=10 ; n = fct (p) ; printf("p = %d n = %d ",p,n); II- Exercice 2 :  Enoncé : Ecrire un programme en C se servant d'une fonction H pour afficher la table de valeurs de la fonction définie par : H(x) = sin(x) + log(x) - √x où x est un entier compris entre 1 et 20. - 4 - Travail dirigé langage C ---------------------------------------------------------------------------------------------------------------- Ecole Supérieure de Technologie - Adresse : B.P 242, Kénitra - Maroc | Tél : (+212) 5 37 32 92 00 Fax : (+212) 5 37 37 40 52 #include <stdio.h> #include <math.h> main() { double H(int X); int I; printf("\tX\tH(X)\n"); for (I=1 ; I<=20 ; I++) printf("\t%d\t%f\n", I, H(I)); return (0); } double H(int X) { return sin(X)+log10(X)-sqrt(X); } III- Exercice 3 :  Enoncé : On définit la fonction factorielle de la manière suivante : 0! = 1 n! = n*(n-1)*(n-2)* ... * 1 (pour n>0) Ecrire une fonction FACT du type double qui reçoit la valeur N (type int) comme paramètre et qui fournit la factorielle de N comme résultat. Ecrire un petit programme qui teste la fonction FACT. #include <stdio.h> main() { double FACT(int N); int N; printf("Donner un nombre entier N : "); scanf("%d", &N); printf("La factorielle de %d est %.0f \n",N , FACT(N)); return (0); } double FACT(int N) { double R; for (R=1 ; N>0 ; N--) R =R * N; return R; } - 5 - Travail dirigé langage C ---------------------------------------------------------------------------------------------------------------- Ecole Supérieure de Technologie - Adresse : B.P 242, Kénitra - Maroc | Tél : (+212) 5 37 32 92 00 Fax : (+212) 5 37 37 40 52 IV- Exercice 4 :  Enoncé : On souhaite calculer et afficher les racines de ax2+bx+c=0. Ecrire un programme C qui permet : - Une fonction de prototype void saisie(float *a,float *b,float *c) permet de saisir a,b,c. - Une fonction de prototype void calcul(float a,float b,float c) exécute les calculs et affiche les résultats. - main() se contente d'appeler les fonctions saisie(&a,&b,&c) et calcul(a,b,c). #include <stdio.h> #include <math.h> void saisie(float *a,float *b,float *c) { printf("ENTRER A: ");scanf("%f",a); printf("ENTRER B: ");scanf("%f",b); printf("ENTRER C: ");scanf("%f",c); } void calcul(float a,float b,float c) { float delta,x1,x2; printf("A= %f B= %f C=%f",a,b,c); delta = b*b-4*c*a; printf("\nDELTA = %f",delta); if (delta<0) printf("\nPAS DE SOLUTION"); if (delta == 0) { x1=-(b/a/2); printf("\nUNE SOLUTION: X= %f ",x1); } if (delta > 0) { x1=(-b+sqrt(delta))/2/a; x2=(-b-sqrt(delta))/2/a; printf("\nDEUX SOLUTIONS: X1 = %f X2 = %f",x1,x2); } } main() { float a,b,c; saisie(&a,&b,&c); calcul(a,b,c); } - 6 - Travail dirigé langage C ---------------------------------------------------------------------------------------------------------------- Ecole Supérieure de Technologie - Adresse : B.P 242, Kénitra - Maroc | Tél : (+212) 5 37 32 92 00 Fax : (+212) 5 37 37 40 52 V- Exercice 5 :  Enoncé : Écrire une fonction qui reçoit en arguments 2 nombres flottants et un caractère, et qui fournit un résultat correspondant à l’une des 4 opérations appliquées à ses deux premiers arguments, en fonction de la valeur du dernier, à savoir : addition pour le caractère +, soustraction pour -, multiplication pour * et division pour / (tout autre caractère que l’un des 4 cités sera interprété comme une addition). On ne tiendra pas compte des risques de division par zéro. Écrire un petit programme (main) utilisant cette fonction pour effectuer les 4 opérations sur les 2 nombres fournis en donnée. #include <stdio.h> float operation(float a , float b , char op) { float r; switch(op) { case '+' : r = a + b ; break ; case '-' : r = a - b ; break ; case '*' : r = a * b ; break ; case '/' : r = a / b ; break ; default : r = a + b ; } return r ; } main() { float operation(float a , float b , char op ); float x,y; printf("Entrez le premier nombre : "); scanf("%f", &x); printf("Entrez le deuxième nombre : "); scanf("%f", &y); printf("la somme est : %e\n",operation(x,y,'+')) ; printf("la difference est : %e\n",operation(x,y,'-')) ; printf("le produit est : %e\n",operation(x,y,'*')) ; printf("la division est : %e\n",operation(x,y,'/')) ; } - 7 - Travail dirigé langage C ---------------------------------------------------------------------------------------------------------------- Ecole Supérieure de Technologie - Adresse : B.P 242, Kénitra - Maroc | Tél : (+212) 5 37 32 92 00 Fax : (+212) 5 37 37 40 52 VI- Exercice 6 :  Enoncé : Écrire 2 fonctions à un argument entier et une valeur de retour entière permettant de préciser si l’argument reçu est multiple de 2 (pour la première fonction) ou multiple de 3 (pour la seconde fonction). Utiliser ces deux fonctions dans un petit programme qui lit un nombre entier et qui précise s’il est pair, multiple de 3 et/ou multiple de 6, comme dans cet exemple (il y a deux exécutions) : donnez un entier : 9 il est multiple de 3 --------------- donnez un entier : 12 il est pair il est multiple de 3 il est divisible par 6 #include <stdio.h> int multiple2 (int n) { if (n%2) return 0 ; else return 1 ; } int multiple3 (int n) { if (n%3) return 0 ; else return 1 ; } main() { int multiple2 (int) ; int multiple3 (int) ; int n ; printf ( "donnez un entier : ") ; scanf ("%d" , &n) ; if (multiple2(n)) printf ( "il est pair\n") ; if (multiple3(n)) printf ( "il est multiple de 3\n" ); if (multiple2(n) && multiple3(n)) printf ( "il est divisible par 6\n" ); } uploads/Science et Technologie/ devoir-6 1 .pdf

  • 17
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager