Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe bis jetzt noch nicht so viel Erfahrung mit c++ und habe gerade ein riesiges Problem beim Einlesen von Daten aus einer txt-Datei.

Meine Datei repräsentiert einen ungerichten Graphen. Sie hat die Form

1 2

3 4

2 4

5 6

...

dabei sind die zahlen 1,..,6 die Bezeichnungen für die knoten.

Und stehen zwei zahlen in einer zeile heißt das, dass diese ecken jeweils durch eine kante verbunden sind.

...allerdings weiß ich nicht wie viele Ecken und Kanten der Graph insgesamt hat.

Ich würde jetzt gerne diese Datei in einen 2-dimensionalen array einlesen.

Allerdings habe ich dafür so gar keinen Ansatz (vorallem da ich nciht weiß wie viele Kanten ich einlesen muss.....:confused:

Also wenn mir jemand helfen würde, wäre das SUPER!!!!

Geschrieben
also ich hab deine frage nicht ganz verstanden.

Graphen werden oft als Repräsentation von Graphen im Computer ? Wikipedia dargestellt und genau diese Darstellung hat der OP vorliegen als Textdatei.

Für die Darstellung des Graphen wäre Boost Graph Library: Adjacency Matrix eine Möglichkeit, sowie eben das genannte Array, dafür musst Du aber im Vorfeld die Größe des Graphen kennen. Im Grunde musst Du die Datei zeilenweise einlesen und eben anhand eines Separators zerlegen. Im korrekten Fall solltest Du genauso viele Zeilen wie Spalten haben und kannst daraus die Adjazenzmatrix erzeugen.

Geschrieben

Man könnte die Datei zuächst in eine list<pair<int, int> > einlesen, dann die Anzahl der Knoten bestimmen und damit eine hinreichend große Matrix anlegen.

Zeilenweises Einlesen oder Zerlegen sollte nicht notwendig sein, wenn der Aufbau der Datei verlässlich ist.

ifstream file("deine_datei");
while(file >> k1 >> k2)
{
liste.push_back(make_pair(k1, k2));
}[/code]

Geschrieben
Man könnte die Datei zuächst in eine list<pair<int, int> > einlesen, dann die Anzahl der Knoten bestimmen und damit eine hinreichend große Matrix anlegen.

ein pair wird normalerweise für eine Adjazenzmatrix nicht ausreichen, denn man hat eine quadratische Matrix und nicht wie in dem Beispiel immer nur Paare, somit muss ich zeilenweise parsen

Geschrieben
denn man hat eine quadratische Matrix und nicht wie in dem Beispiel immer nur Paare

Hat man?

Strawberry hat zwar gesagt, was es bedeutet, wenn zwei Zahlen in einer Zeile stehen. Er hat leider nicht gesagt, was es bedeutet, wenn es mehr oder weniger Zahlen sind, und im Beispiel kommt so etwas auch nicht vor.

Ich bin davon ausgegangen, dass die Datei einfach eine Auflistung der Kanten enthält.

Geschrieben
Er hat leider nicht gesagt, was es bedeutet, wenn es mehr oder weniger Zahlen sind, und im Beispiel kommt so etwas auch nicht vor.

Da hast du recht. Wichtig wäre zu wissen, ob es sich um eine Adjazenzliste oder um eine -matrix handelt. Beides wird die Repräsentation von Graphen verwendet, wobei man mit einem pair die Liste verarbeiten kann, wenn man dann noch beachtet, dass es sich um eine einfach-verkettete Liste (nach Definition) handelt.

Ansonsten müsste man eben das ganze als Matrix verarbeiten

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...