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

Taki tam noobski problem ;-;


Gość CapthaPL 4Ever

Rekomendowane odpowiedzi

Opublikowano

Hejo zaczynam z c++ i mam problem gdyż korzystam z kursu z http://cpp0x.pl/ i na 1 poziomie było zadanie aby zrobić program który pobiera 3 wartości czysci bufor sprawdza poprawność a nastepnie je wypisuje w konsoli i zrobiłem to lecz coś mnie nurtuje gdyż jeżeli dam  złą rzecz np w int dam powiedzmy jakąś literę to pokazuje mi sie jakiś ciąg liczb. Mój kod to :

#include <iostream>

#include <conio.h>
using namespace std;
int main()

{


int Zwykla;

int Rzeczywista;
char Znak;
 
cout << "Podaj liczbe naturalna" << endl;
 
cin >> Zwykla;
 
cout << "Brawo udalo sie" << cin.good() << endl;

cout << "Podales zla wartosc" << cin.fail() << endl;
 
cin.clear();

cin.sync();
 
cout << "podaj liczbe rzeczywista" << endl;
cin >> Rzeczywista;
cout << "Brawo udalo sie"<<cin.good()<<endl;

cout << "Cos zle zrobiles"<<cin.fail() << endl;
 
cin.clear();

cin.sync();
 
cout << "Podaj jakis ciag znakow" << endl;

 

cin >> Znak;

 

cout << "Brawo" << cin.good() << endl;

cout << "Cos ci nie wyszlo" << cin.fail() << endl;
 
cin.clear();

cin.sync();

 
cout << "Twoje wartosci to : " << Zwykla << " " << Rzeczywista << " " << Znak << endl;


getch();

}
 

probowalem to zrobic za pomoca "if" w taki sposób

#include <iostream>

#include <conio.h>
using namespace std;
 
int main()

{
int Zwykla;

int Rzeczywista;

char Znak;
 
cout << "Podaj liczbe naturalna" << endl;
 
cin >> Zwykla;
 
cout << "Brawo udalo sie" << cin.good() << endl;

cout << "Podales zla wartosc" << cin.fail() << endl;
 
cin.clear();

cin.sync();
 
cout << "podaj liczbe rzeczywista" << endl;
 
cin >> Rzeczywista;
 
cout << "Brawo udalo sie"<<cin.good()<<endl;

cout << "Cos zle zrobiles"<<cin.fail() << endl;
 
cin.clear();

cin.sync();
 
cout << "Podaj jakis ciag znakow" << endl;

 

cin >> Znak;

 

cout << "Brawo" << cin.good() << endl;

cout << "Cos ci nie wyszlo" << cin.fail() << endl;
 
cin.clear();

cin.sync();



if (Zwykla, Rzeczywista, Znak == cin.good())
  cout << "Twoje wartosci to : " << Zwykla << " " << Rzeczywista << " " << Znak << endl;

else

  cout << "Ktoras z twoich wartosci jest niepoprawna" << endl;
 


getch();

}

Zapewne to co zrobiłem w 2 przykładzie według was jest czymś głupim no ale cóż :D Próby błędy te sprawy. 

Czy jest na sposób który pojmę przy swoim poziomie wiedzy?

Opublikowano

Można to zrobić prostym ifem

 

if(cin.good())

{

cout << "Bleb le dobrze wpisane";

} else

{

cout << "Bleb le zle wpisane";

}

Opublikowano

Coś nie idzie gdyz pokazuje sie tylko że dobrze wpisane nawet jeżeli popełnie błąd.

Opublikowano

Coś nie idzie gdyz pokazuje sie tylko że dobrze wpisane nawet jeżeli popełnie błąd.

to daj typ zmiennej np unsigned int

Opublikowano

Gdzie dokładnie

//A tak wgl to cin.good w if będzie działac jeżeli się czyści bufor ?  (takie moje domysły)

// licze na odpowiedz. Rano sie pomęcze jeszcze z tym

Opublikowano

Gdzie dokładnie

//A tak wgl to cin.good w if będzie działac jeżeli się czyści bufor ?  (takie moje domysły)

// licze na odpowiedz. Rano sie pomęcze jeszcze z tym

Nie. clear() i sync() czyszczą bufor razem z flagami błędów(good(), fail()), sprawdzanie czy się powiodło musisz dać od razu po cin >>.

Opublikowano

Zadanie domowe
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. (źródło - cpp0x.pl)
 

 

Na szybko napisałem, zgodnie z wytycznymi podanymi w zadaniu domowych w tym kursie (u góry) ;)

 

 

#include <iostream>
 
using namespace std;
 
float rzecz_jeden, rzecz_dwa, rzecz_trzy;
 
int main()
{
    cout << "Pierwsza liczba (rzeczywista): ";
    cin >> rzecz_jeden;
 
    if (cin.good())
    {
        cout << "Pomyślnie wczytano! Podales liczbe: " << rzecz_jeden << endl;
        cout << endl;
    } else {
        cout << "Wczytanie niepomyslne!"<< endl;
        cout << endl;
    }
    cin.clear();
    cin.sync();
 
    cout << "Druga liczba (rzeczywista): ";
    cin >> rzecz_dwa;
 
    if (cin.good())
    {
        cout << "Pomyślnie wczytano! Podales liczbe: " << rzecz_dwa << endl;
        cout << endl;
    } else {
        cout << "Wczytanie niepomyslne!" << endl;
        cout << endl;
    }
    cin.clear();
    cin.sync();
 
    cout << "Trzecia liczba (rzeczywista): ";
    cin >> rzecz_trzy;
 
    if (cin.good())
    {
        cout << "Pomyślnie wczytano! Podales liczbe: " << rzecz_trzy << endl;
        cout << endl;
    } else {
        cout << "Wczytanie niepomyslne!"<< endl;
        cout << endl;
    }
    cin.clear();
    cin.sync();
 
 
    return 0;
}

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...