IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

programme qui ne fonctionne pas!


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 116
    Points : 49
    Points
    49
    Par défaut 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 .
    Quelqu'un pourrait-il me guider SVP?
    Merci d'avance.

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    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é ==========

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Salut,


    Premièrement est tu sur que tu compile bien en C99 ? Option de compilation -std=c99 ...


    Ensuite je sais pas trop si ca a a voir avec le délire mais met un espace entre #include et <blabla.h>.

  3. #3
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    En C pre-C99, la déclaration des variables devaient se faire obligatoirement en début de bloc, ce qui n'est pas le cas de ton exemple et probablement la cause de la plupart des warning.

    Pour résoudre ton problème, il y a au moins deux solutions :
    • Modifier ton programme pour déclarer les variables en début de bloc.
    • Utiliser un compilateur supportant C99 (enfin au moins ce point précis) et le régler de manière adéquate.

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par rilou Voir le message
    met un espace entre #include et <blabla.h>.
    C'est absolument pas requis, mais je préfère aussi cette écriture.

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par Melem Voir le message
    C'est absolument pas requis, mais je préfère aussi cette écriture.
    C'es ça quand on a eu moumaneix :p


    Bref! Je n'était pas sur i ca changeait quelque chose mais j'aime bien penser au :
    sait-on jamais

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par gl Voir le message
    En C pre-C99, la déclaration des variables devaient se faire obligatoirement en début de bloc, ce qui n'est pas le cas de ton exemple et probablement la cause de la plupart des warning.

    Pour résoudre ton problème, il y a au moins deux solutions :
    • Modifier ton programme pour déclarer les variables en début de bloc.
    • Utiliser un compilateur supportant C99 (enfin au moins ce point précis) et le régler de manière adéquate.
    Je travaille sous visual C++.
    Je ne sais pas comment régler le compilateur. Pourrait-tu me donner plus de détails?
    Merci.

  7. #7
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Salut.

    Moi je te conseillerai plutôt de déclarer tes variables en début de bloc ... il me semble que visual n'est pas compatible avec la norme C99 (dites moi si je me trompe ).

    Cordialement,
    Idriss.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 116
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par ok.Idriss Voir le message
    Salut.

    Moi je te conseillerai plutôt de déclarer tes variables en début de bloc ... il me semble que visual n'est pas compatible avec la norme C99 (dites moi si je me trompe ).

    Cordialement,
    Idriss.
    Merci ok.idriss pour ta réponse.
    J'ai essayé de le compiler par visual c version 6 voilà ce qui me relève le compilateur comme erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\program files\microsoft visual studio\myprojects\test\test.cpp(61) : fatal error C1010: unexpected end of file while looking for precompiled header directive
    Bizarre!non?
    Des idées??
    Merci d'avance.

  9. #9
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Tu as mal créé ton projet. La solution la plus simple qui s'offre à toi est créer un nouveau projet (application console) vide. Essaie.

Discussions similaires

  1. Programme qui ne fonctionne pas
    Par vfr38 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 26/09/2014, 22h41
  2. Programme "hello world" qui ne fonctionne pas
    Par Glork dans le forum Android
    Réponses: 8
    Dernier message: 14/12/2013, 18h35
  3. Réponses: 4
    Dernier message: 13/10/2007, 15h18
  4. Programme qui ne fonctionne pas
    Par jipé95 dans le forum C
    Réponses: 7
    Dernier message: 26/04/2006, 19h08
  5. Programme Perl tout simple qui ne fonctionne pas
    Par jejerome dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2006, 23h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo