Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3029 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [c][Resolu]Passage d'un tableau à une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c][Resolu]Passage d'un tableau à une fonction

n°730266
weed
Posté le 18-05-2004 à 14:04:14  profilanswer
 

bon voilou je sais plus trop comment on fais et je n'ai malheuresement pas vu de post traiter de ca  
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. convert (int dec, int bits, char **binaire)
  4. {
  5. int i=0,j;
  6. if ( dec != 1)
  7. {
  8.  do
  9.  {
  10.   *(binaire+i) = dec %2;  <==== probleme
  11.   dec /= 2;
  12.   i++;
  13.  }
  14.  while (dec /2 != 0);
  15.  printf("\n i = %d",i);
  16. }
  17. *binaire [i] = 1;               <==== probleme
  18. for (j=i+1;j<bits;j++)
  19.  *binaire [j] = 0        <===== probleme
  20. for (j=0;j<bits;j++)
  21.  printf("\n *bianiare[%d] %d",j,*binaire[j]);   <======probleme
  22. }
  23. main ()
  24. {
  25. //Declaration
  26. int nb, bits = 10;
  27. char *binaire;
  28. binaire = malloc (10 * sizeof (int));
  29. printf("\nSaisir votre nombre :" );
  30. scanf("%d",&nb);
  31. convert (nb,bits,&binaire);  <====== probleme
  32. }


Message édité par weed le 18-05-2004 à 16:12:21
mood
Publicité
Posté le 18-05-2004 à 14:04:14  profilanswer
 

n°730271
weed
Posté le 18-05-2004 à 14:10:56  profilanswer
 

voilai j'aimerais ce qu'il faut mettre en parametre quand on appelle la fonction  
 
convert (nb,bits,&binaire);  
 
 
 
je suis presque sur du prototype puisque l'on fais passer l'adresse d'un tableau  
convert (int dec, int bits, char **binaire)  
 
 
pour l'affectation dans la fonction que faut il mettre ?
*(binaire+i) = dec %2;
 
et l'affichage je pense que c'est la meme chose  
printf("\n *bianiare[%d] %d",j,*binaire[j]);
 
 
pour moi on affecte ce qui est pointer de  
ptr => ptr1 => valeur  
donc **ptr
 
enfin bon gcc, mon compilo, n'a pas l'air d'apprecier

n°730308
HelloWorld
Salut tout le monde!
Posté le 18-05-2004 à 14:30:14  profilanswer
 
n°730320
Taz
bisounours-codeur
Posté le 18-05-2004 à 14:36:02  profilanswer
 

(char *) malloc (10 * sizeof (int))
 
c'est moi ou ...

n°730348
thermoclin​e
Geek intelligent
Posté le 18-05-2004 à 14:56:28  profilanswer
 

Non ce n'est pas toi...
 
Comment dire...
Weed, que doit faire ton programme?
Deja ton malloc est mauvais, ensuite tu confonds char et int dans tout le reste de ton programme (et je suppose que ce n'est pas l'effet voulu)

n°730355
weed
Posté le 18-05-2004 à 15:07:03  profilanswer
 

le but de ma fonction est convertir des nombre en decimal en binaire ...
j'ai utilisé une chaine de caractère pour stocker mes 0 et 1
 

Code :
  1. convert (int dec, int bits, char **binaire)


dec => le nombre decimal
bits => sur combien de bits
binaire => le nombre binaire, c'est une chaine de caractère
 
ex :  
conversion de 7 en binaire  
dec = 7
bits = 6 (sur 6 bits)
binaire = 111 000 (je rajoute des 0)
 
 
 
le malloc, il est pas bon ?
je ne l'ai pas bien caster ?  
sinon je pense que c'est  
binaire = ....
car on on alloue au niveau du pointeur meme et non pas sur ce qui est pointé


Message édité par weed le 18-05-2004 à 15:11:16
n°730358
Ace17
Posté le 18-05-2004 à 15:11:02  profilanswer
 

Faut pas caster les malloc...

n°730366
weed
Posté le 18-05-2004 à 15:20:48  profilanswer
 

oki, j'ai modifié  
dans le premier posts,  

