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

Opis działania strumienia wejściowego - wprowadzanie danych do strumienia

Ostatnio zmodyfikowano 2015-12-17 23:46
Autor Wiadomość
Alipeteros
Temat założony przez niniejszego użytkownika
Tworzysz zmienną 'aCzySukces', 'bCzySukces', 'cCzySukces'. Zapisujesz stan strumienia po wczytaniu danych, czyli wartość 'true' lub 'false', którą zwraca std::cin . I to wszystko. Nigdzie nie używasz (...)
» 2015-12-16 19:46:27
Czyli że "bool aCzySukces" w ogóle niepotrzebne? Naprawdę tego nie czaje. Podane są przykłady jakieś i: "Informacje o poprawnym (albo niepoprawnym) wczytaniu danych należy przechować w dodatkowych zmiennych typu bool." Więc to narzuca mi tylko myśl o użyciu tego czegoś. Zaczynam się wkurzać. Chcę tego się nauczyć ale to mnie już dobija.
P-142062
Alipeteros
Temat założony przez niniejszego użytkownika
» 2015-12-16 19:52:48
Powoli sił mi brakuje do zrozumienia tego więc mam taką prośbę: Czy może mi ktoś poprawić ten program i ewentualnie wytłumaczyć wprowadzone zmiany bo tak będzie wg mnie najprościej "łopatologicznie"
P-142063
carlosmay
» 2015-12-16 20:24:38
C/C++
std::cout << "Liczba a = " << a << "Czy udalo sie wczytac?: << aCzySukces << std::endl;
 Teraz zmiennej 'aCzySukces' używasz do wyświetlenia info o powodzeniu/niepowodzeniu wczytywania do zmiennej 'a'.
Dla pozostałych analogicznie.

Liczba pierwsza to: 13.3. Wczytano? 1.
Liczba druga to: 0. Wczytano? 0.
Liczba trzecia to: 33.22. Wczytano? 1.
 dane wyjściowe powinny wyglądać mniej więcej tak.
P-142065
Alipeteros
Temat założony przez niniejszego użytkownika
» 2015-12-17 23:46:39
Ta linijka wygląda mi na odpowiednią ale gdzie bym ją nie wstawił to program nawet odpalić nie chce.

Po edycji:
Zacząłem się bawić i osiągnąłem wynik bliski oczekiwanemu ale jest jeden problem. Podając jako pierwszą liczbę "13.3" wyświetla ją jako "13" bez końcówki. Dlaczego?


#include <iostream>
#include <limits>
int main()
{
    int a;
    int b;
    int c;


    std::cin >> a;

bool aCzySukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );


    std::cin >> b;

bool bCzySukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );

    std::cin >> c;

bool cCzySukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );


std::cout << "Liczba pierwsza to: " << a << ". Wczytano? " << aCzySukces << std::endl;
std::cout << "Liczba druga to: " << b << ". Wczytano? " << bCzySukces << std::endl;
std::cout << "Liczba trzecia to: " << c << ". Wczytano? " << cCzySukces << std::endl;

    return 0;
}

Edycja:
Teraz zmieniłem wartość int na float aby przecinki wczytywało i teraz otrzymałem efekt pożądany w programie. Pozdro i dzięki za pomoc.

#include <iostream>
#include <limits>
int main()
{
    float a;
    float b;
    float c;


    std::cin >> a;

bool aCzySukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );


    std::cin >> b;

bool bCzySukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );

    std::cin >> c;

bool cCzySukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );


std::cout << "Liczba pierwsza to: " << a << ". Wczytano? " << aCzySukces << std::endl;
std::cout << "Liczba druga to: " << b << ". Wczytano? " << bCzySukces << std::endl;
std::cout << "Liczba trzecia to: " << c << ". Wczytano? " << cCzySukces << std::endl;

    return 0;
}



P-142119
1 « 2 »
Poprzednia strona Strona 2 z 2