NewbieContest

Programmation => Langages compilés => Discussion démarrée par: deathdwarf le 12 Mars 2006 à 11:36:16



Titre: [C] Besoin d'aide pour un prog
Posté par: deathdwarf le 12 Mars 2006 à 11:36:16
Je dois réaliser un programme qui enregistre des valeurs numeriques entieres dans un tableau puis qui:
    - Recherche le nombre de fois ou apparait un chiffre spécifié par l'utilisateur.
    - Recherche le nombre d'élément du tableau qui contiennent ce chiffre.

J'ai réussis a faire le programme en python, mais lorsque je le "traduis" en C j'ai un probleme:
Quelque soit la valeur dans la variable "reste" et dans la variable "chiffre" le programme entre dans la boucle
qui suit le commentaire "/*Incrementation locale*/" dont la condition est (chiffre==reste).
Quelqu'un peut-il m'expliquer pourquoi le programme entre dans la boucle meme si la condition n'est pas remplie.

Merci d'avance de votre aide.

Code:
#include <stdio.h>
main()
{
      /* Déclaration des variables*/
      int chiffre = -1;
      int tab [100];
      int val;
      int i=-1;
      int n;
      int quotient=0;
      int reste=0;
      int nbdechiffre=0;
      int nbdechiffreloc=0;
      int nbdelement=0;
     
      /*Demande du chiffre a rechercher*/
     
      while ((chiffre<=0) || (chiffre>9))
            {
            printf("Entrez le chiffre que vous voulez chercher dans la suite:");
            scanf("%d",&chiffre);
            }
     
      /*Saisie des valeur*/
     
      while (val!=0)
            {
            printf("Entrez des valeurs positive (0 pour arreter la saisie):\n");
            scanf("%d",&val);
           
      /* Enregistrement des valeurs positives dans le tableau*/
           
            if (val>0);
               {
               i=i+1;
               tab[i]=val;
               }
            }
      for (n=0;n<i;n++)
          {
          quotient=tab[n];

      /* Recherche du chiffre*/

          while (quotient!=0)
                {
                reste=quotient%10;
                quotient=quotient/10;
               
      /*Incrementation locale*/
               
                if (chiffre==reste);
                   {
                   nbdechiffreloc=nbdechiffreloc+1;
                   }
                }
               
      /*Incrementation globale*/
               
          nbdechiffre=nbdechiffre+nbdechiffreloc;
         
      /*Incrementation du nombre d'element*/
               
          if (nbdechiffreloc>0)
             {
             nbdelement=nbdelement+1;
             }
          nbdechiffreloc=0;
          }
         
          /*Affichage des resultats*/
      printf("      +---------------------------------------------------------------+\n");
      printf("      |____________________.-=R-E-S-U-L-T-A-T-S=-.____________________|\n");
      printf("      +---------------------------------------------------------------+\n");
      printf("      |Il y a %d elements qui contiennent le chiffre %d dans le tableau |\n",nbdelement,chiffre);
      printf("      +---------------------------------------------------------------+\n");
      printf("      |Il y a %d chiffres %d dans le tableau                            |\n",nbdechiffre,chiffre);
      printf("      +---------------------------------------------------------------+\n");
      printf("      |Il y a %d elements dans le tableau                              |\n",i);
      printf("      +---------------------------------------------------------------+\n");
}


Titre: [C] Besoin d'aide pour un prog
Posté par: absolut le 12 Mars 2006 à 17:50:17
Citation de: deathdwarf
Je dois réaliser un programme qui enregistre des valeurs numeriques entieres dans un tableau puis qui:
    - Recherche le nombre de fois ou apparait un chiffre spécifié par l'utilisateur.
    - Recherche le nombre d'élément du tableau qui contiennent ce chiffre.

J'ai réussis a faire le programme en python, mais lorsque je le "traduis" en C j'ai un probleme:
Quelque soit la valeur dans la variable "reste" et dans la variable "chiffre" le programme entre dans la boucle
qui suit le commentaire "/*Incrementation locale*/" dont la condition est (chiffre==reste).
Quelqu'un peut-il m'expliquer pourquoi le programme entre dans la boucle meme si la condition n'est pas remplie.

Merci d'avance de votre aide.
Tu debutes en C, a priori.
Tout d'abord, ce que je te conseillerai, c'est de faire une partie ou tu declares tes variables,
et une autre ou tu les initialises ca t'evitera des problemes dans tes progs.

Apres, j'ai regarde rapidement, mais le premier element d'un tableau c'est 0.
Tu commence dans ton prog a 2, l'insertion de tes valeurs!

Ca devrait corriger une partie de tes problemes.


Titre: [C] Besoin d'aide pour un prog
Posté par: deathdwarf le 12 Mars 2006 à 19:03:39
Citation
Tu debutes en C, a priori.
Oui, c'est le tout premier programme que je dois faire en C
Citation
Tout d'abord, ce que je te conseillerai, c'est de faire une partie ou tu declares tes variables,
et une autre ou tu les initialises ca t'evitera des problemes dans tes progs.
Je vais faire ça, merci de ton conseil.

Citation
Apres, j'ai regarde rapidement, mais le premier element d'un tableau c'est 0.
Tu commence dans ton prog a 2, l'insertion de tes valeurs!
Je ne comprend pas pourquoi tu dit ça, j'initialise la variable i à -1 puis je l'incrémente d'un donc la première valeure est dans tab[0] puisque i passe a 0, enfin c'est ce qu'il me semble.

En tout cas, merci de ton aide.


Titre: [C] Besoin d'aide pour un prog
Posté par: absolut le 12 Mars 2006 à 19:53:52
Ben, j'ai pas les yeux en face des trous :rolleyes:
J'ai trop fait la fete hier :cool:

Sinon la reponse a ton probleme c'est le ;

               
                if (chiffre==reste);    /* <=== */
                   {
                   nbdechiffreloc=nbdechiffreloc+1;
                   }
                }


Titre: [C] Besoin d'aide pour un prog
Posté par: deathdwarf le 13 Mars 2006 à 18:16:32
Merci beaucoup. pour une erreur toute bête c'était vraiment une erreur toute bête , j'en ai presque honte :oops:.


Titre: [C] Besoin d'aide pour un prog
Posté par: deathdwarf le 13 Mars 2006 à 18:19:34
Bon ben en fait c'était pas ça, ça ne marche toujours pas.


Titre: [C] Besoin d'aide pour un prog
Posté par: absolut le 13 Mars 2006 à 18:20:40
Citation de: deathdwarf
Merci beaucoup. pour une erreur toute bête c'était vraiment une erreur toute bête , j'en ai presque honte :oops:.
Ca arrive a toute le monde. ;)


Titre: [C] Besoin d'aide pour un prog
Posté par: neoflo le 11 Août 2006 à 19:47:38
Je sais, le message date d'il y a 3 plombes, mais, si par hasard tu n'avais pas trouvé la solution.

Quand tu dis, ça va pas ? Qu'est ce qui va pas exactement ?