probleme avec tableau

probleme avec tableau - C - Programmation

Marsh Posté le 25-12-2010 à 17:10:18    

bonjour,
je voudrais saisir un ensemble d'identifiant par exemple {1,5,8,10} et ensuite générer la representation en tableau de bits c'est à dire,
dans un tableau de 11 bits par exemple le bit num 1 aura la valeur 1,le bit 5,8 et 10 aussi
on aura 01000100101

Reply

Marsh Posté le 25-12-2010 à 17:10:18   

Reply

Marsh Posté le 25-12-2010 à 17:18:05    

Ca s'appelle un int.

Reply

Marsh Posté le 25-12-2010 à 18:15:43    

re,
c'est flou commen reponse

Reply

Marsh Posté le 25-12-2010 à 21:29:27    

Tu veux un "tableau de bits", ça s'appelle un int.
Pour mettre les bits 1, 5, 8 et 10 à 1 il te suffit de faire :
 

Code :
  1. unsigned int i = 0 | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 10);


Reply

Marsh Posté le 25-12-2010 à 23:09:45    

merci pour la réponse mais en éxecutant ça n'affiche pas le code binaire voulu,il n'affiche que fin du programme

Reply

Marsh Posté le 25-12-2010 à 23:25:52    

Fais voir ton code.

Reply

Marsh Posté le 27-12-2010 à 17:47:59    

#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);
        }
}
}

Reply

Marsh Posté le 27-12-2010 à 20:00:05    

Oula, t'as une fonction déclarée dans une autre que tu n'appelles même pas.
 
Essaye plutôt comme ça :
 

Code :
  1. #include <stdint.h>
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.     unsigned int i = 0 | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 10);
  6.     uint32_t mask;
  7.     for (mask = 1 << 31; mask; mask >>= 1) {
  8.         fputc(i & mask ? '1' : '0', stdout);
  9.     }
  10.     return 0;
  11. }


Message édité par regexp42 le 27-12-2010 à 20:00:20
Reply

Marsh Posté le 27-12-2010 à 22:06:48    

merciiiiii infiniment!!

Reply

Marsh Posté le 29-12-2010 à 16:32:10    

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??

Reply

Marsh Posté le 29-12-2010 à 16:32:10   

Reply

Marsh Posté le 29-12-2010 à 16:51:43    

marooh a écrit :

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??


 
Ben si tu sais lire les entrées de l'utilisateur il te suffit de faire un truc du style (en pseudo code) :
 

Code :
  1. unsigned int i = 0;
  2. uinsigned int n;
  3. while ([l'user choisit un bit]) {
  4.    n = [bit choisi par l'utilisateur];
  5.    i |= (1 << n);
  6. }

Reply

Marsh Posté le 29-12-2010 à 17:19:31    

re,
j'ai écrit ceci mais ça accepte juste l'ensemble
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4. int main()
  5. {int a;
  6. unsigned int i = 0;
  7. unsigned int n;
  8. printf("veuillez entrer l'ensemble d'identifiant a chercher\n\n" );
  9. while (scanf("1.2%d",&a))
  10. {
  11.    n = a;
  12.    i |= (1 << n);
  13. }
  14. system("pause" );
  15. }

Message cité 1 fois
Message édité par marooh le 29-12-2010 à 17:19:51
Reply

Marsh Posté le 29-12-2010 à 17:59:00    

marooh a écrit :

re,
j'ai écrit ceci mais ça accepte juste l'ensemble


 
Comment ça "juste l'ensemble" ?
 
Quand je dis "while l'user choisit un bit" c'est du pseudo code hein, ça veut dire genre "tant que le gars veut setter un bit", ça veut pas dire "while (scanf())".

Reply

Marsh Posté le 29-12-2010 à 18:23:34    

oui,j'ai bien compris,dans mon code j'ai mis while(scanf()) mais ça ne marche pas

Reply

Marsh Posté le 30-12-2010 à 16:02:04    

marooh a écrit :

ça ne marche pas


 
Sois plus précis.

Reply

Marsh Posté le 31-12-2010 à 13:45:46    

c bon j'ai trouvé merciii

Reply

Marsh Posté le 01-01-2011 à 23:02:29    

merci de poster la solution pour les suivants


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 06-01-2011 à 09:53:11    

bjr,
j 'ai ecrit un code mais ca ne marche pas kom il fo ,je c pa c koi le probleme exactement.
je veux afficher un tableau de bits sachant ke l'operateur  va saisir un ensemble d'identifiants:voila mon code :??:  
 
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main()
{int a;
unsigned int i = 0;
unsigned int n;
unsigned int bit;
 
uint32_t mask ;  
printf("veuillez entrer l'ensemble d'identifiant a chercher\n\n" );
while (scanf("1.2%d",&a))
{
n = a;
i|= (1 << n);
}  
 
for (mask = 1<<31; mask; mask >>= 1) {  
fputc(bit & mask ? '1' : '0', stdout);  
 
}
 
system("pause" );
}

Reply

Marsh Posté le 06-01-2011 à 22:13:14    

j'attends encore :??:

Reply

Marsh Posté le 07-01-2011 à 12:24:50    

Quelques remarques:
- Évite le langage SMS, c'est illisible
- Mets des balises [code] autour de ton code, c'est illisible aussi
- Tu dis que ça ne marche pas: qu'est-ce qui ne marche pas? (en d'autres termes quel est le résultat attendu et le résultat observé)
- Au lieu d'attendre, fais des essais, tu trouveras surement par toi même
 
On ne peut pas trop t'aider en l'état.


---------------
sheep++
Reply

Marsh Posté le 08-01-2011 à 15:18:15    

je veux saisir une suite d'ensemble d'identifiants pa exemple {1,5,10} {2,3,6}et {4,3,2,5} quelqu'un m'aide svp


Message édité par Ramssis le 08-01-2011 à 19:11:43
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed