Programme en C++
Bonjour,
j'ai un exercice ou on me demande d'implémenter un générateur de graphes, pour cela je dois ecrire un pgm en c qui demande à l'utilisateur d'entrer le nre d'arrete et de sommet de mon graphe, et de préciser la listes des aretes et fournir l'instance obtenu dans un fichier.
j'ai un pbm au niveau de la précision de la liste des aretes.
aidez moi s'il vous plait.
Merci
j'ai un exercice ou on me demande d'implémenter un générateur de graphes, pour cela je dois ecrire un pgm en c qui demande à l'utilisateur d'entrer le nre d'arrete et de sommet de mon graphe, et de préciser la listes des aretes et fournir l'instance obtenu dans un fichier.
j'ai un pbm au niveau de la précision de la liste des aretes.
aidez moi s'il vous plait.
Merci
Configuration: Windows XP Internet Explorer 7.0
7 réponses
-
MAIS COMMENT LE FAIRE ? j'arrive à demander le nbre d'arete et le nombre de sommets, mais je dois aussi demander à l'utilisateur d'entrer les aretes qu'il aimerait formés.
et c'est là ou ça coince. -
Tu demandes le nombre d'arêtes, puis tu fais une boucle dans laquelle tu demande les deux sommets correspondant à chaque arête...
-
SALUT ...
si je peux me permetre...j'ai pas bien compris ton probleme
en effet, en a fait ce programme en delphi l'année passée... -
et comment faire pour afficher la liste des arretes.
-
-
@pyschopatheoui, je vais le faire
-
-
il faut créer une liste chaînée en utilisant les pointeurs...
@+-
-
@pyschopatheoui je suis d'accord avec toi c une autre solution...un tableau de record...
@+ -
@saly_infJ'ai tendance aussi à trouver la solution compliquée avant la simple ^^ !
-
-
et pourkoi? sinon comment le faire?
-
Tu fais quelque chose du genre :
int nb_aretes; cout << "Nombre d'aretes ?" << endl; cin >> nb_aretes; // On récupère les arêtes int aretes[nb_aretes][2]; for ( int i=0 ; i<nb_aretes ; ++i ) { cout << "Arete " << i << " :"; cout << "\nSommet origine : "; cin >> aretes[i][0]; cout << "\nSommet destination : "; cin >> aretes[i][1]; } // On les affiche for ( int i=0 ; i<nb_aretes ; ++i ) { cout << "(" << aretes[i][0] << ", " << aretes[i][1] << ")" << endl; } // On les enregistre dans un fichier ofstream fichier( "nom_fichier.txt" ); for ( int i=0 ; i<nb_aretes ; ++i ) { fichier << "(" << aretes[i][0] << ", " << aretes[i][1] << ")" << endl; }
Tu peux regrouper les deux dernières boucles en une.-
-
-
@fiddyJe peux bien déclarer un tableau statique, je le déclare sur la pile et pas sur le tas... Je ne vois pas en quoi ce code est faux ! Pourrais-tu expliquer stp ?
-
Contributeur@pyschopatheOui en statique c'est sur la pile. Mais c'est fait lors de la compilation.
Or dans ton code :int nb_aretes; cout << "Nombre d'aretes ?" << endl; cin >> nb_aretes; // On récupère les arêtes int aretes[nb_aretes][2];
Tu demandes l'utilisateur de choisir le nombre d'arêtes, et tu fais l'allocation après. Donc forcément dans le heap, donc allocation dynamique. -
@fiddyYep pas faux...
int nb_aretes; cout << "Nombre d'aretes ?" << endl; cin >> nb_aretes; // On récupère les arêtes int * aretes[2]; arete[0] = new int[nb_aretes]; arete[1] = new int[nb_aretes]; for ( int i=0 ; i<nb_aretes ; ++i ) { cout << "Arete " << i << " :"; cout << "\nSommet origine : "; cin >> aretes[0][i]; cout << "\nSommet destination : "; cin >> aretes[1][i]; } // On les affiche for ( int i=0 ; i<nb_aretes ; ++i ) { cout << "(" << aretes[0][i] << ", " << aretes[1][i] << ")" << endl; } // On les enregistre dans un fichier ofstream fichier( "nom_fichier.txt" ); for ( int i=0 ; i<nb_aretes ; ++i ) { fichier << "(" << aretes[0][i] << ", " << aretes[1][i] << ")" << endl; } delete[] arete[0]; delete[] arete[1];
-