[C++] Wczytywanie i wypisywanie trzech liczb

pknagato2
Użytkownik
Użytkownik
Posty: 32
Rejestracja: 7 lut 2013, o 16:49
Płeć: Mężczyzna
Lokalizacja: Gostyń
Podziękował: 8 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: pknagato2 »

witam, mam do napisania program , w gruncie rzeczy bardzo prosty, podać 3 liczby rzeczywiste, sprawdzić, czy prawidłowo się wczytały , wyczyścić strumień wejścia oraz wyświetlić wszystko.
program, który napisałem wygląda tak :

Kod: Zaznacz cały

#include <iostream>
int main()
{
    int a;
    int b;
    int c;
    bool f;
    std::cout<< "podaj liczbe:
 a ";
    std::cin>> a;
    std::cout << "Czy udalo sie wczytac? " << std::cin.good() << std::endl;
    std::cout << "Czy cos nawalilo? " << std::cin.fail() << std::endl;
    std::cin.clear();
    std::cin.sync();
    std::cout << "b ";
    std::cin>> b;
    std::cout<< "Czy udalo sie wczytac? " << std::cin.good() << std::endl;
    std::cout<< "czy cos nawalilo "<<std::cin.fail()<<std::endl;
    std::cin.clear();
    std::cin.sync();
    std::cout << "c ";
    std::cin>> c;
    std::cout<< "Czy udalo sie wczytac? " << std::cin.good() << std::endl;
    std::cout<< "czy cos nawalilo "<<std::cin.fail()<<std::endl;
    std::cin.clear();
    std::cin.sync();
    std::cout << "Liczba pierwsza to: " <<a << " wczytano?? "<< std::endl;
    std::cout << "Liczba druga to: " <<b << " wczytano?? " << std::endl;
    std::cout << "Liczba trzecia to: " <<c << " wczytano?? " << std::endl;
}
dostałem wskazówkę, że aby wyświetlić wynik (wczytano?) muszę użyć zmiennej bool ale nie wiem w jaki sposób :<
czy mógłby mi ktoś to wytłumaczyć ?
Ostatnio zmieniony 18 maja 2013, o 13:00 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Awatar użytkownika
radwaw
Użytkownik
Użytkownik
Posty: 72
Rejestracja: 6 mar 2013, o 19:13
Płeć: Mężczyzna
Lokalizacja: Warszawa
Pomógł: 7 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: radwaw »

To zmienna typu prawda fałsz obsługa nie różni się wiele od zmiennej całkowitej.

Przyjmuje wartości 1 lub o (1 to prawda, 0 fałsz)

np.

Kod: Zaznacz cały

bool a= false;
bool b=1;
zapamiętak parametry cin.good() i "zaifuj" wyjście jak sobie żyszysz.
pknagato2
Użytkownik
Użytkownik
Posty: 32
Rejestracja: 7 lut 2013, o 16:49
Płeć: Mężczyzna
Lokalizacja: Gostyń
Podziękował: 8 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: pknagato2 »

no właśnie tylko nie wiem jak wstawić to czy wczytało, czy nie do ostatniej części programu, gdzie pokazuje albo 0 albo 1 .
Awatar użytkownika
radwaw
Użytkownik
Użytkownik
Posty: 72
Rejestracja: 6 mar 2013, o 19:13
Płeć: Mężczyzna
Lokalizacja: Warszawa
Pomógł: 7 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: radwaw »

Kod: Zaznacz cały

bool a;
a=cin.good();
w ten deseń
arcan
Użytkownik
Użytkownik
Posty: 106
Rejestracja: 17 gru 2012, o 23:56
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 7 razy
Pomógł: 31 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: arcan »

Ale przecież

Kod: Zaznacz cały

bool a;
a=cin.good();
if(a)
to to samo co

Kod: Zaznacz cały

if(cin.good())
Tu bardziej chodziło o zapamiętanie 3 zmiennych bool, żeby na końcu zweryfikować czy dobrze wczytano te liczby.
O to chodziło?

Kod: Zaznacz cały