Code :
  1. binaire = malloc (10 * sizeof (int));


 
mais ce qui m'ennuie le plus, c'est  

Code :
  1. scanf("%d",&nb);

=> dans le main
 
et l'affectation/affichage des données du tableau dans la fonction :

Code :
  1. *(binaire+i) = dec %2


 
Bien entendu, j'aimerais bien recuperais la valeur binaire, le passage par adresse est donc obligatoire ...


Message édité par weed le 18-05-2004 à 15:26:43
n°730379
cricri_
Posté le 18-05-2004 à 15:29:43  profilanswer
 

déjà :

Code :
  1. binaire = malloc (10 * sizeof(char));


ensuite :

Code :
  1. convert (int dec, int bits, char *binaire)
  2.   {
  3.      int i=0,j;
  4.      if ( dec != 1)
  5.      { 
  6.         do
  7.         {
  8.            binaire[i] = dec %2;
  9.            dec /= 2;
  10.            i++;
  11.         }
  12.         while (dec /2 != 0);
  13.         printf("\n i = %d",i);
  14.      }
  15.      binaire[i] = 1;
  16.        
  17.      for (j=i+1;j<bits;j++)
  18.       binaire [j] = 0;        <===== probleme
  19.      
  20.      for (j=0;j<bits;j++)
  21.       printf("\n bianiare[%d] %d",j, binaire[j]);
  22.   }


et :

Code :
  1. convert (nb, bits, binaire);


n°730381
Ace17
Posté le 18-05-2004 à 15:30:09  profilanswer
 

Ca  " *(binaire+i) = " tu remplaces par "binaire[i] = "
Ensuite, dans le main, binaire est déja un pointeur. Pas la peine de prendre son addresse.
De plus, pourquoi fais tu un malloc avec un sizeof(int) a l'intérieur? Combien de cases tu veux qu'elle ait, ta zone mémoire?

mood
Publicité
Posté le 18-05-2004 à 15:30:09  profilanswer
 

n°730405
weed
Posté le 18-05-2004 à 15:39:48  profilanswer
 

ca enffet, je me serait pas embeter soit j'aurais creer mis le malloc dans la fonction soit j'aurais declarrement un tableau dans la fonction ....
 
mais la je ne sais pas à l'avance sur combien de bits. Je souhaite integrer cette fonction dans un programme. J'ai mis 10 pour pas m'enbeter au debut car c'est juste pour programmer une fonction.
 
De plus comme cette fonction fera parti d'un programme je dois pouvoir recuperer ma variable binaire ....
 

Code :
  1. convert (nb,bits,&binaire);
  2. prinft ("%s",binaire);

 <=== par exemple
 
 

n°730411
weed
Posté le 18-05-2004 à 15:43:26  profilanswer
 

Donc ma question est comment fais ton pour l'affectation/affichage des valeurs d'un tableau, simple dimension, que l'on a transmis à une fonction par adresse ..
 
affectation/affichage dans la fonction bien sur.
 
*(binaire+i) = dec %2; ?


Message édité par weed le 18-05-2004 à 15:44:40
n°730416
cricri_
Posté le 18-05-2004 à 15:49:51  profilanswer
 

On  a déjà répondu, corrigé ton truc, je ne vois pas ce que tu cherches de plus ..

n°730458
weed
Posté le 18-05-2004 à 16:11:59  profilanswer
 

oui  
en fait ca marche
merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [c][Resolu]Passage d'un tableau à une fonction

 

Sujets relatifs
[RESOLU][Php] Exporter du php en html !!!???Question sur les JPanel [résolu] + question sur les listeners [résolu]
Faire un tri a partir d'un tableau comment faire sous ASP ?[RESOLU] [SQL] Limiter le nombre de requetes imbriquées
rafraîchir un tableau croisé dynamique[HTML] fixer la hauteur d'une ligne d un tableau.
Un tableau d'une page a l'autre[C++]Tableau de pointeru sur chaine de car.
calcul dynamique en fonction d'un formulaireRecherche fonction mot clé dans TEXT
Plus de sujets relatifs à : [c][Resolu]Passage d'un tableau à une fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR