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

Niepoprawne wczytywanie danych z pliku c++,

Ostatnio zmodyfikowano 2017-05-14 10:23
Autor Wiadomość
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?

C/C++
#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;
}
P-161076
Monika90
» 2017-05-14 09:22:40
Próbujesz otworzyć plik dwa razy, co prowadzi do błędu.
Zamiast
C/C++
fstream plik( "dane.txt" );
plik.open( "dane.txt", std::ios::in );
napisz po prostu
C/C++
ifstream plik( "dane.txt" );

Ale to nie wszystko
C/C++
int main( void ) //po co ten void?

Użycie funkcji system wymaga
#include <cstdlib>
P-161077
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.
P-161078
Monika90
» 2017-05-14 10:13:22
Sprawdź czy plik udało się otworzyć
C/C++
if( !plik )
     cout << "nie udalo sie otworzyc pliku\n";


i wklej na forum aktualną wersję kodu.
P-161079
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ć.
P-161080
« 1 »
  Strona 1 z 1