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 :

labyrinthe robot déplacement


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Apprenti ingenieur administrateur systèmes
    Inscrit en
    Octobre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingenieur administrateur systèmes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 67
    Par défaut labyrinthe robot déplacement
    Bonjour j'ai un probleme sur un sujet de programmation.

    on nous donne un fichier txt dans lequel est dessine une carte.
    Je l'ai chargée, puis allouée dynamiquement afin que je puisse utilise comme une matrice.

    On me demande de faire une fonction telle : fonction deplacement(atelier,pos)
    tel que atelier (struct problem) et pos (struct coordonee)

    au debut du sujet on donn eles structure suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct coordonnee{ int num_lign,num_col}
     
    struct problem{char nom[10]; struct coordonne arrivee,depart;int nb_ligne,nb_colonne; char *carte}

    la fonction demandée doit pouvoir afficher une liste de coordonnées atteignables en un mouvement du robot cets a dir haut bas ou droite ou gauche

    merci je coince

  2. #2
    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 : 36
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Mets entre balises CODE (l'espèce d'icône #) tout ça d'abord...
    Et si tu peux carrément mettre uniquement le code (déclaration des structures et types), puis les explications...
    Ca deviendra vachement lisible et on t'aidera !
    --
    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

  3. #3
    Membre éclairé Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Par défaut
    Si tu coinces, c'est que tu as au moins écrit un peu de code ou de pseudo-code, alors montre-le et on t'aidera un peu, mais on n'écrira ni l'algorithme complet ni le code à ta place ...

  4. #4
    Membre confirmé
    Homme Profil pro
    Apprenti ingenieur administrateur systèmes
    Inscrit en
    Octobre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingenieur administrateur systèmes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 67
    Par défaut
    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
    #include <stdio.h>
    #include <stdlib.h>
     
     
     
    struct coordonnee
    {
        unsigned int num_col,num_ligne;
    };
    struct problem
    {
        char nom[20];
        struct coordonnee arrivee,depart;
        int nb_ligne,nb_colonne;
        char *carte;
     
    };
     
    int main(int argc, const char * argv[])
    {
     
        char caractere;//caractere de map.TXT
        int i,j; // compteur de lignes et colonnes
        int nb_lignes=40;// nombre de lignes de la matrice
        int nb_colonnes=80;// nombre de colonnes de la matrice
        char **matrice;//pointeur de pointeur matrice
     
        FILE *carte;
     
        matrice=malloc(sizeof(*matrice)*nb_lignes);
     
        if((carte=fopen("/Users/administrateur/Documents/Projet C/nono/map.txt","r"))==NULL)
        {
            printf("Le fichier n'existe pas \n");
        }
     
        for(i=0;i<nb_lignes;i++)
        {
            matrice[i]=malloc(sizeof(matrice)*nb_colonnes);
     
            for(j=0;j<nb_colonnes;j++)
            {
                caractere=fgetc(carte);
                matrice[i][j]=caractere;//onrentre les caractere de map un par un dans la matrice
            }
            caractere=fgetc(carte);// permet de supprimer la fin de ligne
     
        }
         matrice[1][1]='D';
        for(i=0;i<nb_lignes;i++)//affichage de la matrice allouee dynamiquement
        {
            for(j=0;j<nb_colonnes;j++)
            {
                printf("%c",matrice[i][j]);
     
            }
     
        }
     
     
        //matrice[21][30]='A';
        printf("\n");
     
     
        //deplacements possibles
     
        //int deplacement(struct problem atelier,struct coordonnee pos_cour)
        //{
        //
        //}
     
     
        return 0;
    }

  5. #5
    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 : 36
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Je pense qu'il manque le principal : comment fais-tu pour savoir où se trouve ton robot ?

    Tu devrais lui mettre une variable 'robot', de type 'struct coordonnee' pour représenter sa position... et tu testes dans ta matrice les cases autour !
    num_col + 1, num_col -1, num_ligne + 1, num_ligne - 1...
    Tu en t'assurant que ces positions sont dans la matrice (pour éviter les segfaults)
    --
    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

  6. #6
    Membre éclairé Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Par défaut
    OK, alors dans un premier temps, quelques conseils génériques :

    Tu ouvres un fichier sans le refermer.
    Je te conseille de coder cela tout de suite avec un test de réussite plutôt qu'un test d'échec, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if((carte=fopen("/Users/administrateur/Documents/Projet C/nono/map.txt","r"))!=NULL)
      {
        // ici ton code si OK
     
        // et fermeture du fichier
        fclose(carte);
      }
    else
      {
        // ici ton code en cas d'erreur
        // par exemple :
        printf("Le fichier n'existe pas \n");
      }
    Ensuite, tu devrais placer tes fonctions à l'extérieur du main :
    - une fonction d'ouverture et de remplissage de la matrice
    - une fonction de fermeture et de nettoyage
    - ta fonction de déplacement, dont je ne suis pas sûr d'avoir bien capté la finalité

    Enfin, tu déclares deux entiers pour gérer le nombre de colonnes et le nombre de lignes, alors que ceux-ci semblent figés, utilise plutôt des macros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define NB_LIGNES    40// nombre de lignes de la matrice
    #define NB_COLONNES  80// nombre de colonnes de la matrice
    De même, si ta matrice a une taille fixe et particulièrement petite (80x40), pourquoi t'embêtes-tu à la gérer dynamiquement, ce qui complique sérieusement le code ?

Discussions similaires

  1. gérer le déplacement d'un robot
    Par roger smith dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 31/03/2015, 11h37
  2. Déplacement de robot - code à corriger
    Par 114_49 dans le forum C
    Réponses: 6
    Dernier message: 11/09/2014, 16h50
  3. programme de déplacement aléatoire d' un robot
    Par jeanjakke dans le forum Débuter
    Réponses: 1
    Dernier message: 09/11/2010, 11h53
  4. Robot dans un labyrinthe
    Par afaf06 dans le forum Scheme
    Réponses: 12
    Dernier message: 07/01/2008, 05h44
  5. [débutant] déplacement d'un robot
    Par Sébastien L dans le forum Langage
    Réponses: 5
    Dernier message: 27/10/2006, 17h05

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