Witam.
Problem polega na tym, ze chce na poczatku odczytac z pliku, a dokladnie z macierzy sasiedztwa polaczenia miedzy konkretnymi wierzcholkami grafu, np.
01010
10011
00011
11101
01110
Potem trzeba zapisac to do tablicy dwuwymiarowej bool MS[VMAX+1][VMAX+1];
Kolejnym elementem nad ktorym sie obecnie zastanawiam jest odczyt drugiego pliku w postaci
A(1,2)
B(5,8)
C(2,7)
D(4,1)
E(3,5)
lub
(1,2)
(5,8)
(2,7)
(4,1)
(3,5)
Jak komu wygodniej. Sa to wspolzedne miast(problem komiwojazera).
Przykład nie oznacza że mamy się ograniczyć do 5 miast.
Nastepnie trzeba wyliczyc odleglosci miedzy miastami.
Pseudo kod to:
Function PoliczOdlegloscPomiedzyMiastami M1 i M2
szer = WspMiast(1, M1) - WspMiast(1, M2)
wys = WspMiast(2, M1) - WspMiast(2, M2)
PoliczOdleglosc = Sqr(szer ^ 2 + wys ^ 2)
If MaksymalnaOdleglosc < PoliczOdleglosc Then
MaksymalnaOdleglosc = PoliczOdleglosc
End If
End Function
Function PoliczDlugoscTrasy()
For i = 1 To LiczbaMiast
If i = LiczbaMiast Then
a = 1
Else a = i + 1
End If
PoliczDlugoscTrasy = PoliczDlugoscTrasy + PoliczOdleglosc(i, a)
End Function
Poradze sobie z napisaniem tego w c/c++.
Nastepnie graf wygeneruje juz sam.
Zatem chcialbyym prosic o pomoc w nastepujacych zagadnieniach:
- Fukcja do odczytu z macierzy i zapisu do tablicy dwuwymiarowej(moze byc pseudo kod lub porady).
- Koncepcja zrealizowania calosci czyli:
*odczyt macierzy z pliku
*obliczenie odleglosci miedzy miastami
*wygenerowanie grafu
Dotychczas udalo mi sie napisac takie cos:
#include "miasta.h"
#include <stdio.h>
const int VMAX 32 // max liczba wierzcholkow
bool MS[VMAX+1][VMAX+1]; // macierz sasiedztwa
int n; // faktyczna liczba wierzcholkow w grafie
int m; // liczba krawedzi
// zmienne macierzy
FILE *fp // plik macierz sasiedztwa
char znak []=" "; // spacja do czytania odstepu miedzy liczbami
string liczba; // liczba odczytana z macierzy
void zeruj_MS() // funkcja zeruje macierz sasiedztwa
{
for(int i = 1; i <= VMAX; i++)
for(int j = 1; j <= VMAX; j++)
AM[i][j] = false;
}
void read_AM() // odczyt macierzy
{
n = 0;
cin >> m;
if ((fp=fopen("macierz_sasiedztwa.txt", "w"))==NULL)
{
printf ("Nie moge; otworzyc' pliku macierz_sasiedztwa.txt do odczytu!\n");
exit(1)
else
while(getline(fp, wers[licznik])){
cout<<wers[licznik]<<endl;
licznik++;
}
}