Les cours et TP ont été donné par M. NOEL, professeur de Mathématiques et Info dans la prépa de l'ISEP/ISEN B. Les corrections ont été rédigées par des élèves.
Pour des raisons de lisibilité, le sujet n'est disponnible qu'en format PDF :
Voir le sujet du TP1 sur le language C
La correction en PDF sera disponnible sous peu.
Certain doivent être tentés de faire x=y; y=x; mais avec ce code, x prend la valeur de y puis y celle de x, c'est a dire y=x or, ce n'est pas ce que l'on veut Il faut donc stocker temporairement x ou y dans une autre variable, ici z :
Code allégé :
Prévu pour les SUPs de l'ISEP/ISEN
Il faut savoir que les fonctions incluant des scanf, printf etc ont pour argument "void", a la différence des autres fonctions retournant des int ou float
Rq : On utilisera cette fonction dans la fonction main() de l'exercice 4
Ici, a et b étant des entiers, meme en définissant leur division comme un réel, la valeur retournée serait un entier, d'ou la division par 2.0 (considéré comme un réel) et non 2 (entier)
Info : le "\n" signifie un retour a la ligne
On peut alléger :
C'est des maths et de la logique pour la définition des vars :
ax + b = 0 <=> x = -b / a
avec a et b réel, on a donc :
Ici, il suffi d'écrire n! pour voir a peu prés comment faire :
n! = 1*2*3 .... *n
On va donc avoir une boucle for allant de 1 jusqu'a n :
Pour cet exo, nous avons le droit d'utiliser la fonction facto, ce qui simplifie les choses ;)
Il suffit juste d'appliquer une somme :
Par exemple, pour k=2, on a : 1/1! + 1/2!
Cet exercice est comme le précédent, mais sans utiliser la fonction facto Pour voir a peu prés comment faire, on écrit quelques exemples :
Pour n=1, on a : 1/1 + 1/1 = 2
Pour n=2, on a : 1/1 + 1/1 + 1/2 = 5/2
Pour n=3, on a : 1/1 + 1/1 + 1/2 + 1/(2*3) = 2 + 1/2 + 1/6 = 8/3
On remarque que le dénominateur peut s'écire sous la forme d'une somme :
1 1 2 6 ...
De plus, nous avons besoin du dernier terme du dénominateur pour calculer le terme suivant.
On obtient donc la meme boucle 'for' que la fonction facto, a laquelle vient s'ajouter l'opération somme.
Nb : Pour ceux qui n'auraient pas compris un point, n'hésitez pas a poster sur le forum :)
U(n) est définie comme un quotient de 2 suites arythmétiques, de raison 2 et 1, on a donc U(n+1) = (U(0) + 2n) / (U(0) +n) avec U(0) = 1
Pour cette suite, afin de calculer U(n), il nous faut U(n-1) et U(n-2), on va donc devoir avoir tout le temps ces deux dernier termes, en les stockant dans des variables. Ici, la var 'U' sera U(n-2) et la var 'V' sera U(n-1), et 'W' U(n), aprés un calcul de W, il faudra donc attribuer la valeur de V a U et celle de W a V De plus, la boucle 'for' commence a 2 étant donné que dans l'énonncé, on a n >= 2, en effet, si n < 2, nous n'avons pas U(n-1) et U(n-2)
Fin des corrigés de ce TP, merci aux SUPs de l'école !
Commentaires :
Soyez le premier à réagir !