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 :

Doublons d'un tableau de char


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut Doublons d'un tableau de char
    Bonjour,

    Actuellement je suis sur un code pour un projet (réseau de métro Parisien) et je souhaite afficher toutes les stations d'une ligne.

    J'ai donc un code qui fonctionne parfaitement pour les afficher, mais le problèmes c'est qu'il les affiches 2 fois par station (dans une direction et dans le l'autre sur une ligne de métro)

    Alors j'essaye de ne les affiche qu'une fois, le plus simple pour moi serait une fonction permettant de supprimer tous les doublons du tableau afin de ne les afficher qu'une seule fois.

    Voici mon code actuel:

    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
    void mainListeStations(char nomLigne[])
    {
    	int i, j, k = 0, l;
    	char* listeStations[50];
     
    	for(i = 0; i < metroParisien.nombreDeStations; i++)
    	{
    		for(j = 0; j < metroParisien.listeStations[i].nombreDeSections; j++)
    		{
    			if( strcmp(metroParisien.listeStations[i].sectionsStation[j].referenceLigne.nomLigne, nomLigne) == 0 )
    			{
    				listeStations[k] = metroParisien.listeStations[i].nomStation;
    				k++;
    			}
     
    		}
    	}
     
    	for(l = 0; l < k; l++)
    	{
    		printf("%s\n", listeStations[l]);
    	}
     
    	//interfaceResultatListeStations(&metroParisien, numeroLigne);
    }
    Le tableau listeStations contient le nom de toutes les stations de la ligne donc, mais avec les doublons, par exemple si j'appel ma fonction avec une ligne (3 bis), j'ai le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Saint-Fargeau
    Saint-Fargeau
    Porte des Lilas
    Gambetta
    Pelleport
    Pelleport
    (Il n'affiche qu'une fois Gambetta et Porte des Lilas car se sont les terminus et ils sont présents qu'une seule fois dans une des deux directions).

    J'aimerais avoir quelque chose de ce type (peut importe l'ordre d'affichage des stations, dans l'ordre ou non, même si dans l'ordre serait mieux)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Saint-Fargeau
    Porte des Lilas
    Gambetta
    Pelleport
    Avez vous une idée de comment je peut réaliser une fonction permettant de supprimer les doublons d'un tableau de char et de l'affiche ensuite ?

    Merci, en espérant une réponse rapide.

    Cordialement,
    Share45.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Est-ce qu'on peut assumer que les doublons sont forcément l'un après l'autre dans la liste ou peuvent-ils être éparpillés ?

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    J'ai bien l'impression que ce que tu dit est toujours vrai, j'ai fait plusieurs essais (en modifiant le numéro de la ligne) et tous les doublons sont à la suite.

    Par exemple pour une autre ligne (ligne 7):

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Fort d'Aubervilliers
    Fort d'Aubervilliers
    Porte d'Ivry
    Porte d'Ivry
    Villejuif - Louis Aragon
    Porte d'Italie
    Porte d'Italie
    Gare de l'Est
    Gare de l'Est
    Crimée
    Crimée
    Jussieu
    Jussieu
    Place d'Italie
    Place d'Italie
    Les Gobelins
    Les Gobelins
    Châtelet
    Châtelet
    Le Kremlin-Bicêtre
    Le Kremlin-Bicêtre
    Corentin Cariou
    Corentin Cariou
    Sully - Morland
    Sully - Morland
    Porte de la Villette
    Porte de la Villette
    Mairie d'Ivry
    Riquet
    Riquet
    Chaussée d'Antin - La Fayette
    Chaussée d'Antin - La Fayette
    La Courneuve - 8 Mai 1945
    Pierre et Marie Curie
    Pierre et Marie Curie
    Château-Landon
    Château-Landon
    Cadet
    Cadet
    Poissonnière
    Poissonnière
    Aubervilliers - Pantin
    Aubervilliers - Pantin
    Le Peletier
    Le Peletier
    Villejuif - Léo Lagrange
    Villejuif - Léo Lagrange
    Pyramides
    Pyramides
    Censier - Daubenton
    Censier - Daubenton
    Pont Neuf
    Pont Neuf
    Louis Blanc
    Louis Blanc
    Pont Marie
    Pont Marie
    Villejuif - Paul Vaillant-Couturier
    Villejuif - Paul Vaillant-Couturier
    Stalingrad
    Stalingrad
    Palais Royal - Musée du Louvre
    Palais Royal - Musée du Louvre
    Tolbiac
    Tolbiac
    Place Monge
    Place Monge
    Porte de Choisy
    Porte de Choisy
    Opéra
    Opéra
    Maison Blanche
    Maison Blanche
    Maison Blanche

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    si les doublons se suivent de manière certaine alors il suffit de rajouter une condition pour s'assurer que metroParisien.listeStations[i].nomStation est différent de listeStations[k-1] avant de l'insérer dans la liste

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 770
    Par défaut
    Tout cela ce ne sont que des pansements sur une jambe de bois

    Parce qu’apparemment une station est affichée en double parce que 1) tu y arrives 2) tu la quittes

    Et avec le bout de code publié, il ne fait que 2 boucles for. Donc les doublons [ne] peuvent venir [que] de l'objet metroParisien.

    Tout est à refaire
    De plus nous ne travaillons pas comme en Java en enchainant les appels : metroParisien.listeStations[i].sectionsStation[j].referenceLigne.nomLigne.


    Moi j'avais codé le réseau de métro parisien à l'époque (c'était un projet en Ada) avec l'algo du plus court chemin de Dijkstra avec, de souvenir, une pondération à 1.

  6. #6
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Je vais du coup voir ce que je peut faire, car au premier tour ça risque de sortir du tableau avec k-1 il ne sera pas définit.

    Pour le fonctionnement peut importe, j'ai as le temps de tout refaire et le but premier est que cela soit fonctionnel, en 2 semaine j'ai pas le temps de faire des miracles, c'est sûrement pas parfait mais tanpis.

    Surtout que pour l'utilité qu'il en sera fait pour ce qui est optimisation ou rapidité n'est pas recherché sinon si c'est le cas je me pencherait dessus.

Discussions similaires

  1. retrouver unesuite de caractères dans un tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 17
    Dernier message: 12/07/2005, 23h43
  2. Ansistring et tableau de char
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/12/2004, 11h51
  3. Adresse d'un tableau de char
    Par Trap D dans le forum C
    Réponses: 8
    Dernier message: 23/12/2003, 12h02
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21

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