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 :

Itinéraire entre 2 villes - comment je peux améliorer mon code ?


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut Itinéraire entre 2 villes - comment je peux améliorer mon code ?
    Bonjour, j'ai crée ce code qui permet de crée un parcours entre 2 villes
    je voudrais améliorée mon code en crée un tableau pour afficher le tout .
    sous forme de Ville départ Distance Ville d'arrivée
    et aussi en rajoutant d'autres villes .
    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
     
    // Appelle des librairies
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    // macros
    #define LongVille 30
    //Structure
    struct Parcours
    {
        char villeD[LongVille];
        int  distance;
        char  villeA[LongVille];
     
    };
     
    //Programme principale
    int main()
    {
    // Appelle de la structure Parcours
        struct Parcours saisi;
        saisi.distance=0;
    // saisi des villes et de la distance
        printf("\t\tParcours de la distance  entre 2 villes\n ");
        printf("\n");
        printf("Entrez la ville de depart :\n");
        scanf("%s",saisi.villeD);
        printf("Entrez la distance : \n");
        scanf("%d",&saisi.distance);
        printf("Entrez la ville d'Arriver :\n");
        scanf("%s",saisi.villeA);
        printf("\n");
     
    // Affichage du parcours
        printf("**le parcours est :** \n\n");
        printf("Ville de depart : %s\n",saisi.villeD);
        printf("Ville d'arriver : %s\n",saisi.villeA);
        printf(" Distances  : %d KM\n ",saisi.distance);
        return 0;
    }
    Dernière modification par Invité ; 09/08/2013 à 19h00. Motif: j'ai chanher le titre du post

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Points : 86
    Points
    86
    Par défaut
    Bonjour,

    J'imagine que quand tu parles de tableau, ici, c'est a l'affichage ?

    Tu pourrais tout simplement creer une fonction printParcours(parcours) qui ferait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      printf("%s \t %d \t %s ", parcours.villeD, parcours.distance, parcours.villeA);
    et appeler cette fonction avec differents parcours entrés par l'utilisateur.

    Ensuite, pour print tout le resultat, tu rajoutes juste un "titre" a tes colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("Ville de Depart \t Distance \t Ville d'arrivee");
    printParcours(parcoursUser); // et pourquoi pas sauver les parcours dans un tableau de parcours pour pouvoir en afficher plusieurs ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    merci de ton aide

    et comment je peux faire pour entrer et afficher plusieurs parcours ?

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zoltars43 Voir le message
    merci de ton aide

    et comment je peux faire pour entrer et afficher plusieurs parcours ?
    Salut

    Ta variable "saisi" permet de stocker un seul parcours, tout comme une variable de type "int" permettrait de stocker un seul nombre

    Si tu veux stocker plusieurs nombres ensembles, tu utiliseras un tableau de int. Donc, corollairement, si tu veux stocker plusieurs parcours, tu utiliseras...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Invité
    Invité(e)
    Par défaut
    salut

    merci
    Dernière modification par Invité ; 11/08/2013 à 19h43.

  6. #6
    Membre régulier Avatar de Mipwiq
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 42
    Points : 81
    Points
    81
    Par défaut
    Donc, corollairement, si tu veux stocker plusieurs parcours, tu utiliseras...
    Bon je vais quand même donner la réponse pour être sur que se soit compris, et pour ceux qui ne le connaitraient pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct parcours saisi[NBR];
    Un magnifique tableau de structures qui se déclare de la même manière qu'un autre tableau et qui permet donc d'avoir plusieurs parcours enregistrés. (Ici NBR est la taille voulu de notre tableau)

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Je suppose que le but final sera d'avoir une liste de villes avec des distances, de choisir deux villes puis de calculer l'itinéraire le plus rapide ?

    Dans ce cas là il te faudra utiliser l'algorithme de Dijkstra.

    Pour stocker les données, tu as plusieurs solutions possibles :
    - un tableau à deux dimensions pour stocker en fonction d'une autre ville la distance mais cela prend beaucoup de place en mémoire
    - un tableau de structure contenant une ville de départ, une ville d'arrivée et la distance ;
    - un tableau de villes où chaque villes contient une liste de destinations composées de (utilisé par les routeurs sur internet il me semble) :
    -> ville de destination ;
    -> prochaine "ville-étape"/ville sur l'itinéraire
    -> distance ville de destination, ville actuelle
    - ...

  8. #8
    Invité
    Invité(e)
    Par défaut
    merci de ta reponse Neckara

    mais j'ai rien compris et je sais pas faire un tableau

  9. #9
    Membre régulier Avatar de Mipwiq
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 42
    Points : 81
    Points
    81
    Par défaut
    merci de ta reponse Neckara

    mais j'ai rien compris et je sais pas faire un tableau
    C'est la meilleur réponse que j'ai jamais lu

    Alors tout d'abord si tu sais faire des tableaux, par exemple quand dans ton code tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char villeD[LongVille];
    C'est un tableau de char. Ce genre de tableaux ont une syntaxe simple a comprendre je trouve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type nom[nombre de cases]
    Cette syntaxe est applicable à quasi tous les types que tu peut rencontrer, y compris les structures.

    EDIT: Si tu ne sais pas ce que sont les tableaux en C tu devrais trouver plein de tuto qui t'aideront, c'est une notion très très importante et qui t'empêchera de progresser si tu n' y passe pas un peu de temps.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je parle d'afficher un tableau

    est ce que tu donne des cours ?

  11. #11
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Mipwiq, si tu veux éviter la prise de tête, tu dois déjà avoir une idée de pourquoi peu de gens aident zoltars43 et l'envoie également vers plein de tutos !

    Prépare d'ailleurs de la place dans ta boîte à MP, car ça va probablement pleuvoir sous peu !

    Mais surtout, je vais lui éviter une AVALANCHE de MP !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int tab[42], i;
     
    for (i = 0; i != 42; i++)
      printf("tab[%d] : %d\n", i, tab);
    A adapter au type voulu !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  12. #12
    Membre régulier Avatar de Mipwiq
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 42
    Points : 81
    Points
    81
    Par défaut
    est ce que tu donne des cours ?
    Non je ne donne pas de cours, si tu veux des cours sur le C tu peux regarder ici .

    Mipwiq, si tu veux éviter la prise de tête, tu dois déjà avoir une idée de pourquoi peu de gens aident zoltars43 et l'envoie également vers plein de tutos !
    OK je prend note

  13. #13
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Mais sinon avant de vouloir faire des programme en C , il faut bien connaitre le C , parce que avoir du souci avec les tableaux qui est basique il faut relire ces cours.

  14. #14
    Membre régulier Avatar de Mipwiq
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 42
    Points : 81
    Points
    81
    Par défaut
    c'est pas un super tuto pour avoir une bonne connaissance du c
    C'est bien pour ça que je ne pense pas qu'il puisse apporter plus qu'un vrai cours

  15. #15
    Invité
    Invité(e)
    Par défaut
    Merci pour vos conseils

    je viens de commander le livre : Le langage C, Norme ANSI
    Brian W. Kernighan + le livre des correction d'exercice
    Dernière modification par Invité ; 12/08/2013 à 17h32.

  16. #16
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Bonjour,

    Je suppose que le but final sera d'avoir une liste de villes avec des distances, de choisir deux villes puis de calculer l'itinéraire le plus rapide ?

    Dans ce cas là il te faudra utiliser l'algorithme de Dijkstra.

    Pour stocker les données, tu as plusieurs solutions possibles :
    - un tableau à deux dimensions pour stocker en fonction d'une autre ville la distance mais cela prend beaucoup de place en mémoire
    - un tableau de structure contenant une ville de départ, une ville d'arrivée et la distance ;
    - un tableau de villes où chaque villes contient une liste de destinations composées de (utilisé par les routeurs sur internet il me semble) :
    -> ville de destination ;
    -> prochaine "ville-étape"/ville sur l'itinéraire
    -> distance ville de destination, ville actuelle
    - ...
    Hum... tu aurais dû regarder ses autres discussions avant de lui envoyer tout ça dans la tronche
    Tu es bien évidemment dans le vrai... mais tu es tout aussi bien au delà de son niveau

    Citation Envoyé par Metalman Voir le message
    Prépare d'ailleurs de la place dans ta boîte à MP, car ça va probablement pleuvoir sous peu !
    Oui, moi c'est déjà le cas. Il m'a demandé un exemple de tableau d'int, je lui ai écris int i[100];, il m'a répondu que "ça ne marchait pas" et quand je lui ai demandé son code (qui ne "marchait pas") il m'a rebalancé le code en début de ce topic

    Citation Envoyé par zoltars43 Voir le message
    Merci pour vos conseils

    je viens de commander le livre : Le langage C, Norme ANSI
    Brian W. Kernighan + le livre des correction d'exercice
    Purée mais on t'a déjà balancé plein de tutos excellents et gratuits en plus. Si tu commençais par les lire avant d'aller te payer un bouquin (qui plus est, pas forcément à la portée d'un débutant quoi...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Invité
    Invité(e)
    Par défaut
    Milles excuses à tous
    Dernière modification par Invité ; 13/08/2013 à 17h33. Motif: Mollo sur le nombre de smileys

  18. #18
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    C'est pas spécialement par "méchanceté gratuite contre toi" que l'on dit tout cela...
    C'est juste que tu essayes de faire des choses assez compliquées sans avoir les notions nécessaires en C.
    Du coup, c'est sûr, tu ne peux pas y arriver !

    Fais déjà des choses simples : essaye tous les tutos qui t'ont été indiqués...
    Maîtrise les tableaux, les pointeurs, et les chaînes de caractères...
    Puis tu pourras retenter ton projet de GPS !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  19. #19
    Invité
    Invité(e)
    Par défaut
    je viens de recevoir mes 2 livres à l'instant

  20. #20
    Membre régulier Avatar de Mipwiq
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 42
    Points : 81
    Points
    81
    Par défaut
    Purée mais on t'a déjà balancé plein de tutos excellents et gratuits en plus.
    C'est pas la peine de t'énerver, il est juste un peu lent à comprendre, si il veut acheter des livres et des cours c'est son choix.

    je viens de recevoir mes 2 livres à l'instant
    C'est peut être le genre de post qui n'est pas spécialement nécessaire de faire, mais maintenant que tu n'as plus d'excuses pour les cours lit les et essai de comprendre et de mettre en application ce que tu apprends avec des exercices simples comme par exemple afficher des chaines de caractères, changer les minuscules en majuscules et vise versa etc...

    C'est en faisant de petits exo comme ceux là que tu arriveras à faire tes bases en programmation

Discussions similaires

  1. Trouver distance/ itinéraire entre deux villes
    Par melles dans le forum Web & réseau
    Réponses: 6
    Dernier message: 09/03/2009, 18h22
  2. Comment je peux modifier mon project tels que..
    Par zizo89 dans le forum Delphi
    Réponses: 3
    Dernier message: 07/05/2007, 13h03
  3. Comment je peux connaitre mon SGBD ?
    Par aliwassem dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 12/01/2007, 21h24
  4. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 20h13

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