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 :

Recherche une valeur dans un tableau ehouée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut Recherche une valeur dans un tableau ehouée
    Bonjour à tous
    JE travaille actuellement sur un mini projet. En fait je suis à l'étape où j'ai rempli un tableau de structure "ville" par les informations récupérées du fichier , maintenant j'ai développé une fonction qui cherche une valeur saisi par l'utilisateur, qui va chercher la valeur si elle existe dans le tableau.
    Mon souci là c'est que quand je tape une valeur existante il m'affiche que la valeur n'existe pas
    voilà les prototypes des fonction réalisées:
    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
    int main()
    {
        FILE *f = NULL;
     
        char titre[100];
        char valeur[256] = {'\0'};
        int dimension, n;
        char index[50], data1[50], data2[50];
     
            // LECTURE DES DONNEES
    		n = 1;
    		v=(ville*)malloc((dimension)*sizeof(ville));
     
            while (n<=dimension)
            {
    			fscanf(f, "%s %s %s", index, data1, data2);
     
    			strcpy(v[n-1].nom, index);
    			strcpy(v[n-1].x, data1);
    			strcpy(v[n-1].y, data2);
     
    			printf("%i %s\n", n, v[n-1].nom);
    			n++;
    		}
     
        //       printf("%s %s %s\n", index, data1, data2);
            //    n++;
                if (v !=0) free(v); 
            fclose(f);
            //Appel de l'algorithme génétique.
            genetikAlgo(v, dimension);
     
        }
        else
            printf("erreur  lors    de  l'ouverture du  fichier");
     
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "atrapvil.h"
    int genetikAlgo (ville *v, const long nbVilles)
    {
    int ret=0;
    long vDepart=-1;
     
    if (v == 0)ret=-1;
        //Choix de la ville de départ.
        pointDepart(v, &vDepart, nbVilles);
        return ret;
    }
    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
    //Choix de la ville de départ par l'utilisateur.
    #include <stdio.h>
    #include <string.h>
    #include "atrapvil.h"
     
    void pointDepart (ville *v, long *vDepart, const long nbVilles)
    {
    char villeDepart[20];
    char quit[20]="quitter";
    int i, j=-1;
     
     
    do
    {
        printf("\nDe laquelle de ces villes voulez-vous partir ?\n");
        printf("Ville de d\x82part : ");
        gets(villeDepart);
        //printf("%s",villeDepart);
        printf("%s",v[1].nom);
     
        for (i=0 ; i<nbVilles ; i++)
        {
            j = strcmp (villeDepart, v[i].nom);
     
            if (j == 0)
            {
                *vDepart=i;
                printf("\n\nVous d\x82\x63idez de partir de %s, \n", villeDepart);
            }
     
            if ((strcmp (villeDepart, quit))==0) exit(0);
        }
     
        if (*vDepart == -1)
        {
            printf("\n\nCette ville n'existe pas dans votre parcours.\n");
            printf("Attention ! Saisissez la ville telle qu'elle appara\x8ct dans le tableau !");
        }
    }
    while (*vDepart == -1);
    }
    une idée svp?
    merci

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 050
    Par défaut
    As tu debugger avec 1 ville déjà et observé ce qui ce passais?

  3. #3
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    dans le main qua nd j'essaye d'afficher le contenu de la 1ere case ca s'affiche bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             printf("%s",v[1].nom);
            genetikAlgo(v, dimension);
    mais dans la fonction genetikAlgo la valeur ne s'affiche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int genetikAlgo (ville *v, const long nbVilles)
    {
    int ret=0;
    long vDepart=-1;
    printf("%s",v[1].nom);
     
    if (v == 0)ret=-1;
     
        //Choix de la ville de départ.
        pointDepart(v, &vDepart, nbVilles);
        return ret;
    }
    bizarre

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                if (v !=0) free(v); 
            fclose(f);
            //Appel de l'algorithme génétique.
            genetikAlgo(v, dimension);
    si tu fais un free() avant d'appeler genetikAlgo() ben forcément ça marche moins bien puisque tu perds la référence vers ta liste
    Mets le free à la fin de ton programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            fclose(f);
            //Appel de l'algorithme génétique.
            genetikAlgo(v, dimension);
    //... ton code....
     
    if (v !=NULL) 
      free(v);
    [edit]
    Mets le free à la fin de ton programme
    Plus précisément mets le avant le else puisque tu fais ton malloc dans le if :
    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
     
    if (f!=NULL)
    {
    // LECTURE DES DONNEES
    	n = 1;
    	v=(ville*)malloc((dimension)*sizeof(ville));
     
            while (n<=dimension)
            {
    			fscanf(f, "%s %s %s", index, data1, data2);
     
    			strcpy(v[n-1].nom, index);
    			strcpy(v[n-1].x, data1);
    			strcpy(v[n-1].y, data2);
     
    			printf("%i %s\n", n, v[n-1].nom);
    			n++;
    	}
            fclose(f);
            //Appel de l'algorithme génétique.
            genetikAlgo(v, dimension);
    //... ton code....
     
            if (v !=NULL) 
              free(v); 
     
     
    }
    else
       printf("erreur  lors    de  l'ouverture du  fichier");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/07/2014, 09h40
  2. [XL-2013] Recherche une valeur dans un tableau croisé
    Par ZARDGER dans le forum Excel
    Réponses: 2
    Dernier message: 30/05/2014, 09h38
  3. Rechercher une Valeur dans un tableau et garder le N° de la cellule en mémoire
    Par matteo.martelli dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 24/10/2012, 07h28
  4. Réponses: 1
    Dernier message: 21/01/2008, 18h04
  5. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23

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