#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    bool wa,wb,wc;
    cout<< "podaj liczbe:
 a ";
    cin>> a;
    cout << "Czy udalo sie wczytac? ";
	if(cin.good())
	{
		wa=1;
		cout<<"TAK"<<endl;
	}
	else
	{
		wa=0;
		cout << "NIE" << endl;
	}
    cout << "Czy cos nawalilo? ";
	if(cin.fail()) cout<<"TAK"<<endl;
	else cout << "NIE" << endl;
    cin.clear();
    cin.sync();
    cout << "b ";
    cin>> b;
    cout << "Czy udalo sie wczytac? ";
	if(cin.good())
	{
		wb=1;
		cout<<"TAK"<<endl;
	}
	else
	{
		wb=0;
		cout << "NIE" << endl;
	}
	cout << "Czy cos nawalilo? ";
	if(cin.fail()) cout<<"TAK"<<endl;
	else cout << "NIE" << endl;
	cin.clear();
    cin.sync();
    cout << "c ";
    cin>> c;
    cout << "Czy udalo sie wczytac? ";
	if(cin.good())
	{
		wc=1;
		cout<<"TAK"<<endl;
	}
	else
	{
		wc=0;
		cout << "NIE" << endl;
	}
	cout << "Czy cos nawalilo? ";
	if(cin.fail()) cout<<"TAK"<<endl;
	else cout << "NIE" << endl;
	cin.clear();
    cin.sync();
    cout << "Liczba pierwsza to: " <<a << " wczytano?? "; if(wa)cout<<"TAK"<<endl; else cout<<"NIE"<<endl;
    cout << "Liczba druga to: " <<b << " wczytano?? "; if(wb)cout<<"TAK"<<endl; else cout<<"NIE"<<endl;
    cout << "Liczba trzecia to: " <<c << " wczytano?? "; if(wc)cout<<"TAK"<<endl; else cout<<"NIE"<<endl;
    cin.ignore();
    getchar();
    return 0;
}
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: MichalPWr »

arcan, Informacje na temat błędów wyświetlasz za pomocą standardowego strumienia wyjścia błędu.

Źle

Kod: Zaznacz cały

std::cout << "błąd: jakiś tam" << std::endl;
Dobrze

Kod: Zaznacz cały

std::cerr << "błąd: jakiś tam" << std::endl;
Poza tym to jest C++ tutaj robimy tak, dbajmy o standard C++

Kod: Zaznacz cały

bool a;
a = true; 
W ANSI C musieliśmy robić tak, oczywiście dało się to obejść za pomocą typu wyliczeniowego

Kod: Zaznacz cały

bool a;
a = 1; 
Użyj pętli do sprawdzania czy podana przez Ciebie/użytkownika liczba została wczytana poprawnie, bo obecnie wygląda to nietęgo.
Wiesz do czego tak na prawdę służy i co robi cos.fail() cos.good() cos.clear() oraz cos.ignore()?
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10219
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2361 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: Dasio11 »

MichalPWr pisze:W ANSI C musieliśmy robić tak, oczywiście dało się to obejść za pomocą typu wyliczeniowego

Kod: Zaznacz cały

bool a;
a = 1; 
W ANSI C nie ma typu bool, chyba że jakiś dorobiony w bibliotekach.
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: MichalPWr »

Dasio11, Jest, tylko należy dołączyć bibliotekę <stdbool.h>

A za pomocą czegoś takiego

Kod: Zaznacz cały

typedef enum {TRUE = 1, FALSE = 0} bool;
Możemy w C pisać tak

Kod: Zaznacz cały

bool w
w = TRUE /* w ten sposób podstawimy przypiszemy 1 do w */
Dlaczego pisze się dużymi literami? Znowu dbamy o standard. W standardzie ANSI C jest napisane, że wszelkie stałe piszemy z dużych liter. Oczywiście jak napiszemy z małej to nic się nie stanie.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: Afish »

MichalPWr pisze:Dasio11, Jest, tylko należy dołączyć bibliotekę <stdbool.h> :wink:
Nie ma, ten nagłówek jest dopiero od C99, wcześniej były to niestandardowe rozszerzenia kompilatorów.
pknagato2
Użytkownik
Użytkownik
Posty: 32
Rejestracja: 7 lut 2013, o 16:49
Płeć: Mężczyzna
Lokalizacja: Gostyń
Podziękował: 8 razy

[C++] Wczytywanie i wypisywanie trzech liczb

Post autor: pknagato2 »

dzięki wszystkim za pomoc, jako, że dopiero się uczę c++ to proste rozwiązanie z zastosowaniem if/else mi wystarczyło... jeszcze raz dzięki.
ODPOWIEDZ