Niepoprawne wczytywanie danych z pliku c++,
Ostatnio zmodyfikowano 2017-05-14 10:23
probs Temat założony przez niniejszego użytkownika |
Niepoprawne wczytywanie danych z pliku c++, » 2017-05-14 08:53:16 Po uruchomieniu program wypisuje niepoprawne dane w porównaniu z tymi z pliku (jest 3900 linijek, ale kod podaję dla pierwszych trzech). Dane są w pliku tekstowym w formacie: -3.00000000000000000000e+001 1.00000000000000000003e-030 1.00000000000000000000e+000 -2.99899999999999999998e+001 1.02329299228075413100e-030 1.00000000000000000000e+000 -2.99799999999999999996e+001 1.04712854805089953345e-030 1.00000000000000000000e+000 Program wypisuje nawet 1.#.QNAN dla stosunkowo dużej wartości jak pierwsza z lewej w górnej linijce. Poniżej zamieszczam mój kod. Gdzie popełniam błąd? #include <iostream> #include <fstream> #include <iomanip> using namespace std;
int main( void ) { double liczba[ 3 ][ 3 ]; fstream plik( "dane.txt" ); plik.open( "dane.txt", std::ios::in ); for( int i = 0; i < 3; i++ ) for( int j = 0; j < 3; j++ ) plik >> liczba[ i ][ j ]; for( int i = 0; i < 3; i++ ) { for( int j = 0; j < 3; j++ ) { cout.width( 21 ); cout << setw( 21 ) << liczba[ i ][ j ] << " "; } cout << "\n"; } plik.close(); system( "pause" ); return 0; }
|
|
Monika90 |
» 2017-05-14 09:22:40 Próbujesz otworzyć plik dwa razy, co prowadzi do błędu. Zamiast fstream plik( "dane.txt" ); plik.open( "dane.txt", std::ios::in );
napisz po prostu ifstream plik( "dane.txt" );
Ale to nie wszystko Użycie funkcji system wymaga #include <cstdlib> |
|
probs Temat założony przez niniejszego użytkownika |
» 2017-05-14 09:57:07 Dziękuję za odpowiedź. Poprawiłem wszystko co zasugerowałaś. Problem z wyświetlaniem pozostaje. Swoją drogą chyba muszę zmienić środowisko, bo devc++ przepuścił mi ten brak cstdlib. |
|
Monika90 |
» 2017-05-14 10:13:22 Sprawdź czy plik udało się otworzyć if( !plik ) cout << "nie udalo sie otworzyc pliku\n";
i wklej na forum aktualną wersję kodu. |
|
karambaHZP |
» 2017-05-14 10:23:50 Swoją drogą chyba muszę zmienić środowisko, bo devc++ przepuścił mi ten brak cstdlib. |
To jest kwestia użytych kompilatorów. W większości przypadków mają niestandardowe rozszerzenia, ale trzeba mieć świadomość, że napisany kod może gdzieś nie zadziałać, bo nie ma dodanego nagłówka. Kompilator nie zgłosi błędu, jeśli wie jak coś przetłumaczyć. |
|
« 1 » |