Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] Wczytanie danych

Ostatnio zmodyfikowano 2014-07-07 19:40
Autor Wiadomość
grzeso
Temat założony przez niniejszego użytkownika
[c++] Wczytanie danych
» 2014-07-03 20:56:16
Witam

Chciałbym do programu wczytać takie dane:

1,11.123151,22.154645
2,11.1546,23.529
3,11.99,22.5965

i tak do 17000

pierwsza cyfra to liczba porządkowa, po przecinku dana A która mnie interesuje, a po drugim przecinku dana B która mnie interesuje

Chciałbym Lp, daną A i daną B zapisać każdą do oddzielnej tablicy

Samo wczytanie linijki do tablicy nie jest problemem, tylko ze wczytuje się jako tekst i do tego w całości. A ja bym chciał to rozdzielić żeby moc wykonać obliczenia na danej A i danej B. Kompletnie nie mam pomysłu jak się do tego zabrać. zwłaszcza ze dana A i B mogą być różnej długości.

Od razu pisze że nie jestem jakoś super zaawansowanym programistą, raczej początkującym. I chciałbym żeby kod był w miarę prosty ze względu na duża ilość danych i potrzebę późniejszego przetworzenia (z tym sobie poradziłem).

Proszę o jakąś podpowiedź albo cokolwiek
P-113218
pekfos
» 2014-07-03 21:09:02
C/C++
in >> lp[ n ] >> comma >> A[ n ] >> comma >> B[ n ];
P-113221
grzeso
Temat założony przez niniejszego użytkownika
» 2014-07-03 21:14:23

error:'comma' was not declared in this scope
P-113224
pekfos
» 2014-07-03 21:15:40
Eh.
C/C++
char comma;
P-113225
grzeso
Temat założony przez niniejszego użytkownika
» 2014-07-03 21:21:09
To jeszcze jedna rzecz:

Mój program:
C/C++
#include <iostream>
#include <fstream>
#include <iomanip>>

using namespace std;

int main()
{
    double n[ 5 ];
    double x[ 5 ];
    double y[ 5 ];
   
    char comma;
   
    fstream plik;
   
    plik.open( "dane.txt" );
   
    for( int i = 0; i < 5; i++ )
    {
        plik >> n[ i ] >> comma >> x[ i ] >> comma >> y[ i ];
        i++;
    }
   
    plik.close();
   
    for( int j = 0; j < 5; j++ )
    {
        std::cout << x[ j ] << std::endl;
    }
   
    std::cout << std::endl;
   
    for( int j = 0; j < 5; j++ )
    {
        std::cout << y[ j ] << std::endl;
    }
}

dane:

0,52.219860,20.9
1,52.2189,20.9
2,52.21801,20.970920
3,52.217097,20.970
4,52.21617,20.970920

i co druga wczytuje dobrze, a fajnie by było jakby wczytał dobrze wszysto
P-113227
pekfos
» 2014-07-03 21:22:48
C/C++
for( int i = 0; i < 5; i++ )
{
    plik >> n[ i ] >> comma >> x[ i ] >> comma >> y[ i ];
    i++;
}
2 razy inkrementujesz na jeden obieg pętli.
P-113228
grzeso
Temat założony przez niniejszego użytkownika
» 2014-07-03 21:24:15
Ale ja głupi jestem, przecież to pętla for

Ogromne dzięki
P-113229
grzeso
Temat założony przez niniejszego użytkownika
» 2014-07-03 21:55:41
i jeszcze jedna rzecz, chce wczytać dane ale nie wiem ile

mam petle:

C/C++
for( int i = 0; plik.eof() == true; i++ )

{
    plik >> n[ i ] >> comma >> x[ i ] >> comma >> y[ i ];
}

C/C++
while( !plik.eof() )
{
    plik >> n[ i ] >> comma >> x[ i ] >> comma >> y[ i ];
}

i wyskakują bzdury

ale tutaj:
C/C++
for( int i = 0; i < 50; i++ )

{
    plik >> n[ i ] >> comma >> x[ i ] >> comma >> y[ i ];
}
już jest ok


w czym tkwi mój błąd?
P-113234
« 1 » 2 3 4 5
  Strona 1 z 5 Następna strona