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 :

Structure en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 1
    Par défaut Structure en C
    Bonjour, voici mon problème:
    Je veux que toutes les voitures qui n'ont pas atteint la vitesse maximale vmax accélèrent d'une unité. Pour cela, il faut que j'utilise un for puis des if pour savoir si la voiture est déjà à vmax.
    Mais le problème, c'est que je ne sais pas comment utiliser les 2 structures en même temps pour changer la vitesse de toutes les voitures qui sont sur la route.
    Merci d'avance.

    Voici mes structures:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct {
        int nom; /*nom de la voiture */
        int pos; /*position de la voiture */
        int v; /*vitesse de la voiture */
    } Voiture;
     
    typedef struct {
        int nb; /*nombre de voitures */
        Voiture voit[]; /*tableau de voitures */
        int tab[80]; /*tableau d'entiers qui indique quelle cellule est occupée et qui donne l'indice de la voiture correspondante dans le tableau des voitures.*/
    } Route;

  2. #2
    Membre éclairé Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 508
    Par défaut
    En rajoutant un booleen a ta structure voiture :
    Bool sur_la_route;

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int i;
    int vmax = 7; // valeur arbitraire
    for(i = 0 ; i < 80 ; i++)
    {
      // route.tab[i] == 1 : la ieme voiture est sur la route
      if( (route.tab[i] == 1) && (route.voit[i].v < vmax) ) 
         route.voit[i].v++;
    }
    Maintenant, entre nous, je réécrirais tes structures comme ceci, en utilisant les pointeurs (dès que j'utilise des tableaux de taille > 3 j'utilise des pointeurs) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct {
        int nom; /*nom de la voiture */
        int pos; /*position de la voiture */
        int v; /*vitesse de la voiture */
    } Voiture;
     
    typedef struct {
        int nb; /*nombre de voitures */
        Voiture * voit; /*tableau de voitures */
        int * tab; /*tableau d'entiers qui indique quelle cellule est occupée et qui donne l'indice de la voiture correspondante dans le tableau des voitures.*/
    } Route;
    et n'oublie pas tes allocations :

    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
     
    Route * createRoute()
    {
      Route * route = malloc(sizeof(*route));
     
      if(route == NULL)
        return NULL;
     
      route->tab = calloc(80,sizeof(*(route->tab)));
      route->voit = calloc(80,sizeof(*(route->voit)));
     
     if( (route->tab == NULL) || (route->voit == NULL) )
     {
       free(route->tab);
       free(route->voit);
       free(route);
       route = NULL;
      }
      return route;
    }
    Je te laisse faire la libération de la mémoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void destroyRoute(Route ** route)
    {
     
    }

  4. #4
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut structure simple
    cà que je comprend de votre problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    vmax=120;
    for(int i=0;i<nbrvoiture ;i++)
    { if(voit[i]==vmax)
      printf("%d",voit[i]);
    }

Discussions similaires

  1. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  2. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 13h24
  3. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2002, 11h09
  4. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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