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

Rozdział 33 Przykład w innej formie

Ostatnio zmodyfikowano 2017-04-20 23:01
Autor Wiadomość
shrvabl
Temat założony przez niniejszego użytkownika
Rozdział 33 Przykład w innej formie
» 2017-04-20 01:20:01
Siemka,
Zacząłem robić przykład po swojemu i nie rozumiem, dlaczego nie wczytuje mi pierwszej linijki. Zrobione pętlą do..while, wczytuje normalnie, zaś samą while pomija pierwszą linijkę. Dlaczego tak jest?
Z góry dzięki za pomoc!

Rozdział 33: » Kurs C++ » Poziom 4Wczytywanie danych z pliku za pomocą operatora >> lekcja


C/C++
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>

using namespace std;

void dzialanie( int liczba1, int liczba2, string dzialanie )
{
    if( dzialanie == "dodac" )
         cout << liczba1 << " + " << liczba2 << " = " << liczba1 + liczba2 << endl;
    else if( dzialanie == "odjac" )
         cout << liczba1 << " - " << liczba2 << " = " << liczba1 - liczba2 << endl;
    else
         cout << "Brak dzialania: ' " << dzialanie << " '." << endl;
   
}

int main()
{
    fstream plik;
    plik.open( "xxx.txt", ios::in );
    if( plik.good() == false )
    {
        cout << "Nie udalo sie otworzyc pliku" << endl;
        exit( 0 );
    }
    string wers, znak;
    int liczba1, liczba2;
   
    while( getline( plik, wers ) ) // chodzi o tą pętlę
    {
        plik >> liczba1 >> znak >> liczba2;
        dzialanie( liczba1, liczba2, znak );
    }
    plik.close();
    return 0;
}
P-160290
karambaHZP
» 2017-04-20 06:34:49
C/C++
while( getline( plik, wers ) ) // tutaj pobierasz linię i nic z nią nie robisz
{
    plik >> liczba1 >> znak >> liczba2; // tutaj pobierasz drugą i z nią dopiero coś robisz
    dzialanie( liczba1, liczba2, znak );
}
Odczytujesz w jednej pętli po dwie linie, a wykonujesz działania na co drugiej.
C/C++
while( plik >> liczba1 >> znak >> liczba2 ) {
    dzialanie( liczba1, liczba2, znak );
}
P-160291
shrvabl
Temat założony przez niniejszego użytkownika
» 2017-04-20 22:07:14
I taki warunek też zwraca "false" jeśli linii nie uda się wczytać?
P-160315
karambaHZP
» 2017-04-20 22:46:35
Sprawdź :]
P-160316
shrvabl
Temat założony przez niniejszego użytkownika
» 2017-04-20 23:01:06
Dzięki wielkie :) Zamykam temat :)
P-160317
« 1 »
  Strona 1 z 1