Problème avec do while

Résolu
misterG88 Messages postés 14 Statut Membre -  
misterG88 Messages postés 14 Statut Membre -
salut !!!!
Aidez moi svp j'ai un soucis avec mon programme .Il consiste à afficher les 20 premiers nombres impairs,je dois taper "c "pour continuer et "a" pour sortir du programme.
cordialement,

Voici mon code
#include<stdio.h>

int main()
{
    char comd='c';
    int i;
    int compteur=0,cpt=0;
  
   
    do
   {
        printf("saisir un chiffre\n");
       scanf("%d",&i);
         for(i=1;compteur<=20;i++)
        {
      
          if(i%2!=0)
          {
           printf("%d",i);
           printf("\n");
           compteur++;
          }
      
        }  
           printf("\n");
           printf("entrer c ou a\n");
           scanf("%c",&comd);
    } 
             
       while(comd!='a');
    
    
}

3 réponses

  1. Dubphonic Messages postés 14 Statut Membre 2
     
    Quel langage ?
    0
    1. misterG88 Messages postés 14 Statut Membre
       
      langage C merci !!
      0
  2. chico200987 Messages postés 856 Statut Membre 144
     
    Salut,

    Tu veux afficher les 20 premiers nombres impairs ok, mais à quoi sert la valeur que tu saisies puisque juste après ton scanf tu fais

    for(i=1;compteur<=20;i++) 


    Donc tu écrases direct la valeur que tu viens de récolter..

    Il doit manquer un bout de ton énoncé, tu dois afficher les 20 premiers nombre à partir du nombre saisi ? Ou jusqu'au nombre saisi ? Ou autre ?

    Et ta variable cpt sert à quoi ?

    Ah que coucou c'est moi.
    0
    1. misterG88 Messages postés 14 Statut Membre
       
      merci Chico !!!! tu as raison on doit afficher les 20 premiers nombre impairs à partir du nombre saisi et on doit taper "c "pour continuer et "a" pour sortir du programme.
      0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    cpt=0;
    Tu ne te sers pas de cette variable, autant ne pas la déclarer pour éviter de s'emmêler les pinceaux.

    scanf("%d",&i);
    for(i=1;compteur<=20;i++)

    Confusion de variables. Si j'étais toi, je mettrais des noms plus parlant. Par exemple :
    int base;
    ...
    scanf("%d",&base); getchar();
    for (i=base; i<21; i++) {
    


    compteur++;
    A quoi ça sert ? En lisant ta consigne, tu n'as pas besoin de compter le nombre d'impairs affichés.

    scanf("%c",&comd);
    N'oublie pas de rajouter un getchar(); juste après le scanf(); pour vider le '\n' restant dans le buffer clavier. Idéalement, il faudrait faire une belle fonction.

    Et tu as oublié "return 0;" en fin de main() pour dire que tout s'est bien déroulé.

    Cdlt,
    0
    1. misterG88 Messages postés 14 Statut Membre
       
      Merci Fiddy you saved my day .ca marche maintenant .merci a vous tous !!!!
      Cdlt,
      0