Aide pour comprendre un petit code [C] - C - Programmation
Marsh Posté le 04-03-2013 à 06:17:44
Salut caps lock,
Pour ton premier problème (portée du for), je pense que c'est surtout là pour t'embrouiller . Quand tu ne mets pas les crochets { } la boucle for prend le prochain statement (et non la prochaine ligne). Ici il va prendre for { if(...) else(...) }
Autrement dit, c'est la même chose que d'écrire ceci :
Code :
|
Par rapport à ton deuxième problème, il suffit de lire ce que fait le if puis le else.
En gros ce serait :
n = 200, divisible par d=2 ? (if) -> oui, donc n = 100, afficher d = 2.
n = 100, divisible par d=2 ? (if) -> oui, donc n = 50, afficher d = 2.
n = 50, divisible par d=2 ? (if) -> oui, donc n = 25, afficher d = 2.
n = 25, divisible par d=2 ? (if) -> non, donc incrémenter d, d = 3.
n = 25, divisible par d=3 ? (if) -> non, donc incrémenter d, d = 4.
n = 25, divisible par d=4 ? (if) -> non, donc incrémenter d, d = 5.
n = 25, divisible par d=5 ? (if) -> oui, donc n = 5, afficher d = 5.
Sortie de boucle car d * d > n, afficher n = 5 (le reste)
J'espère que j'ai été clair.
Marsh Posté le 04-03-2013 à 04:27:50
En vue d'un examen prochain je m’entraîne sur des exercices et je bute littéralement sur celui ci
L'appel => decompose(200); affiche dans la console : 2 2 2 5 5
Mon premier problème : je ne comprends pas le rôle d'un "for" sans crochet et je ne vois pas sa portée.
Deuxième problème : je pense avoir compris d'où viennent les 2 2 2 mais je ne comprends pas les 5
Voici mon raisonnement :
d=2 2x2 < 200
si ( 200 % 2 == 0) (vrai)
on affiche d (2)
et on fait n = 200/2 (n=100)
si ( 100 % 2 == 0) (vrai)
on affiche d (2)
et on fait n = 100/2 (n=50)
si ( 50 % 2 == 0) (vrai)
on affiche d (2)
et on fait n = 50/2 (n=25)
si (25 % 2 == 0) (faux) il reste 1
Ensuite c'est le brouillard, merci pour toute aide