Flux rss
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

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

novice, le dimanche 3 septembre 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;
}

1

jamel_theone, le dimanche 3 septembre 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 dimanche 3 septembre 2006 à 16:37:02

J'ajouterais qu'il faut taper :

int main(){
...
}

et non :
main(){
...
}

Bonne chance

Répondre à mamiemando

3

novice, le lundi 4 septembre 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 lundi 4 septembre 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 lundi 4 septembre 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 lundi 4 septembre 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 lundi 4 septembre 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 lundi 4 septembre 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 lundi 4 septembre 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 lundi 4 septembre 2006 à 18:31:11

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

Répondre à Jeff

12

 mamiemando, le mardi 5 septembre 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 lundi 4 septembre 2006 à 18:19:13

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

Répondre à mamiemando
[langage C]remplacer chaine de caractere Bonjour, j'aimerais savoir s'il est possible de faire en langage C ceci: j'ai par exemple un fichier test.txt dans lequel il se trouve la chaine de caractere suivante: toto est il possible de remplacer cette chaine de caractere par une autre... www.commentcamarche.net/forum/affich-3184665-langage-c-remplacer-chaine-de-caractere
Langage C++ - Les types de données 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... www.commentcamarche.net/contents/cpp/cpptype.php3
Langage C - Les types de données 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... www.commentcamarche.net/contents/c/ctype.php3
Les piles en langage CLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage... www.commentcamarche.net/faq/sujet-8283-les-piles-en-langage-c
Langage C pointeurs, creation de liste. (Résolu)Bonjour a tous. Voila, je rencontre quelaues petits preoblemes en langage C. Le but est de creer des fiches afin de creer une listes les contenant. Il faut ensuite afficher ce que l on a entre dans chaque fiche, puis afficher enfin le nombre de fiches... www.commentcamarche.net/forum/affich-2170245-langage-c-pointeurs-creation-de-liste
Getchar() langage C (Résolu)Bonjour, je suis nouveau ne langage C et donc j'eprouve quelques difficulte : Je souhaiterai stocker le flux dentre que jentre au clavier pour cela je procede de la maniere suivante : #define BUFSIZE=4096; char buf[BUFSIZE]; printf("Enter your... www.commentcamarche.net/forum/affich-2960608-getchar-langage-c
Compilateur du langage C (Résolu)bonjour, je commence à étudier le langage C, et je veux savoir quel complilateur je dois utiliser, et si c possible d'où je peux le télécharger. Merci infiniment. www.commentcamarche.net/forum/affich-2362617-compilateur-du-langage-c
Langage C - Les chaînes de caractèresQu'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... www.commentcamarche.net/contents/c/cstring.php3
Introduction au langage CPetite 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... www.commentcamarche.net/contents/c/cintro.php3
Langage C++ - Les pointeursComme en langage C, le langage C++ permet d'utiliser des pointeurs pour manipuler des données, mais il introduit aussi le concept de référence, très pratique pour permettre la modification d'une donnée passée en paramètre d'une fonction. Définition... www.commentcamarche.net/contents/cpp/cpppoint.php3