Вы находитесь на странице: 1из 15

Dpartement Gnie Civil Dpartement Mcanique nergtique

Exemples
Rsolution numrique d'une quation du second degr Programme mystre Affectation et rcurrence

Rsolution de ax2+bx+c=0 : Organisation du programme


Initialisation : Acquisition au clavier des valeurs de a,b,c Algorithme de calcul Prsentation des rsultats sur lcran

Prog. Struct. C

5. Ex : quation du 2nd degr

Rsolution de ax2+bx+c=0 : Acqurir les coefficients a, b, c Si a = 0 alors afficher "pas du 2nd degr" sinon D:= b2 - 4 ac si D < 0 alors afficher "pas de racines relles" sinon si D=0 alors x1:=-b/2a afficher x1 sinon x1:=(-b -sqrt(D))/2a x2:=(-b+sqrt(D))/2a afficher x1 et x2

Prog. Struct. C

5. Ex : quation du 2nd degr

Rsolution de ax2+bx+c=0 :
Acquisition de a, b, c VRAI FAUX

Organigramme

a= = 0

Calcul de D F F

Affichage pas 2 degr

D<0

D==0 V

Pas de racines

Racine double

2 Racines Distinctes

fin
Prog. Struct. C 5. Ex : quation du 2nd degr 4

Le squelette
#include <stdio.h> #include <math.h>

Directives du pr processeur

int main() { /*Dclaration de variables a,b,c,delta,x1,x2*/ /*Entre des valeurs pour a, b, c*/ /*Test du contenu de a*/ //si a 0 /*Calcul de delta */ /*Test sur delta*/ //si delta <0 -> affichage pas de racines //si delta =0 -> affichage racine double //si delta >0 -> affichage 2 racines relles }

Prog. Struct. C

5. Ex : quation du 2nd degr

II Fonction main ()
int main() { /*Dclaration de variables */ double a,b,c; double delta; double x1,x2; /*Fin de la dclaration des variables*/

Prog. Struct. C

5. Ex : quation du 2nd degr

Fonction main () Suite


/*Entre des valeurs contenues dans les variables a, b, c*/ printf("Donnez la valeur de a:"); scanf ("%lf",&a); printf("\nDonnez la valeur de b:"); scanf ("%lf",&b); printf("\nDonnez la valeur de c:"); scanf ("%lf",&c); /* Fin de l'initialisation*/

Prog. Struct. C

5. Ex : quation du 2nd degr

Fonction main () Suite


/*Test du contenu de a*/ if (a == 0.0) { printf("\nCe n'est pas une eq. du second degr"); } else { /*Ouverture du bloc d'instruction a != de 0*/

Prog. Struct. C

5. Ex : quation du 2nd degr

Fonction main () Suite


/*Calcul de delta */ delta = b*b-4*a*c; /*Test sur delta*/ if (delta < 0) printf("\nPas de racines"); else { /*ouverture du bloc d'instruction delta >=0*/

Prog. Struct. C

5. Ex : quation du 2nd degr

Fonction main () Suite


/*Test delta nul*/ if (delta == 0) { x1 = -b/(2*a); printf ("\nRacine double :%lf",x1); }

Prog. Struct. C

5. Ex : quation du 2nd degr

10

Fonction main () Suite


else {/*Bloc d'intruction delta positif*/ x1=(-b-sqrt(delta))/a/2; x2=(-b+sqrt(delta))/a/2; printf("\nLes racines sont : x1 = %lf\tx2 = %lf\n",x1,x2); }/*fin delta>0*/ }/*Fin delta <0*/ }/*Fin a != 0*/ return 0; }/*Fin programme*/
secondeg.c

Prog. Struct. C

5. Ex : quation du 2nd degr

11

Algorithme mystrieux
soient a, b, r rels ; lire(a) ; lire(b) ; r <- 0 ; tant-que (b 0) si (b est pair) b <- b/2 ; a <- 2*a ; sinon b <- b-1 ; r <- r+a ; fin-si fin tant-que ecrire(r) ;
Prog. Struct. C

#include <stdio.h> int main() { float a, b,r; printf("\nentrez la valeur de a :"); scanf("%f",&a); printf("\nentrez la valeur de b :"); scanf("%f",&b); r=0.0; while (b!=0.0) { if(((int)b)%2 ==0) { b=b/2; a=2*a; } else { b=b-1; r=r+a; } } printf("\n r = %f",r); return(0); }

5. Ex : quation du 2nd degr

12

Rcurrence
Mathmatiquement une relation de rcurrence c'est xi+1 = f(xi) avec x0 donn permet de dterminer toutes les valeurs des termes de la suite xk. La valeur d'un nouveau terme se dduit de celle du prcdent.

Prog. Struct. C

5. Ex : quation du 2nd degr

13

Affectation
En programmation, l'affectation :
x = expression(x); Signifie que le nouveau contenu de la variable x aprs l'excution de l'instruction, est le rsultat de l'valuation de l'expression avec le contenu actuel de x.

Prog. Struct. C

5. Ex : quation du 2nd degr

14

Exemple : Calculer

Sn =

( 1)
i

i+ 1

i= 1

Ce qui donne la relation de rcurrence :

Sk = Sk 1 +
Avec :

( 1)
k

k+ 1

S1 = 1
5. Ex : quation du 2nd degr

recurrence.c
15

Prog. Struct. C

Вам также может понравиться