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

  FORUM HardWare.fr
  Programmation
  C++

  [C] fonction et retour de structure | tomik recentré sur le rand()

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C] fonction et retour de structure | tomik recentré sur le rand()

n°259260
Profil sup​primé
Posté le 02-12-2002 à 21:37:11  answer
 

bon voilà mon pb,  
je voudrais faire en sorte que ma fonction retourne une structure, ou modifie une structure existante dans main ...  
 
le prob, c'est que quand je def une fonction qui renvoie une structure, ca chie à la compil (trop d'arguments, ...)  
-> struct ma_structure ma_fonction(int n, ... )  
 
et quand je veux faire passer un pointeur de structure (si c'est possible, je me tapppe des pointeurs non compatibles ...  
du genre  
-> void ma_fonction( int n, struct *pt)  
bah non  
 
et vu que les pointeurs et les structures c'est complètement mystique pour moi ...  
 
 
merci d'avance  :hello:  
 
ps: j'aurais aimé ne pas utiliser de structure pour retourner 3 variables, mais on me demande de faire comme ca :/


Message édité par Profil supprimé le 03-12-2002 à 09:57:35
mood
Publicité
Posté le 02-12-2002 à 21:37:11  profilanswer
 

n°259264
lorill
Posté le 02-12-2002 à 21:41:16  profilanswer
 

Code :
  1. typedef struct {
  2. int toto;
  3. int tata;
  4. int titi;
  5. } maStruct;
  6. maStruct * maFonction(int i, int j, int k)
  7. {
  8.   maStruct * ret = (maStruct*)malloc(sizeof(maStruct*));
  9.   ret->toto = i;
  10.   ret->tata = j;
  11.   ret->titi = k;
  12.   return ret;
  13. }
  14. void maDeuxieme(int n, maStruct * pt)
  15. {
  16.   pt->toto = n;
  17. }


Message édité par lorill le 02-12-2002 à 21:41:34
n°259266
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:43:24  profilanswer
 

vas y balance du code...
 
parce que "struct Foo MyDummyFx()" ca fonction parfaitement


---------------
du bon usage de rand [C] / [C++]
n°259267
Profil sup​primé
Posté le 02-12-2002 à 21:43:52  answer
 

[:wam]  [:wam]  
 
ouahh j'étais  loin
 
 
merci  :hello:  :)

n°259268
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:45:03  profilanswer
 

et ca marche aussi sans typedef


---------------
du bon usage de rand [C] / [C++]
n°259270
Profil sup​primé
Posté le 02-12-2002 à 21:45:31  answer
 

pour la def de fonction
 
void axesim(int dimension, int pas, struct pt);
 
 
pour la fonction
 
 
void axesim(int dimension, int pas) {
 int axe[dimension], i, temp;
    //struct resultat pt;
 
 for(i=0;i<dimension;i++)
  axe[i]=0;
 axe[0]=1;
 
    pt.fin=0;
    pt.max=0;
    pt.retour=0;
 
 for(i=0;i<=pas;i++) {
  temp = hasard(2);
        temp=1;
  if ((temp==0)&&(pt.fin>0)) {
   axe[pt.fin--]=0;
   axe[pt.fin]=1;
  }
  else if ((temp==1)&&(pt.fin<(dimension-1))) {
   axe[pt.fin++]=0;
   axe[pt.fin]=1;
  }
        if (pt.max<pt.fin)
           pt.max=pt.fin;
        if (pt.fin==0)
           pt.retour++;
 }
    return pt;
}

n°259273
lorill
Posté le 02-12-2002 à 21:47:03  profilanswer
 

Taz@PPC a écrit a écrit :

et ca marche aussi sans typedef



certes, mais c'est mois beau :o

n°259274
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:47:34  profilanswer
 

euh le nom de ta structure c'est quoi?
 

Code :
  1. void fx(struct NomStruct NomParam)
  2. {
  3.   struct NomStruct NomVariable;
  4. }


---------------
du bon usage de rand [C] / [C++]
n°259275
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:49:11  profilanswer
 

lorill a écrit a écrit :

certes, mais c'est mois beau :o



ben des fois, ca denote une volonté de limiter l'utilisation d'un type de données en se passant de typedef. Pour mes types "privés" je laisse le qualificatif struct.


---------------
du bon usage de rand [C] / [C++]
n°259276
Profil sup​primé
Posté le 02-12-2002 à 21:49:41  answer
 

ah, j'avais oublié
 
 

Code :
  1. struct resultat {
  2.        int fin;  //position de fin
  3.        int max;  //max atteint
  4.        int retour;  //nb de retours à l'origine
  5. }

mood
Publicité
Posté le 02-12-2002 à 21:49:41  profilanswer
 

n°259277
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:50:50  profilanswer
 

Code :
  1. void axesim(int dimension, int pas, struct resultat pt);
  2. /* ou mieux */
  3. void axesim(int, int, struct resultat);


---------------
du bon usage de rand [C] / [C++]
n°259279
Profil sup​primé
Posté le 02-12-2002 à 21:53:28  answer
 

