programme qui ne fonctionne pas!
Bonjour à tous,
Je devrais écrire une fonction qui permet de tirer k fois un nombre entre 1 et 10 et qui ne doit pas tirer deux fois le meme nombre.
Voici mon essai mais ceci ne fonctionne pas!?Le compilateur me renvoie des bugs :cry:.
Quelqu'un pourrait-il me guider SVP:(?
Merci d'avance.
voici le code :
Code:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct Individu Individu;
struct Individu
{
int *Chemin;// les chromosomes
int distanceTotale;
};
void initialiserIndividu(Individu* individuInitial ) //fonction initialisation de chacun des membres de la structure Indivdu
{
int k;
int Nmax = 10;
individuInitial->Chemin = (int*)calloc(sizeof(int),Nmax);
for (k = 0 ; k < Nmax ; k++)
individuInitial->Chemin[k] = k; // ou bien n'importe quelle autre valeur
//Ensuite on definit un tableau de pointeurs vers chacun de ces elements int **ptr,
int **ptr = (int**)calloc(sizeof(int*),Nmax);
for (k = 0 ; k < Nmax ; k++)
ptr[k] = &individuInitial.chemin[k];
//on definit un indice temporaire NN qui va servir a generer un nombre aleatoire dans l'intervalle
//[0,NN]
int NN = Nmax-1;
int *tmp_ptr;
int random_index;
for (k = 0;k < Nmax ; k++)
{
//on genere un nombre aleatoire entre 0 et NN,
random_index = (int)(rand()/(float)RAND_MAX * (NN));
//Cela definit le premier nombre aleatoire tire,
printf("%d\n",*ptr[random_index]);
//Ensuite, on fait une permutation entre le pointeur tire et le dernier element du tableau de pointeurs
tmp_ptr = ptr[Nmax-1-k];
ptr[Nmax-1-k] = ptr[random_index];
ptr[random_index] = tmp_ptr;
//on decremente N--, de sorte que le dernier element du tableau de pointeur
//(qui est maintenant celui qui vient d'etre tire) ne puisse pas etre a nouveau selectionne.
NN--;
}
int main ()
{
Individu populationInitial;
initialiserIndividu(&populationInitial);
return 0;
} |
les erreurs :
Citation:
1>------ Début de la génération : Projet : test_GA, Configuration : Debug Win32 ------
1>Compilation en cours...
1>main.c
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(21) : error C2143: erreur de syntaxe : absence de ';' avant 'type'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(23) : error C2065: 'ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(23) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(23) : error C2039: 'chemin' : n'est pas membre de 'Individu'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(7) : voir la déclaration de 'Individu'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(27) : error C2143: erreur de syntaxe : absence de ';' avant 'type'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(29) : error C2143: erreur de syntaxe : absence de ';' avant 'type'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(30) : error C2143: erreur de syntaxe : absence de ';' avant 'type'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(35) : error C2065: 'random_index' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(35) : error C2065: 'NN' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(38) : error C2065: 'ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(38) : error C2065: 'random_index' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(38) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(41) : error C2065: 'tmp_ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(41) : error C2065: 'ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(41) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(42) : error C2065: 'ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(42) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(42) : error C2065: 'ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(42) : error C2065: 'random_index' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(42) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(43) : error C2065: 'ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(43) : error C2065: 'random_index' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(43) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(43) : error C2065: 'tmp_ptr' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(47) : error C2065: 'NN' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(50) : error C2143: erreur de syntaxe : absence de ';' avant 'type'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(53) : error C2065: 'populationInitial' : identificateur non déclaré
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(53) : warning C4133: 'fonction' : types incompatibles - de 'int *' à 'Individu *'
1>c:\documents and settings\my documents\visual studio 2008\projects\test_ga\test_ga\main.c(55) : warning C4098: 'initialiserIndividu' : retour d'une valeur par la fonction 'void'
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\\My Documents\Visual Studio 2008\Projects\test_GA\test_GA\Debug\BuildLog.htm"
1>test_GA - 27 erreur(s), 2 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========