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 :

Projet Carte de ville et parcours


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Projet Carte de ville et parcours
    Bonjour,

    Je demande votre aide car je suis un peu bloqué dans mon projet ou je dois faire une carte de ville, et faire des visites. J'ai déjà créé une ville une carte de villes mais je n'arrives pas a créer un parcours de villes dans une carte. Pouvez vous m'aider pour voir ce qu'on ne va pas dans les fonctions créer_parcours et genereraleatoire

    J'ai fait ça mais ça ne fonctionne pas toujours une erreur un warning a cause de pointeur dans la fonction creer_parcours
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <assert.h>
    #include <time.h>
    #include <math.h>
     
     
    typedef struct{
        char nom[80];
        int x;
        int y;
    }Ville;
     
    typedef struct{
        int nombre_ville;
        Ville **villes;
    }Carte;
     
    typedef struct {
        int *chemin;
        int nb_villes;
        int longueur;
    }Parcours;
     
     
     
    Ville *creer_ville(const char *nom){
        Ville *nouvelle;
        int ax;
        int ay;
        ax=800;
        ay=600;
        nouvelle=(Ville*)malloc(sizeof(Ville));
        if(nouvelle==NULL)
            return 0;
        strcpy (nouvelle->nom,nom);
        nouvelle->x=rand()%ax;
        nouvelle->y=rand()%ay;
        return nouvelle;
    }
     
     
    void ecrire_fichier (Ville *a){
        FILE* fichier = NULL;
        fichier = fopen("test.txt", "a");
        fprintf(fichier,"%s %d %d\n",a->nom,a->x,a->y);
        fclose(fichier);
    }
     
     
     
    void affiche_ville(Ville *a){
        printf("%s %d %d\n",a->nom,a->x,a->y);
    }
     
     
    double calcul_distance (Ville *a,Ville *b){
        double d;
        d=sqrt(((b->x-a->x)*(b->x-a->x))+((b->y-a->y)*(b->y-a->y)));
        return d;
    }
     
    void gestion_carte(){
        char nom[80];
        Carte carte1;
        srand(time(NULL));
        int i;
        double resul;
     
        scanf("%d",&carte1.nombre_ville);
        carte1.villes = malloc(sizeof(Ville *)*carte1.nombre_ville);
        for (i = 0; i < carte1.nombre_ville; i++) {
            sprintf(nom,"V%d",i+1);
            carte1.villes[i] = creer_ville(nom);
            affiche_ville(carte1.villes[i]);
            ecrire_fichier(carte1.villes[i]);
     
        }
        resul=calcul_distance(carte1.villes[2],carte1.villes[6]);
        printf("%f",resul);
    }
     
    void lires_fichier(){
        int i;
        Ville *a;
        FILE* fichier = NULL;
        fichier = fopen("test.txt", "r");
        while(fscanf(fichier, "%s %d %d\n",a->nom,&a->x,&a->y)==3){
            printf("\n%s %d %d\n",a->nom,a->x,a->y);
        }
        fclose(fichier);
    }
     
    Parcours *creer_parcours(){
        int nb_ville;
        scanf("%d",&nb_ville);
        Parcours *nouvelle;
        nouvelle=(Parcours*)malloc(sizeof(Parcours));
        if(nouvelle==NULL){
            return 0;
        }
        nouvelle->chemin=nb_ville;
            return nouvelle;
    }
     
     
    void genere_visite_alea (Parcours *v,int nb_ville){
        int i,j;
        int s;
        int trous;
        int *vs;
        for (i=0;i<nb_ville;i++){
            s=rand()%(nb_ville-2-i);
            trous=0;
            for(j=1;j<nb_ville-1;j++){
                if (vs[j]==0)
                    trous++;
                if(trous==s)
                    break;
                vs[j]=i;
            }
        }
    }
     
    int main(int argc,char* argv[]){
        gestion_carte();
        lires_fichier();
        return 0;
    }
    si vous pouviez m'aider a voir le problème

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    nouvelle->chemin est de type int* alors que nb_ville est de type int. Ca ne colle pas et donc ton compilateur te le dit.

    je n'arrives pas a créer un parcours de villes dans une carte. Pouvez vous m'aider pour voir ce qu'on ne va pas dans les fonctions créer_parcours et genereraleatoire
    Pourquoi n'y arrives-tu pas ? D'après toi, qu'est ce qui ne va pas ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Corrigé
    Bonjour,

    J'ai fait des corrections à mon programme mais ca ne marche toujours pas, je sais pas ce qui bug car avec parcours, chemin est un tableau de taille nb_villes qui contient les indices des villes puis on a longueur pour enregistrer la longueur du parcours.

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <assert.h>
    #include <time.h>
    #include <math.h>
     
     
     
    typedef struct{
        char nom[80];
        int x;
        int y;
    }Ville;
     
    typedef struct{
        int nombre_ville;
        Ville **villes;
    }Carte;
     
    typedef struct {
        int *chemin;
        int nb_villes;
        int longueur;
    }Parcours;
     
     
     
    Ville *creer_ville(const char *nom){
        Ville *nouvelle;
        int ax;
        int ay;
        ax=800;
        ay=600;
        nouvelle=(Ville*)malloc(sizeof(Ville));
        if(nouvelle==NULL)
            return 0;
        strcpy (nouvelle->nom,nom);
        nouvelle->x=rand()%ax;
        nouvelle->y=rand()%ay;
        return nouvelle;
    }
     
     
    void ecrire_fichier (Ville *a){
        FILE* fichier = NULL;
        fichier = fopen("test.txt", "a");
        fprintf(fichier,"%s %d %d\n",a->nom,a->x,a->y);
        fclose(fichier);
    }
     
     
     
    void affiche_ville(Ville *a){
        printf("%s %d %d\n",a->nom,a->x,a->y);
    }
     
     
     
     
    double calcul_distance (Ville *a,Ville *b){
        double d;
        d=sqrt(((b->x-a->x)*(b->x-a->x))+((b->y-a->y)*(b->y-a->y)));
        return d;
    }
     
    void gestion_carte(){
        int ax=100;
        char nom[80];
        Carte carte1;
        srand(time(NULL));
        int i,j;
        double resul;
        scanf("%d",&carte1.nombre_ville);
        carte1.villes = malloc(sizeof(Ville *)*carte1.nombre_ville);
        for (i = 0; i < carte1.nombre_ville; i++) {
            sprintf(nom,"V%d",i+1);
            carte1.villes[i] = creer_ville(nom);
            affiche_ville(carte1.villes[i]);
            ecrire_fichier(carte1.villes[i]);
     
        }
        resul=calcul_distance(carte1.villes[5],carte1.villes[9]);
        printf("%f\n",resul);
     
     
        Parcours p;
        scanf("%d",p.nb_villes);
        p.chemin = malloc(p.nb_villes*sizeof(int));
        for (i=0;i<p.nb_villes;i++){
            for(j=1;j<p.nb_villes;j++){
                p.chemin[i]=j;
                p.longueur=calcul_distance(carte1.villes[p.chemin[i-1]], carte1.villes[p.chemin[i]]);
                printf("%f",p.longueur);
     
            }
        }
    }
     
     
    void lires_fichier(){
        int i;
        Ville *a;
        FILE* fichier = NULL;
        fichier = fopen("test.txt", "r");
        while(fscanf(fichier, "%s %d %d\n",a->nom,&a->x,&a->y)==3){
            printf("\n%s %d %d\n",a->nom,a->x,a->y);
        }
        fclose(fichier);
    }
     
     
     
    int main(int argc,char* argv[]){
        gestion_carte();
        lires_fichier();
        return 0;
    }
    Merci d'avance de l'aide.

Discussions similaires

  1. Projet Carte Fox LX832 Pas de signal en sortie
    Par florian93500 dans le forum Embarqué
    Réponses: 5
    Dernier message: 23/02/2013, 22h07
  2. Projet carte fox
    Par toufiq dans le forum Embarqué
    Réponses: 9
    Dernier message: 11/02/2013, 20h42
  3. Projet Cartes de Fidélité
    Par Alexpato dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 14/08/2011, 02h05
  4. Recherche carte de villes dynamiques
    Par Nasky dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/07/2007, 14h36
  5. Aide pour projet avec carte asi candibus
    Par sinicha dans le forum C
    Réponses: 13
    Dernier message: 16/01/2006, 15h32

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