Taz@PPC a écrit a écrit :

Code :
  1. void axesim(int dimension, int pas, struct resultat pt);
  2. /* ou mieux */
  3. void axesim(int, int, struct resultat);





[:ripeer] ca ne marche pas justement :D

n°259281
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:55:11  profilanswer
 

quelle version?


---------------
du bon usage de rand [C] / [C++]
n°259282
Profil sup​primé
Posté le 02-12-2002 à 21:55:50  answer
 

ca fait
49 d:\temp\willi.c
 conflicting types for `axesim'

n°259283
Profil sup​primé
Posté le 02-12-2002 à 21:56:25  answer
 

Taz@PPC a écrit a écrit :

quelle version?



dev-cpp 4 :/
g pas mieux pour le moment
 
 
et le rand() me renvoie des valeurs  :pt1cable:

n°259286
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:57:36  profilanswer
 

SirJeannot a écrit a écrit :

dev-cpp 4 :/
g pas mieux pour le moment
 
 
et le rand() me renvoie des valeurs  :pt1cable:  




 
ah oui, effectivement
[cpp]void axesim(int, int, struct resultat);[/cpp)
marche po  :heink:. je vais chercher pourquoi...
 
 
et c'est peut etre bien le but que rand() renvoie des trucs :pt1cable:


---------------
du bon usage de rand [C] / [C++]
n°259287
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 21:58:21  profilanswer
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h> /* pour srand, rand et RAND_MAX */
  3. #include <time.h> /* pour time */
  4. unsigned myrand1(unsigned N)
  5. {
  6.   /**
  7.    * les bits de poids faibles ont une dsitribution tres peu alétoire
  8.    * d'ou des sequences 0 1 0 1 0 1 0 1 0
  9.    * ce n'est donc aps une bonne methode
  10.    */
  11.   return rand()%N;
  12. }
  13. unsigned myrand2(unsigned N)
  14. {
  15.   /**
  16.    * beaucoup plus aléatoire
  17.    * (la je te fais pas l'explication)
  18.    */
  19.   return (unsigned)((double)rand()/((double)RAND_MAX+1)*N);
  20. }
  21. int main()
  22. {
  23.   /**
  24.    * initialisation du générateur de nombres pseudos-aleatoires
  25.    * on iutilise généralement le temps courant (nombre de secondes ecoulees
  26.    * depuis xx/xx/1970
  27.    * srand => seed == 'graine'
  28.    */
  29.   srand(time(NULL));
  30.   unsigned n;
  31.   scanf("%u", &n);
  32.   int i;
  33.   for(i=0; i<10; ++i)
  34.     {
  35.       printf("%u\t%u\n", myrand1(n), myrand2(n));
  36.     }
  37.   return EXIT_SUCCESS;
  38. }


---------------
du bon usage de rand [C] / [C++]
n°259288
Profil sup​primé
Posté le 02-12-2002 à 21:58:31  answer
 

Taz@PPC a écrit a écrit :

 
 
et c'est peut etre bien le but que rand() renvoie des trucs :pt1cable:  



entre 1 et 30000 et des bananes? [:dawa]  :whistle:

n°259294
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 22:00:29  profilanswer
 

SirJeannot a écrit a écrit :

entre 1 et 30000 et des bananes? [:dawa]  :whistle:  




c'est absolument normal, rand() renvoie un entier entre 0 et RAND_MAX qui peut vaut sur ton systeme 32767 soit le maximum d'un short int codé sur 16bits


---------------
du bon usage de rand [C] / [C++]
n°259298
Profil sup​primé
Posté le 02-12-2002 à 22:02:22  answer
 

Taz@PPC a écrit a écrit :

 
c'est absolument normal, rand() renvoie un entier entre 0 et RAND_MAX qui peut vaut sur ton systeme 32767 soit le maximum d'un short int codé sur 16bits



ah [:dawa] j'en ai appris une aujourd'hui :D
 
paskeu sur freebsd ca renvoie qqc entre 0 et 1 (réel)

n°259300
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 22:03:10  profilanswer
 

SirJeannot a écrit a écrit :

ah [:dawa] j'en ai appris une aujourd'hui :D
 
paskeu sur freebsd ca renvoie qqc entre 0 et 1 (réel)



ca m'etonnerait, c'est on ne peut plus standard (ANSI)


---------------
du bon usage de rand [C] / [C++]
n°259303
Profil sup​primé
Posté le 02-12-2002 à 22:07:12  answer
 

Taz@PPC a écrit a écrit :

ca m'etonnerait, c'est on ne peut plus standard (ANSI)



bah aux dernieres nouvelles (c a dire ya 2 semaines ca marchait :D )

n°259306
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 22:08:47  profilanswer
 

:heink:, ouais ben je t'invite à vérifier quand meme


---------------
du bon usage de rand [C] / [C++]
n°259309
Profil sup​primé
Posté le 02-12-2002 à 22:12:52  answer
 

voilà, un tit typedef tout propre au début et c nickel
 
comme quoi c'était vraiment con  :D  
 
merci :)

n°259311
Profil sup​primé
Posté le 02-12-2002 à 22:13:26  answer
 

Taz@PPC a écrit a écrit :

 :heink:, ouais ben je t'invite à vérifier quand meme



je retest demain matin  :)

n°259312
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 22:15:09  profilanswer
 

SirJeannot a écrit a écrit :

je retest demain matin  :)  



ouais, et si ca te donne un réel je veux le code que t'as compilé et l'email de ton root pour lui péter la gueule (si K&R étaient morts ils se retourneraient dans leurs tombes)


---------------
du bon usage de rand [C] / [C++]
n°259313
Profil sup​primé
Posté le 02-12-2002 à 22:22:38  answer
 

Taz@PPC a écrit a écrit :

ouais, et si ca te donne un réel je veux le code que t'as compilé et l'email de ton root pour lui péter la gueule (si K&R étaient morts ils se retourneraient dans leurs tombes)



je lui ai écrit plein de fois (pour mettre les paths des librairies gdk) et jamais de réponse, ... alors pour le pétage de gueule c mort :D

n°259314
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 02-12-2002 à 22:23:28  profilanswer
 

[:totoz]


---------------
du bon usage de rand [C] / [C++]
n°259318
Profil sup​primé
Posté le 02-12-2002 à 22:27:26  answer
 

admin de merde, oui on peut le dire :/

n°259472
Profil sup​primé
Posté le 03-12-2002 à 08:37:28  answer
 

#include <stdio.h>  
 
main() {  
 printf("%f\n", rand() );  
}  
 
ca renvoie 0  
 
et %d ca renvoie  
1103527590  
 
 
 :D

n°259475
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 03-12-2002 à 08:40:41  profilanswer
 

SirJeannot a écrit a écrit :

#include <stdio.h>
 
 
 
main() {
 
 printf("%f\n", rand() );
 
}
 
 
 
ca renvoie 0
 
 
 
et %d ca renvoie
 
1103527590
 
 
 
 
 
 :D  




 
 
tu peux essayer de compiler le code ANSI que je t'ai donné plus haut et donner la version de ton compilateur?


Message édité par Taz@PPC le 03-12-2002 à 08:41:01

---------------
du bon usage de rand [C] / [C++]
n°259476
Profil sup​primé
Posté le 03-12-2002 à 08:42:14  answer
 

et ca renvoie toujours la meme valeur  :o

n°259477
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 03-12-2002 à 08:42:48  profilanswer
 

les deux fonctions?
 
ben si j'étais toi, je m'abstiendrais de faire du C sur ta plateforme. C'est pas que ton compilo soit buggé, c'est que ta librairie est meme pas standard


Message édité par Taz@PPC le 03-12-2002 à 08:46:17

---------------
du bon usage de rand [C] / [C++]
n°259480
Profil sup​primé
Posté le 03-12-2002 à 08:48:41  answer
 

bah ... en fait le copier coller de opera à nedit fout des caractères qui font chier le compliteur :/

n°259481
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 03-12-2002 à 08:51:59  profilanswer
 

http://dejean.benoit.free.fr/rand.c


---------------
du bon usage de rand [C] / [C++]
n°259491
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-12-2002 à 09:25:28  profilanswer
 

chez moi ça compile par pcq c'est soit du C++ soit du C99, mais pas du "vieux" C en tout cas :D
 
  srand(time(NULL));
  unsigned n;
  scanf("%u", &n);
 
-> il me dit que la déclaration d'unsigned n est pas autorisée ici :D (Borland C++ 5.0)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°259499
Profil sup​primé
Posté le 03-12-2002 à 09:35:20  answer
 

il me sort des erreurs
 
rand.c: In function `main':
rand.c:40: syntax error before `unsigned'
rand.c:41: `n' undeclared (first use in this function)
rand.c:41: (Each undeclared identifier is reported only once
rand.c:41: for each function it appears in.)
rand.c:43: syntax error before `int'
rand.c:44: `i' undeclared (first use in this function)

n°259501
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-12-2002 à 09:36:47  profilanswer
 

dans ton .c il m'a suffit de mettre les déclarations de variables avant les appels de fonction


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°259502
Profil sup​primé
Posté le 03-12-2002 à 09:45:59  answer
 

ya des ^M partout dans le .c  :o  
spa reconno comme un caractère de contr^ole  :o

n°259503
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-12-2002 à 09:46:38  profilanswer
 

heu j'ai pas ce prob de ^M moi :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  [C] fonction et retour de structure | tomik recentré sur le rand()

 

Sujets relatifs
Prob fonction strstr()SQL - max() et retour de ligne
fonction qui dit si un nombre est decimal[c] Mesurer les temps d'exécution d'une fonction
Retourner plusieurs résultats d'une fonctionFonction select ...
[PHP] appel d'une fonction dans un autre fichierfaire appel a une fonction qui se trouve dans un autre fichier !
Difference entre une procedure et une fonction ??[VB] Une fonction qui renvoie une valeur
Plus de sujets relatifs à : [C] fonction et retour de structure | tomik recentré sur le rand()


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