Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z prostym zadaniem


Rekomendowane odpowiedzi

Opublikowano

Witam dopiero zaczynam się uczyć C++ i mam problem z zadaniem:

Napisz program, który wczyta trzy liczby rzeczywiste, a na końcu programu je wszystkie wypisze. Zadbaj o to, by bufor strumienia wejściowego był za każdym razem czyszczony. Wynik końcowy powinien również zawierać informacje czy wczytanie danej liczby się powiodło.

Mam coś takiego, ale to zawsze wyświetla prawdę i nie mogę wymiślić niczego nowego :/

#include <iostream>

using namespace std;

int main()
{
	float a, b, c;
	bool czy_wczytano = cin.good();

	cout << "Podaj cyfry:\n";

	cout << "Pierwsza: ";
	cin >> a;
	cin.clear();
	cin.sync();

	cout << "\nDruga: ";
	cin >> b;
	cin.clear();
	cin.sync();

	cout << "\nTrzecia: ";
	cin >> c;
	cin.clear();
	cin.sync();

	cout << "\nLiczba pierwsza to: " << a << ". Wczytano? " << czy_wczytano << "."
		 << "\nLiczba druga to: " << b << ". Wczytano? " << czy_wczytano << "."
		 << "\nLiczba trzecia to: " << c << ". Wczytano? " << czy_wczytano
		 << ".\n\n\n\n";

	system("PAUSE");
}

http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Obsluga-strumienia-wejsciowego/12 tu jest ten dział.

Opublikowano

post-1399314-0-70167000-1434730465_thumb.png

 

Tam zmieniłem na int, ale juz jest normalnie ponieważ różne rzeczy można tu wpisać :D

 

A co do problemu to zawsze wyskakuje '1' .

Opublikowano

1 to true (prawda), 0- false (fałsz).

No tak ale ja miałem podać liczby rzeczywiste, a wpisałem 'w' więc powinno być 0 chyba :/

Opublikowano

gdy podajesz trzecią wpisz 'w' to zobaczysz, że wszędzie będzie 0. W złym miejscu zapisujesz dane o wpisaniu i w złym wypisujesz.

Opublikowano

Doszedłem do momentu w kursie gdzie są instrukcje if, i wykorzytanie ich jest chyba lepszym rozwiązaniem prawda ?

 

I jeszcze mnie nurtuje pytanie  dlaczego zamiast 'w' pojawiają cie cyfry ?

 

Okej zrobilem to za warunkach:

#include <iostream>

using namespace std;

int main()
{
	float a, b, c;
	bool a2, b2, c2;

	cout << "Podaj cyfry:\n";

///////////////////////////////////////////////////////////////////////
	cout << "Pierwsza: ";
	cin.clear();
	cin.sync();
	cin >> a;

	if (cin.good()) {
		a2 = 1;
	}
	else {
		a2 = 0;
	}

///////////////////////////////////////////////////////////////////////
	cout << "\nDruga: ";
	cin.clear();
	cin.sync();
	cin >> b;

	if (cin.good()) {
		b2 = 1;
	}
	else {
		b2 = 0;
	}

///////////////////////////////////////////////////////////////////////
	cout << "\nTrzecia: ";
	cin.clear();
	cin.sync();
	cin >> c;

	if (cin.good()) {
		c2 = 1;
	}
	else {
		c2 = 0;
	}

///////////////////////////////////////////////////////////////////////
	cout << "\nLiczba pierwsza = " << a << " Wczytano \?: " << a2 << "."
		<< "\nLiczba druga = " << b << " Wczytano \?: " << b2 << "."
		<< "\nLiczba trzecia = " << c << " Wczytano \?: " << c2 << "."
		<< "\n\n\n\n";

	system("PAUSE");
}

I wszystko działa, ale to mnie dalej nurtuje:

 

post-1399314-0-55366400-1434744079.png

 

Dlaczego 'w' nie wyświetla się poprawni tylko jako różne cyfry ? :)

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...