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] Zadanie domowe cpp0x (kurs c++, dział Obsługa strumienia wejściowego)


Rekomendowane odpowiedzi

Opublikowano

Witam nie wiem jak rozwiązać zadanie
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.
Przykładowe dane wejściowe
Liczba pierwsza to: 13.3. Wczytano? 1.
Liczba druga to: 0. Wczytano? 0.
Liczba trzecia to: 33.22. Wczytano? 1.
Wskazówka
Informacje o poprawnym (albo niepoprawnym) wczytaniu danych należy przechować w dodatkowych zmiennych typu bool.

int main()
{
    int a;
    float b;
    float c;
    std::cout << "Podaj liczbe 1:";
    std::cin >> a;
    bool aczysukces = std::cout << "Wczytano? " << std::cin.good() << std::cin.fail() << std::endl;
    std::cin.clear();
    std::cin.sync();
 
    std::cout << "Podaj liczbe 2:";
    std::cin >> b;
    std::cout << "Wczytano?" << std::cin.good() << std::endl;
    std::cout << "Wczytano? " << std::cin.fail() << std::endl;
    std::cin.clear();
    std::cin.sync();
 
    std::cout << "Podaj liczbe 3:";
    std::cin >> c;
    std::cout << "Wczytano?" << std::cin.good() << std::endl;
    std::cout << "Wczytano? " << std::cin.fail() << std::endl;
    std::cin.clear();
    std::cin.sync();
 
    std::cout << "Liczba a =" << a << std::endl;
    std::cout << "Liczba b =" << b << std::endl;
    std::cout << "Liczba c =" << c << std::endl;
 
    return 0;
}

 



linijkę bool aczysukces = std::cout << "Wczytano? " << std::cin.good() << std::cin.fail() << std::endl;

próbowałem robić jakoś, ale mi nie wychodziło. Robiłem ok. 1h. Pokombinujcie coś. Dam + i 5 ;d
1391020896-U962219.png

'Możesz sobie być na innym poziomie niż pozostali, z którymi walczyłem, dla mnie to bez różnicy. I tak nakopie ci do dupy, bo to mój obowiązek. Tyle w tym temacie'

Opublikowano
bool aczysukces = std::cout << "Wczytano? " << std::cin.good() << std::cin.fail() << std::endl;

Zmiennej bool przechowującej tylko true/false próbujesz wcisnąć strumień? Totalnie źle. W ogóle nie wiem po co tam wcisnąłeś tą zmienną.

 

Jak już, to od razu do zmiennej bool przypisz wartość z metody good() lub fail(), tak:

bool dobrze = cin.good();
bool zle = cin.fail();


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano
{
	float a, b, c ;  //wczyta 3 liczby rzeczywiste
	bool aa, ab, ac; //informacje o poprawnym (albo niepoprawnym) wczytaniu danych należy przechowywać w 
                         //dodatkowych zmiennych typu bool (liczba mnoga, więc dałem też 3)

	std::cin >> a ;  
	aa = std::cin.good(); // do bool wchodzi 1 liczba (1 jeżeli wczytano, 0 jeżeli błąd)
	std::cin.clear();     // zadbaj o to, by bufor strumienia
	std::cin.sync();      // wejściowego był za każdym razem czyszczony

	std::cin >> b ;
	ab = std::cin.good();
	std::cin.clear();
	std::cin.sync();

	std::cin >> c ;
	ac = std::cin.good();
	std::cin.clear();
	std::cin.sync();

	std::cout << "Liczba pierwsza to: " << a << " Wczytano? " << aa << std::endl;
	std::cout << "Liczba druga to: " << b << " Wczytano? " << ab << std::endl;
	std::cout << "Liczba trzecia to: " << c << " Wczytano? " << ac << std::endl;
	return 0;
}

Zdaje się że w tym zadaniu chodziło o takie rozwiązanie (to chyba początki i nie było nic o funkcjach i tablicach?).

Opublikowano

Juz ten temat kiedys sie pojawil -> http://www.mpcforum.pl/topic/985865-problem-bool-zwraca-zawsze-zero/

 

#include <iostream>
using namespace std;
 
int main()
  {
   
   float liczb;

int pet=0;
   
   
	do
    {
      cout << "\nPodaj "<<1+pet<<" liczbe rzeczywista ";
      
	  if((cin>>liczb)&&(liczb)) cout<<"Podales liczbe: "<<liczb<<"\n";
  	  else cout<<"Wprowadzona wartosc to nie liczba rzeczywista \n"; 
    	 
      cin.clear();
      cin.sync(); 
      
      pet++;
    }while(pet!=3);
    
   
   return 0;
  }
Opublikowano

@UP

ale to już wyższa szkoła jazdy. Ja chcę swój poziom

1391020896-U962219.png

'Możesz sobie być na innym poziomie niż pozostali, z którymi walczyłem, dla mnie to bez różnicy. I tak nakopie ci do dupy, bo to mój obowiązek. Tyle w tym temacie'

Opublikowano

Grumpy o to właśnie chodziło :P dzięki

1391020896-U962219.png

'Możesz sobie być na innym poziomie niż pozostali, z którymi walczyłem, dla mnie to bez różnicy. I tak nakopie ci do dupy, bo to mój obowiązek. Tyle w tym temacie'

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...