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, botów: 0