• Aucun résultat trouvé

Rappel : Le corrig´ e n’a d’int´ erˆ et que si l’exercice a ´ et´ e cherch´ e.

N/A
N/A
Protected

Academic year: 2022

Partager "Rappel : Le corrig´ e n’a d’int´ erˆ et que si l’exercice a ´ et´ e cherch´ e."

Copied!
7
0
0

Texte intégral

(1)

Universit´e Cadi Ayyad Ann´ee 2019−2020

Facult´e polydisciplinaire Langage C et Matlab

Safi SMC (S4)

S´ erie 5

Exercice 1

1) Ecrire une fonction de prototype void affichage() qui affiche deux entiers.

2) Ecrire une fonction de prototype void saisie() qui permet de saisir deux entiers.

3) Ecrire une fonction de prototype int traitement(int val1, int val2) qui permet de faire la somme de deux entiers.

Exercice 2

Un programme contient la d´eclaration suivante:

int tab[10]={-4,-3,-2,-1,0,2,1,3,4,5}; /*variable globale*/

1) Ecrire une fonction de prototype void affiche() qui affiche les ´el´ements du tableau, la mettre en oeuvre dans main().

2) Ecrire le programme qui calcule et affiche la moyenne des ´el´ements du tableau en utilisant une fonction de prototype void affiche() qui affiche les ´el´ements du tableau en utilisant une fonction de prototype float moyenne()etvoid affichage(float moy).

3) Ecrire une fonction de prototypefloat min()qui renvoie le minimum du tableau.

4) Ecrire une fonction de prototypefloat max()qui renvoie le maximu du tableau.

Exercice 3

Soit la fonction math´ematiquef d´efinie par

f(x) = (2x3+ 3)(x2−1)

3x2+ 1 .

1) ´Ecrire une fonction C qui retourne la valeur def(x) pour un point x pass´e en param`etre.

Une approximation de la d´eriv´eef0 de la fonctionf est donn´ee en chaque point x, pourhassez petit (proche de 0), par :

f0(x)' f(x+h)−f(x−h)

2h .

2) ´Ecrire une fonction C qui calcule une approximation de la d´eriv´eef0 de f en un pointxentr´e au clavier.

On passera la valeur deh en param`etre de la fonction.

3) La d´eriv´ee seconde def est la d´eriv´ee de la d´eriv´ee. ´Ecrire une fonction C qui calcule une approximation de la d´eriv´ee seconde f00de f en un point x entr´e au clavier. On passera la valeur de h en param`etre de la fonction.

4) ´Ecrire une fonction C qui d´etermine le signe de la d´eriv´ee seconde de f en fonction de x. On pourra faire un programme qui lit xau clavier et affiche le r´esultat.

5) ´Ecrire une fonction C qui donne le choix `a l’utilisateur d’afficher la valeur de la fonctionf, de sa d´eriv´ee premi`ere ou de sa d´eriv´ee seconde en un pointx lu au clavier.

Exercice 4

1) ´Ecrire une fonction qui prend en param`etre un tableau d’entiers, son nombre d’´el´ementsnet un entier m, et qui retourne 1 s’il y a un ´el´ement ´egal `a m dans le tableau, 0 sinon.

(2)

2) ´Ecrire une fonction qui prend en param`etre un tableau de taille N B M AX, son nombre d’´el´ements n < N B M AX, un entier i ≤ n, et un entier m. La fonction doit ins´erer l’´el´ement m en position i dans le tableau (sans supprimer d’´el´ement).

3) ´Ecrire une fonction r´ecursive pour calculer la somme :

un= 1 + 24+ 34+· · ·+n4. 4) La suite de Fibonacci est d´efinie par r´ecurrence par :

u0 = 0;u1 = 1

un=un−1+un−2 pour n≥2 Donner une fonction r´ecursive pour calculerun.

5) Les co´efficients binomiaux Cnk pourk≤n sont donn´es par la formule de Pascal:

Cn0 = 1; Cnn= 1 Cnk=Cn−1k−1+Cn−1k Proposer une fonction r´ecursive pour calculer lesCnk.

(3)

Correction

Rappel : Le corrig´ e n’a d’int´ erˆ et que si l’exercice a ´ et´ e cherch´ e.

Exercice 1

#include<stdio.h>

/* D´eclaration des variables globales */

int a, b, res;

/* D´eclaration des prototypes */

void saisie();

int traitement(int val1, int val2);

void affichage();

/* D´eclaration des fonctions */

void saisie() {

printf(”Donnez les valeurs de a et b”);

scanf(”%d %d”,&a,&b);

}

int traitement(int val1, int val2) {

int val3; /*D´eclaration de variable locale*/

printf(”\t\t Le traitement\n”);

val3=val1+val2;

return(val3); /*Renvoie la valeur de val3*/

}

