IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

probleme tableau


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut probleme tableau
    j'ai besoin de l'aide au niveau d'un projet au niveau d'un creation d'un tableau de bits :
    1_saisir un ensemble d'identifiant dont la valeur maximale est egale à 31 et de generer la representation en tableau de bits nommée ITEMSET
    2_saisir une serie de 100 ensemble d'identifiant au plus en respectant les contraintes mentionnées en 1

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    Tu ne veut pas de l'aide, tu veut carrément qu'on te fasse ton code!

    Ce n'est pas comme ça que tu auras ton diplôme
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  3. #3
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut
    j'ai dejà fait un code voilà si vous pouvez me corriger ,, et merci d'avence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include<stdio.h>
    void main()
    int i;
    int j;
    int k;
    int tableau[32];
    for (i=0;i<32;i++)
    { tableau[i]=0 ; }
    while (j<32 && k<32)
    { printf("donnez un entier")
    scanf("%d\n", &j)
    tablea[j]=1;
    k++;}
    c'est pour la premiere question mais pour la deuxieme j'ai ajouté au debut un boucle for de 100 iterations

  4. #4
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    Si tu veut te corriger, compile le et execute le

    Mais déjà, à l'oeil, je vois pas mal de trucs:
    - j et k ne sont pas initialisés
    - il te manque des points virgules
    - il manque les accolades du main
    -il manque un u à tableau
    - ton remplissage de tableau ne marchera pas
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  5. #5
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut
    oui oui c'est vrai , j'ai essayé de le compiler avec un compilateur devc++ mais ça n'est pas marché il me donne des fautes au niveau de int , < , while , j'ai rien compris

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 801
    Par défaut
    Au pif, avec un peu d'indentation dans le coin, ça devrait aller mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <stdio.h>
     
    void main()
        int i;
        int j;
        int k;
        int tableau[32];
     
        for (i=0;i<32;i++)
        {
            tableau[i]=0 ;
        }
     
        while (j<32 && k<32)
        {
            printf("donnez un entier")
            scanf("%d\n", &j)
            tablea[j]=1;
            k++;
        }
    (je n'ai à ce stade rien ajouté ou retiré).

    Maintenant, main() est une fonction, le corps de cette fonction doit être mis dans un bloc de code, on ajoute donc deux accolades :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    
    void main()
    {
        int i;
        int j;
        int k;
        int tableau[32];
        
        for (i=0;i<32;i++)
        {
            tableau[i]=0 ;
        }
        
        while (j<32 && k<32)
        {
            printf("donnez un entier")
            scanf("%d\n", &j)
            tablea[j]=1;
            k++;
        }
    }
    Ensuite, c'est mieux de ne pas faire de faute de frappe dans les identificateurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    
    void main()
    {
        int i;
        int j;
        int k;
        int tableau[32];
        
        for (i=0;i<32;i++)
        {
            tableau[i]=0 ;
        }
        
        while (j<32 && k<32)
        {
            printf("donnez un entier")
            scanf("%d\n", &j)
            tableau[j]=1;
            k++;
        }
    }
    Finalement, avec les point-virguiles qui vont bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    
    void main()
    {
        int i;
        int j;
        int k;
        int tableau[32];
        
        for (i=0;i<32;i++)
        {
            tableau[i]=0 ;
        }
        
        while (j<32 && k<32)
        {
            printf("donnez un entier");
            scanf("%d\n", &j);
            tableau[j]=1;
            k++;
        }
    }
    Aussi, tu commences à te servir de variables sans jamais les initialiser. Ici, à quoi sert j ? Je me pose la question... Tu ne fais que la déclarer et vérifier qu'elle est inférieure à 42... Jamais tu ne lui donnes de valeur, jamais tu ne la fais changer de valeur. Comment pourrait-elle donc être inférieure ou égale à quoi que ce soit ? C'est à peu près la même chose pour k : tu l'incrémentes mais on ne sait pas d'où ça commence...

    Ça, c'est pour reprendre ce que YannPeniguel a trouvé, en ne restant qu'au niveau de la syntaxe. Tu avais des messages d'erreur, ça devrait déjà aller mieux.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    
    void main()
    {
        int i;
        int j;
        int k;
        int tableau[32];
        
        for (i=0;i<32;i++)
        {
            tableau[i]=0 ;
        }
        
        while (j<32 && k<32)
        {
            printf("donnez un entier");
            scanf("%d\n", &j);
            tableau[j]=1;
            k++;
        }
    }
    Aussi, tu commences à te servir de variables sans jamais les initialiser. Ici, à quoi sert j ? Je me pose la question... Tu ne fais que la déclarer et vérifier qu'elle est inférieure à 42... Jamais tu ne lui donnes de valeur, jamais tu ne la fais changer de valeur. Comment pourrait-elle donc être inférieure ou égale à quoi que ce soit ? C'est à peu près la même chose pour k : tu l'incrémentes mais on ne sait pas d'où ça commence...

    Ça, c'est pour reprendre ce que YannPeniguel a trouvé, en ne restant qu'au niveau de la syntaxe. Tu avais des messages d'erreur, ça devrait déjà aller mieux.
    Il fait bien un scanf dessus, c'est la variable qui reçoit son entrée clavier.
    Mais la ligne d'affectation dans tableau est fausse, cela devrait plutôt ressembler à:
    Qui veut dire: Je met la valeur de j dans la case numéro k de tableau.
    Mais même après ça, ce sera ensuite faux à cause de l'algo, car dans son code il copie j dans le tableau tout de suite après avoir capté l'entrée au clavier, donc sans tester sa valeur.
    Je rajouterais qu'on peut, avec la norme C99, déclarer l'entier d'une boucle for directement dedans, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (int i=0;i<32;i++) {
    blabla
    }
    Mais bon, c'est une broutille.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Il fait bien un scanf dessus, c'est la variable qui reçoit son entrée clavier.
    Oui, mais une fois qu'on est entré dans la boucle seulement. Or, "j" (ainsi que "k") sont évalués avant qu'on entre dedans. Et à ce stade ils ont tous les deux une valeur indéterminée.

  9. #9
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut
    merci pour vous tous
    ce que j'ai compris il faut initialiser les 2 variables j et K tout d'abord et ensuite il faut trouvé une solution du probleme de scanf c'est à dire il faut mettre le message et le scanf avant la comparaison

  10. #10
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Oui, mais une fois qu'on est entré dans la boucle seulement. Or, "j" (ainsi que "k") sont évalués avant qu'on entre dedans. Et à ce stade ils ont tous les deux une valeur indéterminée.
    Il a un problème d'initialisation, comme cela a déjà été dit, je disais simplement que j servait bien à quelque chose

    ifdo7a > Tu es sur la voie
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  11. #11
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut
    j'ai initialisé j et k à 0 , le travail est compilé mais n'est pas executable ; je trouve sur l'ecran le message : donnez un entier je tape un entier mais j'ai rien obtenu

  12. #12
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    le \n est en trop ici.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  13. #13
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut
    encore je pense du probleme d'affichage des elements du tableau , alors je crois je dois refaire le code avec une autre idée car ce ci ne marche plus

  14. #14
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Une autre petite remarque : en C main () doit être de type int et doit retourner un entier (0 ou EXIT_SUCCESS en cas de succès dans l'exécution, 1 ou EXIT_FAILURE en cas d'échec).

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main (void)
    {
        // traitements
        return 0;
    }

    Citation Envoyé par ifdo7a Voir le message
    j'ai essayé de le compiler avec un compilateur devc++
    Je te conseil d'utiliser un EDI plus récent. Code::Blocks ressemble beaucoup à Dev C++ et est plus à jour.

    Citation Envoyé par ifdo7a Voir le message
    je trouve sur l'ecran le message : donnez un entier je tape un entier mais j'ai rien obtenu
    Ceci est probablement du au fait que la console ouverte par Dev C++ ou ouverte lorsque tu clique sur l'exécutable se ferme automatiquement après l'exécution. Tu n'a donc plus le temps de voir les messages de ton exécutable.

    Tu as deux solutions :
    • Soit tu utilise l'outil run de Code::Blocks qui marque automatiquement une pause
    • Soit tu utilise la fonction getchar() qui attend une saisie validée par la touche ENTER

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      # include <stdio.h>
      int main (void)
      {
          // traitements
          getchar ();
          return 0;
      }


    Tu pourras ainsi lire l'affichage de ton programme

    Cordialement,
    Idriss

  15. #15
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut
    je vous remericie tous , @ monsieur Idriss : est ce que vous pouvez me donner un lien pour telecharger et installer le compilateur que tu me propose

  16. #16
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Il ne s'agit pas seulement d'un compilateur, mais d'un EDI (environnement de développement intégré). Voici le lien de téléchargement officiel :

    http://www.codeblocks.org/downloads/26

    Il faut choisir la version avec le MinGW (codeblocks-10.05mingw-setup.exe) si tu es sous Windows (ce qui est surement le cas vu que tu utilisait Dev C++).

    Cordialement,
    Idriss

  17. #17
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Par défaut
    j'ai essayé avec code block mais il me reste q'un seul erreur j'ai pas compris comment le corriger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include<stdio.h>
    int main()
      {
        int i;
          int j=0;
          int k;
          int l;
          int T[32];
          int tableau[32];
     
        for(i=0;i<32;i++)
            {
              tableau[i]=0;
            }
        for (k=0;k<32;k++)
          {
          printf("donnez un entier");
             scanf("%d",&j);
             while(j<32 && j!=j+1)
               {
               T[k]=j;
               }
            }
        for (l=0;l<32;l++)
     
       if {tableau[l]==T[k]
             tableau[l]==1;
             }
     
     
     
      }

  18. #18
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ifdo7a Voir le message
    j'ai essayé avec code block mais il me reste q'un seul erreur j'ai pas compris comment le corriger
    Il te dit rien le compilo ? Style erreur ligne 42 ? Dans ce cas, il faut probablement aller voir la ligne 41 car c'est souvent là que commence l'erreur. Et comme le compilo cherche à comprendre, c'est en arrivant à la ligne 42 qu'il comprend plus rien et bloque.

    Citation Envoyé par ifdo7a Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include<stdio.h>
    int main()
      {
        int i;
          int j=0;
          int k;
          int l;
          int T[32];
          int tableau[32];
     
        for(i=0;i<32;i++)
            {
              tableau[i]=0;
            }
        for (k=0;k<32;k++)
    Bon, pourquoi utiliser 2 variables i et k pour 2 boucles différentes ? Une fois que le tableau a été mis à 0, i peut très bien resservir. C'est pas des allumettes les variables, ça peut se réutiliser !!!
    Citation Envoyé par ifdo7a Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          {
          printf("donnez un entier");
             scanf("%d",&j);
             while(j<32 && j!=j+1)
    Ca signifie quoi "tant que j inférieur à 32 et j différent de j+1 ? Si t'avais appris les lois mathématiques de l'addition, tu saurais que j est toujours différent de j+1 !!!

    Citation Envoyé par ifdo7a Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       if {tableau[l]==T[k]
             tableau[l]==1;
             }
    T'as appris le C où toi ? Depuis quand on met des accolades dans l'évaluation du if ????

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (tableau[l]==T[k])
    {
         tableau[l]==1;
    }

    Citation Envoyé par ifdo7a Voir le message
    j'ai besoin de l'aide au niveau d'un projet ...
    Un "projet" ? Carrément ??? Ok, on sait que les pyramides ont été bâties par des esclaves qui ne savaient ni lire ni écrire mais aujourd'hui, les mentalités ont un peu changées. Et se lancer dans un "projet" quand on n'a pas les bases du langage c'est un peu... hasardeux !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    A noter que cette séquence ne fait rien du tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (tableau[l]==T[k])
    {
         tableau[l]==1;
    }
    L'assignation est faite par l'opérateur =, pas ==.

  20. #20
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par diogene Voir le message
    A noter que cette séquence ne fait rien du tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (tableau[l]==T[k])
    {
         tableau[l]==1;
    }
    L'assignation est faite par l'opérateur =, pas ==.
    Arf, et en plus j'ai recopié moi-même ce code sans accrocher ce détail
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. probleme : tableau & mise en forme
    Par grumly22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/04/2006, 22h53
  2. [Conception] problème tableau 2 dimensions
    Par Tootsi dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 24/01/2006, 18h55
  3. probleme tableau
    Par semaj_james dans le forum C
    Réponses: 3
    Dernier message: 24/11/2005, 11h55
  4. [Tableaux] Probleme tableau
    Par chocobos dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2005, 11h34
  5. [C++] Probleme tableau
    Par yanndublanche dans le forum C++
    Réponses: 9
    Dernier message: 21/10/2004, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo