Problem z zapisem danych wczytanych z pliku do tablicy

0

Witam !
Czy ktoś może mi powiedzieć co w tym programie jest nie dobrze napisane ?

Program nieprawidłowo zapisuje dane do tablicy(niektóre są prawidłowo wczytane, a niektóre nie).

Dziękuje za każdą pomoc :)

Zawartość pliku punkty.txt:

1 	5721065.76	6488331.51
2	5721078.46	6488343.22
3	5721064.79	6488335.73
4	5721072.43	6488330.48
5	5721067.17	6488329.30
6	5721066.58	6488331.71
7	5721076.96	6488330.59
8	5721065.63	6488335.97
9	5721077.70	6488354.30
10	5721076.49	6488359.59
11	5721081.77	6488360.84
12	5721083.00	6488355.53
13	5721065.07	6488338.63
14	5721080.87	6488332.37
15	5721076.76	6488331.47
16	5721069.97	6488341.31
17	5721070.34	6488339.76
18	5721072.61	6488329.60
19	5721058.14	6488321.07
20	5721175.25	6488347.28
21	5721086.82	6488284.45
22	5721110.23	6488289.70
23	5721157.07	6488300.18
24	5721133.65	6488294.93
25	5721175.64	6488339.17
26	5721104.30	6488365.95
27	5721134.12	6488338.07
28	5721089.22	6488328.03
29	5721156.56	6488343.10
30	5721149.18	6488376.01
31	5721111.67	6488333.05
32	5721081.87	6488360.93
33	5721149.64	6488333.34
34	5721126.23	6488328.11
35	5721102.81	6488322.87
37	5721059.89	6488313.26
38	5721178.94	6488352.14
39	5721179.76	6488336.04
40	5721053.37	6488324.10
41	5721056.85	6488308.48
42	5721052.53	6488281.92
43	5721043.12	6488324.02
44	5721038.41	6488345.05
45	5721053.64	6488277.04
46	5721046.89	6488353.09
47	5721063.40	6488279.22
48	5721037.14	6488350.91
49	5721126.74	6488370.98

Zawartość programu:

#include <iostream>
#include <fstream>
#include <stdlib.h>


using namespace std;

int main()
{
	int i=0;
 	string linia;
    fstream plik;
    
    int *nazwa= new int[i];
    double *x = new double[i];
    double *y= new double[i];
    
    plik.open("punkty.txt", ios::in);
    if(plik.good() == true)
    {
        do
        {
        
        	cout << i+1 << " dana" << endl<<endl;
        	
        	if(i%3==1)
        	{
        		plik >> x[i];		
			}
			else if(i%3==2)
			{
				plik >> y[i];
			}
			else if(i%3==0)
			{
				plik >> linia;
			}
			cout<< x[i]<<endl;
			cout<< y[i]<<endl;
          	i++;
          	cout<<endl;
          
        }while(!plik.eof());
        plik.close();
    }
    cout << x[0]<<"    "<< y[0]<<endl;
    return 0;
}

Pierwsze 6 danych wczytanych z pliku:
screenshot-20181215200548.png

1
    int i=0;
    int *nazwa= new int[i];
   fstream plik;

    // ...

    plik.open("punkty.txt", ios::in);
    if(plik.good() == true)
    {
        do
        {
                // ...
                plik >> x[i];
                // ...
                plik >> y[i];
                // ...
                plik >> linia;
                // ...
        }while(!plik.eof());
        plik.close();
    }

Po co?!

ifstream f("punkty.txt");
double x, y;
int i;
while(f >> i >> x >> y) {
    // ...
}
0

Dziękuję kq !
Jak się okazało odpowiedź na moje pytanie okazała się trywialna ;)

Wszystkie dane zostały wczytane poprawnie.

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