void affichage() {

printf(”L’addition de a=%d et b=%d est ´egale `a %d\n”,a,b,res);

}

int main() /*Programme principal*/

{ saisie();

res=traitement(a,b);

affichage();

return 0;

}

Exercice 2

1)

#include<stdio.h>

int tab[10]={-4,-3,-2,-1,0,2,1,3,4,5}; /*variable globale*/

void affiche() {

int i;

printf(”Les ´el´ements du tableau : \n”);

for(i=1;i<10;i++) {

printf(”%d\n”, tab[i]);

}

int main() {

affiche();

return 0 }

(4)

2)3)4)

#include<stdio.h>

int tab[10]={-4,-3,-2,-1,0,2,1,3,4,5}; /*variable globale*/

float moyenne() {

int i;

float somme=0;

for(i=0;i<10;i++) somme=somme+tab[i]

reurn(somme/10);

}

float max() {

float maxi;

int i;

maxi=tab[0];

for(i=0;i<10;i++) if(tab[i]>maxi)

maxi=tab[i];

return(maxi);

}

float min() {

float mini;

int i;

mini=tab[0];

for(i=0;i<10;i++) if(tab[i]>mini)

mini=tab[i];

return(mini);

}

int main() {

printf(”Le maximum : %f\n”, max());

printf(”Le minimum : %f\n”, min());

affichage(moyenne());

return 0;

}

Exercice 3

1)

float f(float x) {

return ((2 * x * x * x + 3) * (x * x - 1)) / sqrt(3 * x * x + 1);

}

2)

float fPrime(float x, float h) {

return (f(x + h) - f(x - h)) / (2 * h);

}

(5)

3)

float fSeconde(float x, float h) {

return (fPrime(x + h, h) - fPrime(x - h, h)) / (2 * h);

}

4)

int signe(float x) {

float h, dSeconde;

printf(”Donnez le pas d’approximation h : ”);

scanf(”%f”, &h);

dSeconde = fSeconde(x, h);

if (dSeconde <0.0) return -1;

if (dSeconde == 0.0) return 0;

return 1;

}

5)

void choix() {

int c;

float x, h;

printf(”Voulez-vous...\n”);

printf(”1 la valeur de f\n”);

printf(”2 la valeur de f’\n”);

printf(”3 la valeur de f”\n”);

c = getchar();

printf(”x = ? ”);

scanf(”%f”, &x);

switch (c) {

case ’1’:

printf(”f(%f) = %f\n”, x, f(x));

break;

case ’2’:

printf(”h = ? ”);

scanf(”%f”, &h);

printf(”f’(%f) = %f\n”, x, fPrime(x, h));

break;

case ’3’:

printf(”h = ? ”);

scanf(”%f”, &h);

printf(”f”(%f) = %f\n”, x, fSeconde(x, h));

break;

default:

printf(”Choix inconnu...\n”);

} }

(6)

Exercice 4

1)

#define NB ELEM MAXI 100

int recherche(int t[NB ELEM MAXI], int taille, int m) {

int i;

for (i = 0; i <taille; i++) {

if (t[i] == m) return 1;

}

return 0;

}

2)

#define NB MAX 100

void insertion(int t[NB MAX], int n, int i, int m) {

int j = n;

while (j >i) {

t[j] = t[j - 1];

j−−;

}

t[i] = m;

}

3)

int Somme(int n) {

if (n<= 0) return 0;

else

return (n * n * n * n + Somme(n - 1));

}

4)

int Fibonacci(int n) {

if (n == 0) return 0;

else if (n == 1) return 1;

else

return (Fibonacci(n - 1) + Fibonacci(n - 2));

}

(7)

5)

int Coeffbinom(int k, int n) {

if (k == 0|| k == n) return 1;

else

return Coeffbinom(k - 1, n - 1) + Coeffbinom(k, n - 1);

}

Références

Documents relatifs

TES 1 Interrogation 9A 4 avril 2015 R´ epondre aux questions sur

Préciser les opérations élémentaires assurant que les deux systèmes sont équivalents.. Préciser, suivant les valeurs des paramètres a et b les ensembles

En utilisant l'inégalité de Ky Fan (à l'exlusion de toute autre méthode), montrer une inégalité entre ces deux moyennes2. Cette création est mise à disposition selon

Ecrire la fonction d´eriv´ee sous la forme la plus ”simplifi´ee” possible : une seule fraction au plus (mˆeme

Pour d´ eclarer des variables d’un type non sign´ e, il suffit de faire pr´ ec´ eder le nom du type entier du mot-cl´ e unsigned.. Comme pour la question pr´ ec´ edente,

Pour ne pas perdre de la pr´ ecision lors de la division et pour ´ eviter un d´ epassage du domaine lors du calcul du produit, il faut forcer l’utilisation du type double. En

D’autre part, elle permet d’int´ egrer tr` es confortablement l’initialisation et l’incr´ ementation des variables dans la structure..

3 ◦ ) Probl` eme: On dispose de deux tableaux A et B (de dimensions respectives N et M), tri´ es par ordre croissant. Fusionner les ´ el´ ements de A et B dans un troisi` eme