Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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!!!!

also ich hab deine frage nicht ganz verstanden. 0.o

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.

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]

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

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.

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.