Algorithme

Fermé
wilikl Messages postés 1 Date d'inscription jeudi 8 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015 - 8 janv. 2015 à 22:17
Kaldoran Messages postés 137 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 21 juin 2015 - 9 janv. 2015 à 11:28
s'il vous plait
comment ecrire un algorithme qui permet d'afficher les 100 premiers nombres impair
A voir également:

3 réponses

Kaldoran Messages postés 137 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 21 juin 2015 29
Modifié par Kaldoran le 8/01/2015 à 22:29
Salut,

Tout simplement une boucle sur une variable N
De n = 1
jusqu'à N >= 99 [ 100 étant pair ].

Il suffit alors d'incrémenter i de 2 en 2.
Ce qui donnera :
1 3 5 etc ;)
0
Tu as raison Kaldoran mais ta solution fait un peu bricolage, : ) et ce n'est pas tout à fait la réponse à la question ^^

Cordialement
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020 > Utilisateur anonyme
Modifié par KX le 8/01/2015 à 23:22
Bonjour,

"ce n'est pas tout à fait la réponse à la question"
En fait, si, ou presque. Même si c'est sûrement par erreur.
Le fait que l'on incrémente i de 2 en 2 (et non pas N, qui lui s'incrémente de 1 en 1) va donner le bon résultat. Algorithmiquement c'est la meilleur solution.
Le seul problème c'est qu'il faudrait initialiser i (à 1) et aller jusqu'à N>=100 puisque l'on commence à 1, sinon on n'aurait que 99 nombres.
0
Kaldoran Messages postés 137 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 21 juin 2015 29
9 janv. 2015 à 11:26
En effet elle fait un peu bricolage mais pour le coup elle est optimisée :p
( Aux erreurs près signalée par KX )
0
Bonsoir,

pour les impairs entre 0 et 100 :

de n = 0 à 100 boucler
si n modulo 2 n'est pas 0 alors afficher n
fin de boucle

pour les 100 premier impairs ( et non les chiffres impairs entre 0 et 100 ) :

initialiser compteur = 0
initialiser n = 0
tant que compteur <= 100 boucler
si n modulo 2 n'est pas 0 alors
afficher n
incrementer compteur
fin de si
incrementer n
fin de boucle

https://fr.wikipedia.org/wiki/Modulo_%28op%C3%A9ration%29

Cdt

ps -> à mon avis c'est le mot "modulo" que ton prof souhaite voir : )

En informatique 99% des problèmes se situent entre le fauteuil et le clavier
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 8/01/2015 à 23:22
Je complète mon analyse avec ta proposition (le deuxième algo puisque c'est celui qui répond à la question).
Au départ n=0 (compteur=0), tu n'affiches rien, tu incrémentes, n=1 (compteur=1), puis tu rentres dans le si, tu affiches 1, tu incrémentes deux fois (une fois dans le si, une fois en dehors), cela revient donc au même que l'incrément de 2 en 2 que tu critiquais chez Kaldoran. Sauf qu'en plus toi tu rajoutes ce calcul n modulo 2 totalement superflu puisqu'en incrémentant de 2 en 2, le test est toujours vrai. A part la première fois bien sûr, ce qui fais que tu n'affiches que 99 valeurs, comme Kaldoran.

Les deux algos ont finalement le même principe, le même résultat, mais à choisir je préfère celui de Kaldoran (à cause du modulo en trop chez toi)
0
Utilisateur anonyme > KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
Modifié par ludobabs le 8/01/2015 à 23:39
Merci pour tes remarques !

Cite : " tu incrémentes deux fois (une fois dans le si, une fois en dehors)"

certe non ! dans ma seconde proposition, une seule fois, il ne s'agit pas d'un FOR mais d'un WHILE ( c'etait fait exprès )

et, mais cela n'engage que moi, Zéro est bien un entier naturel il me semble ? donc partir avec n = 1 ... le pauvre 0, encore une fois il est laissé tout seul ^^

cdt

ps -> la parole d'un modo est sacrée je le sais bien mais là ....
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020 > Utilisateur anonyme
Modifié par KX le 8/01/2015 à 23:39
"dans ma seconde proposition, une seule fois, il ne s'agit pas d'un FOR mais d'un WHILE"
Arf, tu as changé ton code entre temps...

Du coup ton algorithme est encore plus incompréhensible, toi qui parlais de bricolage tout à l'heure ^^
Avec ton while, tu rentres donc une fois dans le si pour afficher n et l'incrémenter une première fois, puis tu fais un tour de boucle sans passer dans le si, pour incrémenter une deuxième fois n.
Au final tu fais quand même bien deux incréments successifs, mais tu as besoin de deux tours de boucles pour ça... ce serait tellement plus simple de faire +2 directement et de se passer totalement des si et des modulo 2...

"la parole d'un modo est sacrée"
Je ne suis pas là en tant que modo, je suis là en tant qu'informaticien, parce que les algos je connais quand même... et pas qu'un peu ;-)
0
Utilisateur anonyme > KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
Modifié par ludobabs le 8/01/2015 à 23:47
idem ^^ mais je n'ai pas modifié mon post, en tout cas pas cette distinction entre FOR et WHILE : ) et je souhaitais apporter la notion de modulo ( qui est quand même le meilleur moyen pour reconnaitre pair / impair : )

En tout cas merci à toi.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
8 janv. 2015 à 23:24
La meilleure solution (celle de Kaldoran et ludobabs corrigée)

nombre = 1

Boucle de 1 à 100
afficher nombre
nombre = nombre + 2
Fin Boucle
0
Kaldoran Messages postés 137 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 21 juin 2015 29
9 janv. 2015 à 11:28
En effet, très bonne correction ;)
J'avais en effet pas les 100 premiers dans ma version mais seulement les 50 premiers ( environs )
0