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 avec tableau


Sujet :

C

  1. #21
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    merciii
    le programme écrit donne cela:

    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
    #include <stdint.h>
    #include <stdio.h>
     
    int main(){
     
    unsigned int i = 0 | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 10);
    void
    print_uint32(uint32_t bits)
    {
            uint32_t mask;
            for (mask = 1<<31; mask; mask >>= 1) {
                    fputc(bits & mask ? '1' : '0', stdout);
            }
    }
    }
    mais ça ne marche pas!!

  2. #22
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Mon dieu

    En C on ne peut pas définir une fonction dans une fonction.

  3. #23
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    re,ouii j'ai posté la version non corrigée
    j'ai réecrit le code d'une autre manière mais ça ne marche pas aussi

    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
    #include <stdint.h>
    #include <stdio.h>
    void affichebin(unsigned n)
    {
    	unsigned bit = 0 ;
    	unsigned mask = 1 ;
    	for (int i = 0 ; i < 32 ; ++i)
    	{
    		bit = (n & mask) >> i ;
    		::printf("%d", bit) ;
    		mask <<= 1 ;
    	}
    }
    int main(){
     
    unsigned int i = 0 | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 10);
    affichebin(unsigned n);
    }

  4. #24
    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
    L'opérateur de résolution de portée n'existe pas en C.

    As-tu appris les bases du C ?

  5. #25
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    re,
    cette fonction est utilisé dans un sujet sur ce forum et elle marche
    vous pouvez verifier dans le sujet "comment afficher un nombre en binaire avec printf ?"
    et en compilant j'ai l'erreur suivante:error: expected primary-expression before "unsigned"|

  6. #26
    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
    Citation Envoyé par marooh Voir le message
    re,
    cette fonction est utilisé dans un sujet sur ce forum et elle marche
    Non, elle ne marche pas en C. Les opérateurs de résolution de portée n'existent pas en C, cela provoque donc forcément une erreur.
    Si cela marche chez vous, c'est que vous compilez du code C avec un compilateur C++. Chose à ne pas faire. Le C n'est pas du C++ et le C++ n'est pas du C.

    Citation Envoyé par marooh Voir le message
    vous pouvez verifier dans le sujet "comment afficher un nombre en binaire avec printf ?"
    C'est tout vérifié :
    exemple.c: In function `affichebin':
    exemple.c:12: error: syntax error before ':' token

  7. #27
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    re,

    alors comment pourrai-je corriger cette fonction?

  8. #28
    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
    Citation Envoyé par marooh Voir le message
    re,

    alors comment pourrai-je corriger cette fonction?
    En réfléchissant un peu :
    - Supprime les :: , la fonction printf() est bien du C
    - Appelle correctement la fonction d'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main(void)
    {
       unsigned int i = 0 | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 10);
       affichebin(i);
       return 0;
    }

  9. #29
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    re,
    merci infiniment pour la reponse mais maintenant j'ai une autre question à vous poser:
    si je veux que les bits qui prennent 1 soit choisis par l'utilisateur comment pourrai-je modifier unsigned int pour satisfaire cette condition?dois-je poser une variable x qui prendra chaque valeur entrée par l'utilisateur??

  10. #30
    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
    Il suffit de demander à l'utilisateur quel bit n doit être mis à 1 (0<=n<=31) et de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      unsigned int i = 0;
      int n;
    ....
      // demander une valeur pour n et tester si elle est valide
    ....
      // mettre le bit n à 1
      i |= 1<<n; // ou i = i | 1<<n
      // recommencer  si on veut en mettre plusieurs à 1

  11. #31
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    re,
    je vous remercie,j'ai essayé cette methode mais il me saisie juste l'ensemble(je veux mettre plusieurs variable à 1)
    voici mon code:

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    int main()
    {int a,k,j,z;
    int t[100];
    unsigned int i = 0;
    unsigned int n;
    printf("veuillez entrer l'ensemble d'identifiant a chercher\n\n");
    printf("donner le nbr d'element de l'ensemble");
    scanf("%d",&z);
    for (k=0;k<z;)
    {printf("donner un element");
    scanf("%d",&t[k]);
    if(t[k]<31)
    k++;
    }
    j=0;
    while (j<z)
     {
       n = t[j];
       i |= (1 << n);
    j++;
    }
    system("pause");
    }

  12. #32
    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
    1- Soigne l'indentation de ton code. C'est important pour sa clarté.

    2- Si tu veux voir le résultat, il faut demander son affichage : affichebin(i);

  13. #33
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    ouups j'ai oublié l'affiche bin
    merci infiniment !!!

  14. #34
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    une autre question svp
    je voudrais verifier si la valeur entrée par l'utilisateur dans le tableau existe déja .pour cela j'ai ecrit une fonction,il n'ya pas d'erreur de syntaxe mais ça ne fonctionne pas voici la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int egal(int i,int j,int t[i][j])
    {int h;
    for(h=0;h<j;h++)
    {
    if(t[i][h]==t[i][j]) return(0);
    }
    return(1);
    }
    et en programme principale je l'ai appelé de cette façon :
    if(egal(i,j,t))
    instruction

  15. #35
    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
    Qu'est-ce qui ne fonctionne pas ? Qu'est-ce qui se passe d'anormal ? A première vue ce n'est pas la fonction elle-même.

    Montre la partie où est défini t et où la fonction est appelée.

  16. #36
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for (j=0;j<z;)
    {printf("donner un element");
    scanf("%d",&t[i][j]);
    c= t[i][j];
    if((t[i][j]<32)||((egal(i,j,c))))
    j++;
    }
    }

  17. #37
    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
    Ce ne peut pas être ce code, le compilateur ne l'accepterait pas : dans l'appel c est un int et la fonction attend un tableau.

  18. #38
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut

    alors comment je peux le corriger??

  19. #39
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    c'est bon j'ai trouvé merciiiii

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Tableau de chaînes de caractères
    Par mouradj2006 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 13/12/2017, 10h47
  2. Probleme avec tableau de char
    Par loula427 dans le forum Débuter
    Réponses: 24
    Dernier message: 25/01/2011, 11h56
  3. Probleme avec Tableau sous Word
    Par gilles06 dans le forum VBA Word
    Réponses: 8
    Dernier message: 26/02/2008, 23h03
  4. Probleme avec tableau
    Par kika18 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2007, 13h06
  5. [Tableaux] probleme avec tableau a recupere
    Par twixster dans le forum Langage
    Réponses: 14
    Dernier message: 16/02/2006, 17h50

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