[langage C] comment remplacer[for] par [if]
Résolu/Fermé
novice
-
3 sept. 2006 à 02:58
mamiemando Messages postés 33387 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 - 5 sept. 2006 à 23:07
mamiemando Messages postés 33387 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 - 5 sept. 2006 à 23:07
A voir également:
- [langage C] comment remplacer[for] par [if]
- Remplacer disque dur par ssd - Guide
- Langage ascii - Guide
- Remplacer par word - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
8 réponses
jamel_theone
Messages postés
61
Date d'inscription
dimanche 5 février 2006
Statut
Membre
Dernière intervention
1 décembre 2008
20
3 sept. 2006 à 12:57
3 sept. 2006 à 12:57
Salut,
tu peux faire ca par exemple
tu peux faire ca par exemple
#include <stdio.h> main() { int num; printf("entrez un chiffre divisible\npar 2 et 3 :\n"); num=1; if ((num%2 != 0) || (num%3 != 0)) num = getchar() - 48; printf("Resultat : %d",num); return 0; }
mamiemando
Messages postés
33387
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 novembre 2024
7 803
3 sept. 2006 à 16:37
3 sept. 2006 à 16:37
J'ajouterais qu'il faut taper :
et non :
Bonne chance
int main(){ ... }
et non :
main(){ ... }
Bonne chance
merci pour les solutions mais le but du programme est de trouver les chiffres divisibles par 2 et 3 donc si un chiffre ne l'est pas la boucle continue.Normalement dans l' exercice seule les chiffres 0 et 6 sont divisibles par 2 et 3.
Executer ce code et vous comprendrer, je dois remplacer l' instruction [for] par l' instruction [if].
#include <stdio.h>
main()
{
int num;
printf("entrez un chiffre divisible\npar 2 et 3 :\n");
for ( num = 1;(num%2 != 0) || (num%3 != 0);)
num = getchar() - 48;
printf("Resultat : %d",num);
return 0;
}
merci pour l'aide.
Executer ce code et vous comprendrer, je dois remplacer l' instruction [for] par l' instruction [if].
#include <stdio.h>
main()
{
int num;
printf("entrez un chiffre divisible\npar 2 et 3 :\n");
for ( num = 1;(num%2 != 0) || (num%3 != 0);)
num = getchar() - 48;
printf("Resultat : %d",num);
return 0;
}
merci pour l'aide.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 sept. 2006 à 08:52
4 sept. 2006 à 08:52
salut.
Le problème entre un for et un if, c'est que le for boucle, mais pas le if...
La solution de jamel est bonne, il suffit en quelque sorte de boucler dessus.
Pour reprendre sa solution, je ferai :
Le problème entre un for et un if, c'est que le for boucle, mais pas le if...
La solution de jamel est bonne, il suffit en quelque sorte de boucler dessus.
Pour reprendre sa solution, je ferai :
omt: if((num%2!=0)|(num%3!=0)) num=getchar()-48; else goto omt;Bonne chance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33387
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 novembre 2024
7 803
4 sept. 2006 à 09:39
4 sept. 2006 à 09:39
Certains choses sont à revoir
- pour lire une valeur numérique on utilise plutôt un scanf, car la methode du getchar suppose que le nombre ne comporte qu'un chiffre et le "-48" qu'on est en ASCII. On fait donc plutôt
- ensuite pour les divisibles par 2 et 3 je suppose que tu t'arrêtes à 10 car tous les multiples de 6 vérifient la condition. Auquel cas veux-tu que le programme
1)les affiche tous directement
2) ou que ce soit uniquement un test sur UN nombre saisi par l'utilisateur ?
1)
2)
Si tu es sous windows tu peux rajouter un getchar(); devant le return 0 (pour pouvoir lancer le programme depuis l'explorateur et avoir le temps de lire le résultat).
Bonne chance
- pour lire une valeur numérique on utilise plutôt un scanf, car la methode du getchar suppose que le nombre ne comporte qu'un chiffre et le "-48" qu'on est en ASCII. On fait donc plutôt
int x; scanf("%d",&num);
- ensuite pour les divisibles par 2 et 3 je suppose que tu t'arrêtes à 10 car tous les multiples de 6 vérifient la condition. Auquel cas veux-tu que le programme
1)les affiche tous directement
2) ou que ce soit uniquement un test sur UN nombre saisi par l'utilisateur ?
1)
#include <stdio.h> int main(){ int i; for(i=0;i<10;++i){ if( (i%2 == 0) && (i%3) == 0){ printf("%d est divisible par 2 et par 3\n",i); } } return 0; }
2)
#include <stdio.h> int main(){ int i,num; printf("num = ?"); scanf("%d",&num); if( (num%2 == 0) && (num%3) == 0){ printf("%d est divisible par 2 et par 3\n",num); } return 0; }
Si tu es sous windows tu peux rajouter un getchar(); devant le return 0 (pour pouvoir lancer le programme depuis l'explorateur et avoir le temps de lire le résultat).
Bonne chance
Jean-François Pillou
Messages postés
18301
Date d'inscription
lundi 15 février 1999
Statut
Webmaster
Dernière intervention
16 février 2023
63 274
4 sept. 2006 à 10:14
4 sept. 2006 à 10:14
Je pense que l'astuce c'est de créer une fonction récursive prenant un entier en paramètre:
- Si la valeur est divisible par 2 et 3, elle l'affiche
- Sinon, on l'incrémente et on la passe en paramètre à cette même fonction...
- Si la valeur est divisible par 2 et 3, elle l'affiche
- Sinon, on l'incrémente et on la passe en paramètre à cette même fonction...
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 sept. 2006 à 14:40
4 sept. 2006 à 14:40
en effet, j'y avai penser, sans savoir comment faire exactement.
void dipt(int& num) { if((num%2==0)&(num%3==0)) printf("%d est divisible par deux et trois\n",num); else {scanf("%d",num);dipt(num);} } int main() { int num=1; scanf("%d",num); dipt(num); return 0; }
merci pour les petites leçons de programmation j'ai utilisé le code de mamiemendo
je comprend mieux la difference entre les 2 instructions [for] et [if] merci a tous et a bientot.
#include <stdio.h> int main(){ int i; for(i=0;i<10;++i){ if( (i%2 == 0) && (i%3) == 0){ printf("%d est divisible par 2 et par 3\n",i); } } return 0; }
je comprend mieux la difference entre les 2 instructions [for] et [if] merci a tous et a bientot.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
4 sept. 2006 à 12:07
4 sept. 2006 à 12:07
Salut,
j'ai utilisé le code de mamiemendo
tu peux lui offrir une fleur
Voilà :
j'ai utilisé le code de mamiemendo
tu peux lui offrir une fleur
Voilà :
.=====__ /==Z' .===_ ~~=,_===\ _/ | | YZ, `\, ~\ | | | _/=j'\ !, d __====_| | b/ V`; /' .M , `5\==/~~ W, t d+, .D4| / /'|/~~~\=__ .- `\ t~\ | |t`~~T/'|Z :/ | ~~\=/V \ | \4, | ~/~' :Z -! | | \, /\__| \\.! :XG \ / ._, ./' `L | ~; V; _//' | \ .f~' `~; .b_ ./ \\__JL `; Y7~ | / / d //' \, .! `D\, `\, | .! .t/ .(_/=~ \ / `;`~~~=+=qLb, jK_L==f' j'' `; ./ .(r, `~\5' ~\\,._r/ | ~=m! ./D' `\, \, !G~ t ~==___===/'/ .!`\__ /! __=~\\~=_ TG= | .| ~\=\=r@/~5 \ !, ~=_, __//' |./~V || `| \, t ~~~~\==~~ t| | | | | !\, \=_, ! t .! !, \ `\/~~~ | / !\/\ `; ./ `~- t .! N, ./' `\/'lami20j
Jean-François Pillou
Messages postés
18301
Date d'inscription
lundi 15 février 1999
Statut
Webmaster
Dernière intervention
16 février 2023
63 274
4 sept. 2006 à 18:31
4 sept. 2006 à 18:31
Sauf erreur de ma part... le for est toujours là :o)
mamiemando
Messages postés
33387
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 novembre 2024
7 803
>
Jean-François Pillou
Messages postés
18301
Date d'inscription
lundi 15 février 1999
Statut
Webmaster
Dernière intervention
16 février 2023
5 sept. 2006 à 23:07
5 sept. 2006 à 23:07
C'es normal je pense qu'il n'avait pas compris la nuance entre for et if et il s'est rendu compte qu'il fallait un for ;)
mamiemando
Messages postés
33387
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 novembre 2024
7 803
4 sept. 2006 à 18:19
4 sept. 2006 à 18:19
Roooh lami20j tant de galanterie... Je crois que je vais rougir ^^