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 |
|
pekfos |
» 2014-07-03 21:09:02 in >> lp[ n ] >> comma >> A[ n ] >> comma >> B[ n ];
|
|
grzeso Temat założony przez niniejszego użytkownika |
» 2014-07-03 21:14:23 error:'comma' was not declared in this scope
|
|
pekfos |
» 2014-07-03 21:15:40 |
|
grzeso Temat założony przez niniejszego użytkownika |
» 2014-07-03 21:21:09 To jeszcze jedna rzecz: Mój program: #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 |
|
pekfos |
» 2014-07-03 21:22:48 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. |
|
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 |
|
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: for( int i = 0; plik.eof() == true; i++ )
{ plik >> n[ i ] >> comma >> x[ i ] >> comma >> y[ i ]; }
while( !plik.eof() ) { plik >> n[ i ] >> comma >> x[ i ] >> comma >> y[ i ]; }
i wyskakują bzdury ale tutaj: 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? |
|
« 1 » 2 3 4 5 |