Rechercher : dans
Par :

[langage C] comment remplacer[for] par [if]

Dernière réponse le 5 sep 2006 à 23:07:01 novice, le 3 sep 2006 à 02:58:15 
 Signaler ce message aux modérateurs

Bonjour
je debute en programmation et j'ai une question qui pourrait semblé bête a tout les programmeurs, c'est un exercice que j'ai trouvé dans 1 livre d'apprentissage sur le langage C. je voulais savoir comment remplacer l'instruction for par l' instruction if dans ce code merci.

#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;
}

Meilleures réponses pour « [langage C] comment remplacer[for] par [if] » dans :
Langage C++ - Les types de données Voir Les types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données Voir Les types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Introduction au langage C VoirPetite histoire du C Le langage C a été mis au point par D.Ritchie et B.W.Kernighan au début des années 70. Leur but était de permettre de développer un langage qui permettrait d'obtenir un système d'exploitation de type UNIX portable. D.Ritchie...

1

jamel_theone, le 3 sep 2006 à 12:57:31

Salut,

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;
}

Répondre à jamel_theone

2

mamiemando, le 3 sep 2006 à 16:37:02

J'ajouterais qu'il faut taper :

int main(){
...
}

et non :
main(){
...
}

Bonne chance

Répondre à mamiemando

3

novice, le 4 sep 2006 à 00:53:39

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.

Répondre à novice

4

Char Snipeur, le 4 sep 2006 à 08:52:10

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 :

omt:
    if((num%2!=0)|(num%3!=0))
        num=getchar()-48;
    else
        goto omt;
Bonne chance. Salutation !
Char Snipeur

Répondre à Char Snipeur

5

mamiemando, le 4 sep 2006 à 09:39:07

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

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

Répondre à mamiemando

6

Jeff, le 4 sep 2006 à 10:14:43

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...

Répondre à Jeff

9

Char Snipeur, le 4 sep 2006 à 14:40:09

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;
   }
Salutation !
Char Snipeur

Répondre à Char Snipeur

7

novice, le 4 sep 2006 à 11:57:58

Merci pour les petites leçons de programmation j'ai utilisé le code de mamiemendo

#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.

Répondre à novice

8

lami20j, le 4 sep 2006 à 12:07:06

Salut,

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

Répondre à lami20j

11

Jeff, le 4 sep 2006 à 18:31:11

Sauf erreur de ma part... le for est toujours là :o)

Répondre à Jeff

12

 mamiemando, le 5 sep 2006 à 23:07:01

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 ;)

Répondre à mamiemando

10

mamiemando, le 4 sep 2006 à 18:19:13

Roooh lami20j tant de galanterie... Je crois que je vais rougir ^^

Répondre à mamiemando
Collection CommentÇaMarche.net