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

Lekcja 9

Ostatnio zmodyfikowano 2016-11-13 20:40
Autor Wiadomość
neferx
» 2016-07-11 16:24:52
C/C++
cin >> zmiennajeden;
bool a = cin.good();
Przykładowy bool o nazwie "a".

C/C++
cout << "\nLiczba pierwsza to: " << zmiennajeden << "\nCzy udalo sie wczytac? " << cin.good() << "\nCzy cos nawalilo? " << cin.fail() << endl;
W tym momencie wykonujesz dopiero sprawdzenie
cin.good();
 zamiast wczytać wynik z
bool

Analogiczna sytuacja z
cin.fail();
P-149842
Orenz12
» 2016-07-11 18:44:43
Naniosłem poprawki:

C/C++
#include <iostream>
using namespace std;
int main()
{
    float zmiennajeden;
    float zmiennadwa;
    float zmiennatrzy; // mog³em daæ a, b, c, ale tak dla mnie jest bardziej zrozumiale
   
    cout << "Podaj liczbe pierwsza:" << endl;
    cin >> zmiennajeden;
    bool a = cin.good();
    bool d = cin.fail();
   
    cout << "Podaj liczbe druga:" << endl;
    cin.clear();
    cin.sync();
    cin >> zmiennadwa;
    bool b = cin.good();
    bool e = cin.fail();
   
    cout << "Podaj liczbe trzecia:" << endl;
    cin.clear();
    cin.sync();
    cin >> zmiennatrzy;
    bool c = cin.good();
    bool f = cin.fail();
   
    cout << "\nLiczba pierwsza to: " << zmiennajeden << "\nCzy udalo sie wczytac? " << a << "\nCzy cos nawalilo? " << d << endl;
    cout << "\nLiczba druga to: " << zmiennadwa << "\nCzy udalo sie wczytac? " << b << "\nCzy cos nawalilo? " << e << endl;
    cout << "\nLiczba trzecia to: " << zmiennatrzy << "\nCzy udalo sie wczytac? " << c << "\nCzy cos nawalilo? " << f << endl;
    return 0;
}

Jakieś zastrzeżenia? Nigdzie nie widziałem by ktoś definiował typu
bool d = cin.fail();
, ale program działa bez zarzutu.
P-149850
Dego93
» 2016-07-13 06:22:20
C/C++
#include <iostream>

using namespace std;

float a, b, c;
bool valid;

int main()
{
   
    cin >> a;
    valid = cin.good();
    cout << "Liczba pierwsza to: " << a << ". Wczytano? " << valid << "." << endl;
    cin.clear();
    cin.sync();
   
    cin >> b;
    valid = cin.good();
    cout << "Liczba druga to: " << b << ". Wczytano? " << valid << "." << endl;
    cin.clear();
    cin.sync();
   
    cin >> c;
    valid = cin.good();
    cout << "Liczba trzecia to: " << c << ". Wczytano? " << valid << "." << endl;
    cin.clear();
    cin.sync();
   
    return 0;
}
P-149872
karambaHZP
» 2016-07-13 08:28:36
Nigdzie nie widziałem by ktoś definiował typu
bool
To wynika z treści zadania, której nie przeczytał @Dego93 (wskazówka). Niby jak przechować informacje o stanie strumienia?
P-149873
Dego93
» 2016-07-13 12:30:28
@karambaHZP

Przytaczam wskazówkę:
Informacje o poprawnym (albo niepoprawnym) wczytaniu danych należy przechować w dodatkowych zmiennych typu bool.

Wskazówkę przeczytałem dokładnie i jak widzisz w kodzie powyżej w zmiennej valid zapisuję stan o poprawnym (bądź nie) wczytaniu danych wynikiem czego jest 1 - true lub 0 - false.
P-149881
karambaHZP
» 2016-07-13 14:39:47
Wskazówkę przeczytałem dokładnie
Całej treści. Wskazówka mówi tylko o zastosowaniu zmiennej typu
bool
.
Wypisanie wszystkich wyników po wczytaniu wszystkich danych od użytkownika.

bool isFail = cin.fail();
 - przeciwieństwo metody good()
P-149893
Dego93
» 2016-07-13 15:03:47
Zakładam, że chodzi o to:

C/C++
#include <iostream>

using namespace std;

float a, b, c;
bool valid1, valid2, valid3;

int main()
{
   
    cin >> a;
    valid1 = cin.good(); cin.clear(); cin.sync();
    cin >> b;
    valid2 = cin.good(); cin.clear(); cin.sync();
    cin >> c;
    valid3 = cin.good(); cin.clear(); cin.sync();
   
    cout << "Liczba pierwsza to: " << a << ". Wczytano? " << valid1 << "." << endl;
    cout << "Liczba druga to: " << b << ". Wczytano? " << valid2 << "." << endl;
    cout << "Liczba trzecia to: " << c << ". Wczytano? " << valid3 << "." << endl;
   
    return 0;
}
P-149897
SumekQQ
» 2016-07-21 21:34:51
Witam, nie chce zakładac kolejnego tematu z lekcji 9, więc zapytam.
Mój kod źródłowy wygląda tak :

C/C++
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
    float a, b, c;
    bool aa, bb, cc;
   
    cout << "Podaj liczbe pierwsza" << endl;
    cin >> a; aa = cin.good(); cin.clear(); cin.ignore( 999, '\n' );
   
    cout << "Podaj liczbe druga" << endl;
    cin >> b; bb = cin.good(); cin.clear(); cin.ignore( 999, '\n' );
   
    cout << "Podaj liczbe trzecia" << endl;
    cin >> c; cc = cin.good(); cin.clear(); cin.ignore( 999, '\n' );
   
   
    cout << "Liczba pierwsza to: " << a << " Wczytano ?" << aa << endl;
    cout << "Liczba druga to: " << b << " Wczytano ?" << bb << endl;
    cout << "Liczba trzecia to: " << c << " Wczytano ?" << cc << endl;
   
   
    cin.get();
    cin.get();
    return 0;
}

Na CodeBlocks program dziala bez zarzutu, natomiast na MSViusalStudio dla drugiej liczby wartość nie wynosi 0 tylko np jakies -1.032131e+32.
Mógłby mi ktoś to wyjaśnić?
P-150193
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona