Wczytywanie z pliku działa niepoprawnie

0

Witam,
Problem polega na tym, że wprowadzając dane z klawiatury wszystko działa, natomiast odczytując z pliku wychodzą bzdury.
PS: Plik dane.txt mający 2 wiersze i kilka kolumn.
Poniżej wersja która nie działa:

   file.open("dane.txt");
     for (int i=0; i<ilo; i++)
     {
        file>> tablica[0][i];
        file>> tablicaY[0][i];
		x=tablica[1][i];

         punkty=punkty+int2str(x);
         punkty=punkty+",";
           
        file>> tablica[1][i];
        file>> tablicaY[1][i];
		y=tablica[1][i];
         punkty=punkty+int2str(y);
         punkty=punkty+";";
         
     } 
	  file.close();

WERSJA DZIAŁAJĄCA:

	 // file.open("dane.txt");      /////////// TU się zaczyna
     for (int i=0; i<ilo; i++)
     {
         cout<<"Wezel nr "<<i+1<<" :"<<endl;
         cout<<"x = ";
         cin>>x;

      /* file>> tablica[0][i];
        file>> tablicaY[0][i];
		x=tablica[1][i];*/

			 tablica[0][i] = x;
			tablicaY[0][i] = x;

         punkty=punkty+int2str(x);
         punkty=punkty+",";
         
         
         cout<<"y = ";
         cin>>y;
   
       /* file>> tablica[1][i];
        file>> tablicaY[1][i];
		y=tablica[1][i];*/

			tablica[1][i] =y;
			tablicaY[1][i] =y;
         punkty=punkty+int2str(y);
         punkty=punkty+";";
         
     }                                      
	//  file.close();           ////////////////////Tu kończy
 
0

Skoro plik ma dwa wiersze i kilka kolumn to pewnie "ilo" będzie zawsze 2, więc odczytasz do tablicy pierwsze 4 współrzędne X i potraktujesz to jako dwa punkty X,Y X,Y.

0

Ilo to liczba kolumn, nie wierszy

0

hmm na pierwszy rzut oka to ilość obiegów pętli zależy od indeksu tablicy znajdującego się najbardziej z prawej a ilość wczytań ze strumienia jest 4. Sądze ,że problem może właśnie tkwi w tym ,że pętla wykonuje się za dużo lub za mało razu. Zrób tak aby w warunku pętli sprawdzono czy nie osiągnięto koniec pliku. metoda ta ma nazwę EOF. Resztę dopasuj wg logiki. To są oczywiście tylko spekulacje. Podaj najlepiej treść tego pliku i powiedz jaki chcesz uzyskać efekt wczytując z niego dane.

0

Już wiem. file>> tablica [0][i]; pobiera po kolei z pliku wyrażenia. Powinna byś osobna pętla do pobierania z pliku, a następnie druga do liczenia. Problem rozwiązany :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1