[C/C++] Odczyt pliku txt i zapis do tablicy dwuwymiarowej

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
aceb
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 15 maja 2008, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

[C/C++] Odczyt pliku txt i zapis do tablicy dwuwymiarowej

Post autor: aceb »

Witam.

Problem polega na tym, ze chce na poczatku odczytac z pliku, a dokladnie z macierzy sasiedztwa polaczenia miedzy konkretnymi wierzcholkami grafu, np.

Kod: Zaznacz cały

01010
10011
00011
11101
01110
Potem trzeba zapisac to do tablicy dwuwymiarowej

Kod: Zaznacz cały

bool MS[VMAX+1][VMAX+1];
Kolejnym elementem nad ktorym sie obecnie zastanawiam jest odczyt drugiego pliku w postaci

Kod: Zaznacz cały

A(1,2)
B(5,8)
C(2,7)
D(4,1)
E(3,5)
lub

Kod: Zaznacz cały

(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:

Kod: Zaznacz cały

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:
1. Fukcja do odczytu z macierzy i zapisu do tablicy dwuwymiarowej(moze byc pseudo kod lub porady).
2. Koncepcja zrealizowania calosci czyli:
*odczyt macierzy z pliku
*obliczenie odleglosci miedzy miastami
*wygenerowanie grafu

Dotychczas udalo mi sie napisac takie cos:

Kod: Zaznacz cały

#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++;
                      }
   
     }
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości