Bonjour, je suis novice en programmation. Je me met petit à petit au langage C++, j'avais déjà fais un peu de C avant. J'aurai quelques questions concernant un code que j'ai trouvé sur le net et sur lequel je me suis penché.
Tout d'abord, ce code est en C. J'ai besoin de la retranscrire en C++ pour le modifier personnellement. Le problème, c'est qu'il y a certaines choses que je ne sais pas faire. Par exemple :
"scanf ("%d", &choix);" //Donne quoi en C++ svp ?? Parce que "cin >> &choix;" ne marche pas...
Et quelle est le signification exacte de ce symbole "->", par exemple dans "liste->taille". Celà revient-il à faire en quelque sorte "liste.*taille" ??
Merci de votre aide, elle me serai vraiment utile :)
#include
typedef struct
{
int _data;
} MyStruct;
int main()
{
MyStruct myStruct;
MyStruct* lpMyStruct = &myStruct;
myStruct._data = 1;
(*lpMyStruct)._data = 2;
lpMyStruct->_data = 3; // Equivalent à la ligne du dessus, mais aussi valable en C++
std::cin >> lpMyStruct->_data;
std::cout << myStruct._data << std::endl;
return 0;
}
Ok merci beaucoup !! Donc c'est une autre façon de manipuler un pointeur sur une structure.
J'aurai une dernière question, parce que je ne vois pas clairement comment je peux faire.
Je m'explique :
Le programme que je veux faire doit gérer un trafic de bus dans une ville. Enfin sans rentrer dans les détails ! Il doit juste recenser les stations et les lignes (RAPPEL : plusieurs stations sont situées sur une ligne, et une station peu être traversée par plusieurs lignes différentes). Ensuite, on veut pouvoir rajouter des stations, des lignes, en supprimer, afficher les lignes traversées par telle station, afficher les stations situées sur telle ligne, écrire le parcours pour aller de tel endroit à tel endroit, etc...
Je veux utiliser les listes chaînées pour faire cela afin de m'entraîner à les manipuler. En fait, je pense plutôt utiliser les listes doublements chaînées. Je voudrai savoir ce que vous pensez de ça, ou si vous avez une meilleur idée :
#include
typedef struct StationListe{
char *nom_station;
struct StationListe *station_precedente;
struct StationListe *station_suivante;
} Station;
typedef struct{
Station *debut;
Station *fin;
int taille;
} Ligne;
Qu'en pensez-vous? Est-ce que je pars sur des bases qui me permettrons de faire ce que j'ai écris plus haut? Ou bien qu'avez-vous à proposer?
Avec ça, une station a une station suivante et une station précédente.
Si deux lignes se croisent à cette station, tu es embêté.
(A moins de faire deux stations pour en fait en représenter une seule, ce qui n'est pas forcément viable non plus).
Me semble qu'il faudrait un tableau de stations, et les lignes pourraient contenir un tableau de pointeurs sur ces stations.
Mais c'est aussi vrai que la liste chaînée paraît plus représentative de ce qu'est une ligne. Mais à ce moment là, il faudrait ajouter la notion d'"arrêt".
Merci beaucoup pour votre aide, c'est vrai que ce que je faisais était voué à l'échec. Est-ce que vous pouvez en une phrase m'expliquer comment tirer le meilleur partis de ces structures? C'est à dire ce que je pourrais faire avec? Quand vous parlez d'un tableau de stations, vous voulez plutôt dire une liste chaînée d'Arret c'est ça? Et la structure Ligne me servirait juste à naviguer parmi les Arrets n'est-ce pas? Mais comment mettre en relation une suite donnée d'Arrets avec une Ligne. Désolé pour les questions, mais je suis vraiment novice, et ce que j’entreprends est un réel défi pour moi.
Merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
-> Huit stations stockées dans un tableau (Ou un Vector pour du C++). Redimensionner le tableau permet d'ajouter ou d'enlever des stations. Attention à modifier les arrêts en cas de suppression d'une station.
-> Deux lignes stockées dans un tableau. De même On peut redimensionner le tableau pour avoir plus de lignes.
-> La ligne verte a 4 arrêts, sur les stations 1, 2, 6 et 8.
-> La ligne bleue a 5 arrêts, sur les stations 3, 4, 5, 6 et 7.
-> Les deux lignes se croisent sur la station commune 6.
-> Les arrêts sont formés par des listes doublement chainées.
Super! Merci!
Pouvez-vous juste me donner un exemple d'initialisation svp? ça m'aiderai beaucoup à comprendre exactement les relations entre.
Sinon, il ne devrait pas y avoir un autre pointeur pour "Ligne verte" qui pointe vers le dernier "Arrêt" ? idem pour "Ligne bleue" non?