logo Homepage
+  NewbieContest
|-+  Programmation» Langages compilés» [C] Besoin d'aide pour un prog
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [C] Besoin d'aide pour un prog  (Lu 3467 fois)
deathdwarf
Profil challenge

Classement : 22671/54324

Néophyte
*
Hors ligne Hors ligne
Messages: 4


Voir le profil
« 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");
}
Journalisée
absolut

Profil challenge

Classement : 226/54324

Membre Junior
**
Hors ligne Hors ligne
Messages: 97


Voir le profil
« #1 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.
Journalisée

--
Lost in my mind...
deathdwarf
Profil challenge

Classement : 22671/54324

Néophyte
*
Hors ligne Hors ligne
Messages: 4


Voir le profil
« #2 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.
Journalisée
absolut

Profil challenge

Classement : 226/54324

Membre Junior
**
Hors ligne Hors ligne
Messages: 97


Voir le profil
« #3 le: 12 Mars 2006 à 19:53:52 »

Ben, j'ai pas les yeux en face des trous
J'ai trop fait la fete hier

Sinon la reponse a ton probleme c'est le ;

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

--
Lost in my mind...
deathdwarf
Profil challenge

Classement : 22671/54324

Néophyte
*
Hors ligne Hors ligne
Messages: 4


Voir le profil
« #4 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 .
Journalisée
deathdwarf
Profil challenge

Classement : 22671/54324

Néophyte
*
Hors ligne Hors ligne
Messages: 4


Voir le profil
« #5 le: 13 Mars 2006 à 18:19:34 »

Bon ben en fait c'était pas ça, ça ne marche toujours pas.
Journalisée
absolut

Profil challenge

Classement : 226/54324

Membre Junior
**
Hors ligne Hors ligne
Messages: 97


Voir le profil
« #6 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 .
Ca arrive a toute le monde.
Journalisée

--
Lost in my mind...
neoflo
Profil challenge

Classement : 8122/54324

Membre Complet
***
Hors ligne Hors ligne
Messages: 171


Voir le profil WWW
« #7 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 ?
Journalisée

Pages: [1]
  Imprimer  
 
Aller à: