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
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. 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.
    1
    1. C'est exactement la même chose, enfin ! Tu demande le nombre d'arêtes, puis tu fais une boucle :
      pour i = 1 à nombre d'aretes faire
        demander sommet 1
        demander sommet 2
      fin pour
      
      -1
  2. Tu demandes le nombre d'arêtes, puis tu fais une boucle dans laquelle tu demande les deux sommets correspondant à chaque arête...
    -1
    1. 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...
      -1
      1. je dois ecrire un pgm ki demande à l'utilisateur d'entrer le nbre d'arrete et de sommets d'un graphe, et il doit préciser la liste des arete kilk aimerait formés:
        après avoir entrer les donnés je dois les afficher et les enregistrer dans un fichier
        0
    2. et comment faire pour afficher la liste des arretes.
      -1
      1. Ben tu les stockes dans un tableau et tu les affiche avec une nouvelle boucle... T'as déjà programmé ?
        -1
      2. @pyschopatheoui, je vais le faire
        -1
    3. il faut créer une liste chaînée en utilisant les pointeurs...
      @+
      -1
      1. Inutile, bien trop complexe pour ça ! Il a juste à déclarer un tableau du genre
        int tab[nombre d'aretes][2]
        0
      2. @pyschopatheoui je suis d'accord avec toi c une autre solution...un tableau de record...
        @+
        -1
      3. @saly_infJ'ai tendance aussi à trouver la solution compliquée avant la simple ^^ !
        -1
    4. et pourkoi? sinon comment le faire?
      -1
      1. 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.
        -1
        1. merci jevais testé et je te ferai signe si je rencontre d'autres problèmes
          -1
        2. Contributeur
          Salut,
          L'allocation dynamique ne marche pas comme ça. Soit tu utilises new soit tu utilises malloc (comme en C), mais en aucun cas comme tu as fait ;)
          Cdlt
          0
        3. @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 ?
          -1
        4. 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.
          -1
        5. @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];
          
          0