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

Wczytywanie pliku raz jeszcze.

Ostatnio zmodyfikowano 2011-03-31 22:50
Autor Wiadomość
xrtwo
Temat założony przez niniejszego użytkownika
Wczytywanie pliku raz jeszcze.
» 2011-03-31 21:27:44
Otóż mam fragment kodu:
C/C++
int main() {
    cout.precision( 4 );
    double liczba1, liczba2, liczba3, liczba4;
    fstream plik;
    char nazwa[ 20 ];
    vector < double > wektor;
    cout << "Podaj nazwe pliku: ";
    cin >> nazwa;
    plik.open( nazwa, ios::in );
   
    if( plik.is_open() == false )
    {
        cerr << "Nie mozna otworzyc pliku." << endl;
        return 1;
    }
   
    cout << "Plik otwarty." << endl;
   
   
    while( plik.good() )
    {
        char znak;
        plik >> liczba1 >> znak;
        plik >> liczba2 >> znak;
        plik >> liczba3 >> znak;
        plik >> liczba4 >> znak;
        string linia;
        getline( plik, linia );
        wektor.push_back( liczba3 );
    }

Z tym, że teraz chciałbym dac uzytkownikowi mozliwosc wyboru kolumny
wektor.push_back( liczba3 );
.
Sczerze mowiac rozwiazalem to przez switch ale do kazdego case'a musialem wrzucac cala ta petle. Probowalem tez przekazac plik do funkcji ale w programie bylo wtedy mnostwo bledow. Jakies porady?
P-30070
McAffey
» 2011-03-31 21:59:32
Zaznaczam, że nie wgłębiałem się za bardzo w twój problem, więc nie wiem jakie jest najlepsze rozwiązanie, chcę tylko skomentować zdanie :
rozwiazalem to przez switch ale do kazdego case'a musialem wrzucac cala ta petle.
 Lepiej wrzucić tą pętlę do funkcji i tylko ją wywoływać.
P-30071
malan
» 2011-03-31 22:01:29
Dodawaj to, co użytkownik wybierze. Np. xxx poda jeden, to dodaj
liczba1
, xxx poda trzy to dodaj
liczba3
. Wiesz, jakby się uprzeć, to da się to zrobić w jednej linijce (ale by trzeba wprowadzić małą modyfikację w kodzie).
P-30072
xrtwo
Temat założony przez niniejszego użytkownika
» 2011-03-31 22:10:12
Hmm nie wiem czy sie rozumiemy. Ogolnie wstawianie do wektora konkretnej kolumy odbywa sie w petli, wektor jest typu double wiec moze byc tylko liczba. Pytajac uzytkownika przed wejsciem do petli o wybor kolumny, moge do jego wyboru np 1 przypisac liczba1 tylko ze liczba 1 nie bedzie miala wartosci z pliku poniewaz samo wczytywanie do pliku odbywa sie w petli.
P-30074
malan
» 2011-03-31 22:13:11
A, czy ja mówiłem coś o wczytywaniu? ;p To zostaw w spokoju... Zastanów się nad pięcioliterowym wyrazem (na literę 'd'), w drugim zdaniu, w moim ostatnim poście.
P-30075
xrtwo
Temat założony przez niniejszego użytkownika
» 2011-03-31 22:25:45
Albo to ja nie rozumiem Twojego rozwiazania (juz jestem troche zmeczony) albo to Ty nie rozumiesz programu ;p Nie rozumiem gdzie ma to dodawac? Przeciez w petli odbywa sie dodawanie na koniec wektora wszystkich wartosci z kolumny nr 3
wektor.pushback(liczba3)
 moze byc ich 5 a moze ich byc 500. Uzytkownik ma byc tylko raz zapytany o to z ktorej kolumny maja byc wczytane dane, dla jasnosci przykladowy plik:
C/C++
5.1, 3.5, 1.4, 0.2, honda
4.9, 3.0, 1.4, 0.2, honda
6.4, 3.2, 4.5, 1.5, mazda
6.9, 3.1, 4.9, 1.5, mazda
6.2, 3.4, 5.4, 2.3, nissan
5.9, 3.0, 5.1, 1.8, nissan
P-30077
malan
» 2011-03-31 22:38:55
Eh... ;p
ZapytajUzytkownikaKtoraKolumneWczytac;

OtwórzPlik;
DopókiWPlikuSąDane
{
WczytajDane;
JeżeliUzytkownikWybralPierwszaKolumneToDodajDoWketoraPierwszaKolumne
...
JeżeliUzytkownikWybralCzwartaKolumneToDodajDoWketoraCzwartaKolumne
}
Prawie jak gotowiec ;p
P-30079
xrtwo
Temat założony przez niniejszego użytkownika
» 2011-03-31 22:47:14
Dziala oczywiscie... Dziekuje.
P-30080
« 1 » 2
  Strona 1 z 2 Następna strona