Witam mam problem z wczytaniem z pliku listy incydencji grafu i z odpowiednim przypisaniem danego wierzchołkowi jego sąsiadów. Mam plik ( oczywiście bez tych komentarzy ) :
4 5 // n,m n - ilość wierzchołków , m - liczba krawędzi
2 10 3 6 4 5 // wierzchołek 0 łączy się z 2 z waga 10, 0 z 3 i waga 6 no i 0 z 4 i waga
1 10 4 15 // wierzchołek 1
1 6 4 4
1 10 2 15 3 4
Mój problem polega na tym ze mam kod i działa on tak ze musze podać : z jakiego wierzchołka do jakiego idzie krawędź i jaka ma wagę np.
// Edge 0-1
graph.edge[0].Source = 0;
graph.edge[0].Destination = 1;
graph.edge[0].Weight = 10;
Wpisując to ręcznie wszystko działa ale mam problem jak muszę czytać to z pliku , próbuje robić to tak :
using (StreamReader sr = new StreamReader("Moj_plik.txt"))
{
while (sr.Peek() >= 0)
{
string str;
string[] strArray;
str = sr.ReadLine();
strArray = str.Split();
graph.edge[s].Source = p;
for (int k = 0; k < strArray.Length; k++)
{
Console.Write(int.Parse(strArray[k]) + " ");
if (k == 0 || k % 2 == 0) //jezeli parzyste to znaczy ze to jest Destination
{
graph.edge[s].Destination = int.Parse(strArray[k]);
}
else // jesli nie to Weight
{
graph.edge[s].Weight = int.Parse(strArray[k]);
s++;
if (k != strArray.Length - 1)
{
graph.edge[s].Source = p;
}
}
}
p++;
Console.WriteLine();
}
}
Czyli idę po każdej linijce pliku ( na razie pomijam to pierwsza z liczba wierz. i krawędzi ) i jak już wejdę do danej linijki idę po każdym elemencie i jeżeli jest parzysty to znaczy ze to Destination a nieparzysty to waga , siedzę już nad tym sporo i nie mam pomysłu jak to rozwiązać. Proszę o pomoc.