Więc dwie wersje kodu - obie wpisałem dla Ciebie pseudokodem.
#include<iostream>
#include<fstream>
#include<conio.h>
using namespace std;
void print(int **tab, int n);
int main()
{
ifstream plik("dane.txt");
int n; //liczba wierzcholkow
if(plik.good())
{
plik >> n;
}
else
cout << "nie mozna otworzyc plku! \n";
//w tablice wpiszemy liste sasiedztaw
int **tab = new int * [10];
for(int i=0; i<10; i++)
tab[i] = new int [3];
//bOOsiu: masz tutaj blad nie wpisuj w tab[i][j] tylko w tab[i][wartosc z pliku] = 1
for(int i=0; i<10; i++)
for(int j=0; j<3; j++)
plik >> tab[i][j];
cout << "wczytana lista sasiedztwa: \n";
for(int i=0; i<10; i++)
{
for(int j=0; j<3; j++)
cout << tab[i][j] << " ";
cout << endl;
}
//tworzmy macierz sasiedztwa nxn
int **matrix = new int * [n];
for(int i=0; i<n; i++)
matrix [i] przypisz nowa tablica int rozmiaru n
//bOOsiu: inicjalizacja tablicy zerami
Dla i od 0 do n wykonaj
{
dla j od 0 do n wykonaj
{
macierz [i,j] przypisz 0
}
}
//bOOsiu: wersja z wypełnionej wcześniej przez Ciebie listy(tablicy) sąsiedztwa
// która nie ma sensu - będzie działać tylko dla pliku z iloscia wezlow 10
// oraz iloscia krawedzi wezla nie wieksza niz 3
Dla i od 0 do 10 wykonaj
{
dla j od 0 do 3 wykonaj
{
martix od [i,tab [i,j])] przypisz 1
}
}
//bOOsiu: Twoja tablica jest już gotowa!!! Ale nie dostaniesz za to 5...
//zamknij plik
plik.close();
getch();
}
Druga wersja, będzie działać dla dowolnego pliku wejściowego (jeśli w wierszu nie podasz więcej niż 100 znaków):
#include<iostream>
#include<sstream>
#include<fstream>
#include<conio.h>
using namespace std;
void print(int **tab, int n);
int main()
{
ifstream plik("dane.txt");
int n; //liczba wierzcholkow
if(plik.good())
{
plik >> n;
}
else
cout << "nie mozna otworzyc plku! \n";
//tworzmy macierz sasiedztwa nxn
int **matrix = new int * [n];
for(int i=0; i<n; i++)
matrix[i] = new int [n];
//bOOsiu: inicjalizacja tablicy zerami
Dla i od 0 do n wykonaj
{
dla j od 0 do n wykonaj
{
macierz [i,j] przypisz 0
}
}
/*bOOsiu: Bardziej uniwersalna wersja*/
zadeklaruj tablicę o pojemności 100 znaków;
zadeklaruj zmienną i typu int i zainicjuj ją wartością 0;
//bOOsiu: tutaj bedzie wlasciwe tworzenie tablicy sasiedztwa
dopóki nie koniec pliku wykonaj
{
pobierz wiersz z pliku do tablicy buf;
utwórz obiekt typu sstream inicjowany wartością tablicy buf;
utwórz zmienną typu int o nazwie temp;
dopóki obiekt typu sstream nie jest pusty wykonaj
{
pobierz wartość z obiektu sstream do zmiennej temp;
do matrix[i,temp] wpisz 1 //bOOsiu: tutaj tworzysz właściwą macierz sasiedztwa
}
zwieksz o jeden zmienna i
}
//bOOsiu: Masz już gotową macierz sąsiedztwa
// zamknij plik
plik.close();
getch();
}
Żeby ułatwić, dwa linki:
Ładnie opisany string stream (sstream) http://www.cplusplus.com/reference/iostream/stringstream/
Macierz incydencji http://pl.wikipedia.org/wiki/Macierz_incydencji
EDIT: Poprawiłem wcięcia w kodzie