Programmation en C : problème de "type"

Fermé
valoudebarca Messages postés 3 Date d'inscription mardi 15 mai 2012 Statut Membre Dernière intervention 16 mai 2012 - 16 mai 2012 à 16:13
 Utilisateur anonyme - 16 mai 2012 à 17:24
Bonjour,

Je viens de faire un programme en langage C avec les bibliothèques GNU et PARI, je peux générer des réalisations d'une variable aléatoire Gaussienne grâce au programme suivant (qui compile et s'exécute) :

#include <stdio.h>
#include <pari/pari.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>

int main(void){

const gsl_rng_type * T;
gsl_rng * r;

int i, n=10;
double sigma = 1./(sqrt(2));
double k;

gsl_rng_env_setup();

T = gsl_rng_default;
r = gsl_rng_alloc (T);

for (i=0; i<n; i++){
double k = gsl_ran_gaussian (r, sigma);
printf ("%lf\n", k);
}

printf ("\n");
gsl_rng_free (r);
return 0;
}


Cependant, mon prof m'a dit de changer "int main(void)" en "double gauss(void)" et "return 0;" en "return k;" pour ce premier bloc car ensuite, dans un second bloc, je dois créer un vecteur complexe avec les valeurs retournées qui suivent (sans avoir effectué les modifications) :
0.094695
-0.062297
1.183986
0.518763
0.705356
-0.903330
-1.694734
-0.480324
-0.027642
0.631839

Mon problème est le suivant : après modifications, j'obtiens l'erreur :

gaussian.c:6:8: error: conflicting types for `gauss'
/usr/include/pari/paridecl.h:569:9: note: previous declaration of `gauss' was here


Je ne sais donc pas comment modifier mon code pour pouvoir ensuite rentrer les valeurs obtenues précédemment dans un vecteur...

C'est la première fois que je fais du C, si quelqu'un aurait la bonté de me corriger mon erreur, ce serait vraiment très très sympa de sa part...
Un grand merci d'avance.

Bien cordialement,
Valentin.
A voir également:

2 réponses

Utilisateur anonyme
16 mai 2012 à 16:34
Bonjour

Puisque ta fonction es maintenant définie comme double gauss(void);, tu dois aussi la déclarer double gauss(void) dans ton fichier /usr/include/pari/paridecl.h. J'ignore comment tu l'as réellement déclarée, mais le message d'erreur dit clairement que les deux déclarations sont contradictoires.
0
valoudebarca Messages postés 3 Date d'inscription mardi 15 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 17:00
Heuuuu...

J'ignore ce que veut dire "déclarer" une fonction. Je débute à peine en C et je n'ai même pas les bases...
Autrement, comment faire pour modifier ma déclaration du coup? :/

Merci pour ta réponse !
0
Utilisateur anonyme
16 mai 2012 à 17:24

Je viens de faire un programme en langage C [...], je peux générer des réalisations d'une variable aléatoire Gaussienne

J'ignore ce que veut dire "déclarer" une fonction
Très étonnant...
Je suppose que le fichier pari.h fait partie de la bibliothèque PARI dont tu parles.
Comme ce n'est pas toi qui as écrit ce fichier, il ne faut pas le modifier.
Et comme "gauss" est déjà défini dedans, il ne faut pas que toi tu appelles ta fonction gauss, trouve-lui un autre nom (gauss2 ?)

Remarque : ta fonction boucle pour afficher 10 nombres, elle va rendre le dernier. À quoi servent les 9 premiers ?
0