Program wczytuje z pliku i zapisuje tylko 13 pierwszych wierszy

2015-01-18 12:42
0
 #include "stdafx.h"
#include "fstream"
#include "iostream"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int Poziom_budynku[500], a, b, c, Liczba_ludnosci[500], Punkty[500];

    fstream plik, obliczenia;
    plik.open("D:\dane.txt", ios::in | ios::out);
    obliczenia.open("D:\obliczenia.txt", ios::out);
    for (int i = 0;; i++){
        if (!plik.good()){ break; }
        plik >> Poziom_budynku[i] >> a >> b >> c >> Liczba_ludnosci[i] >> Punkty[i]; 
        plik.ignore(256, '\n');
        //cout << Poziom_budynku[i] << "    "<< Punkty[i]<< endl;
        obliczenia << Poziom_budynku[i] <<"    "<<  Punkty[i]<<'\n';
    }
    plik.close();
    obliczenia.close();

    system("pause");
    return 0;
}

Co z tym kodem jest nie tak ?

Tak wygląda plik Dane
user image

Wywaliłem warunek if i wstawiłem do pętli for i < 30 (tyle jest wierszy w pliku) to wypisuje do 13 wiersza normalnie, a później całe czas te liczby -858993460 -858993460

Pozostało 580 znaków

2015-01-18 12:45
0

W wierszu 13 wczytujesz liczbę 1,119 do zmiennej typu int.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-01-18 12:47
0

Nom, też to teraz zauważyłem, ale nie da się tego wczytać do stringu, bo wtedy mam błąd przy operatorze >>

Pozostało 580 znaków

2015-01-18 13:54
0
  1. Masz w tych danych niezły bajzel ponieważ dla kolumny drugiej która najpierw ciągle rośnie do 910 a potem nagle w wierszu 13 masz 1,119 to by sugerowało że ten przecinek to separator grup trzycyfrowych. Ale jednak nie ponieważ w kolumnie 7 wyraźnie widać że przecinek służy jako separator dziesiętny zaś kropka jako separator grup trzycyfrowych
  2. Wczytaj do wiersz do string'a line zrób odpowiednie podmiany, po czym stwórz istringstream sin(line); i wczytuj z tego sin;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Podejrzewam, że bajzel jest ogromny i w kolumnach 2,3 i 4 przecinek jest separatorem grup dziesiętnych, a w kolumnie 7 jest separatorem dziesiętnym. - bogdans 2015-01-18 14:01
No właśnie dokładnie to napisałem, przynajmniej tak mi się wydaje :) - _13th_Dragon 2015-01-18 14:05
Ja zrozumiałem Ciebie inaczej: po obejrzeniu kolumny 2 podejrzewałeś, że przecinek jest separatorem grup, a po obejrzeniu kolumny 7 zmieniłeś zdanie. - bogdans 2015-01-18 14:16

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0