Skocz do zawartości
Astronom

[c++] Kłopot Z Filtrem Strumienia Danych

Rekomendowane odpowiedzi

Witam. Napisałem pewien program w c++, który no oblicza równanie kwadratowe. Powiem tak: działa, ale chce go ulepszyć.

 

Mechanizm programu:

pobiera 3 liczby typy double i wykonuje operacje na nich. Problem polega na tym że jak wpisuje znaki to program nie działa poprawnie. Oto screen co wyszło jak wpisuje abc :(

post___screen.bmp

potrzebuje aby ktoś napisał dla mnie jak założyć filtr na strumień. (chyba dobrze napisałem? :P)

proszę nie odsyłajcie mnie do jakieś dokumentacji w języku angielskim, bo cienko u mnie z tym językiem.

 

A oto prosty przykład, więc proszę na tym przykładzie mi zrobić, dziękuje

 

#include <iostream>#include <conio.h>using namespace std;int main(){	double a,b,c;	cout<<"podaj liczbe a: ";	cin>>a;	cout<<"podaj liczbe b: ";	cin>>b;	cout<<"podaj liczbe c: ";	cin>>c;	cout<<endl<<"twoje liczby to: "<<a<<" "<<b<<" "<<c<<endl;	getch();	return 0;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

po pobraniu porcji danych sprawdzaj stan strumienia przy uzyciu cin.good() lub cin.fail() (sa tez inne metody, ale te sa tutaj na miejscu), pierwsza z nich zwraca true gdy wszystko jest ok, druga gdy ustawiony jest bit bad lub fail. Po obsluzeniu bledu uzyj cin.clear() w celu zresetowania bitów stanu

 

//...cin >> zmienna;if (!cin.good()) {printf("\nBlad");cin.clear();}//...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dzięki za odpowiedź, ale niestety te rozwiązanie chyba nie pasuje do mojego programiku.

albo ja nie wiem, jak je wykorzystać. mianowicie chce aby po "rozpoznaniu" błędu, Program nie przechodził do kolejnego wiersza. Tylko prosił o podanie liczby jeszcze raz. Aż do skutku ;p

nie wiem jak mogę tutaj poprawnie zastosować pętle. Ponownie proszę o pomoc :)

 

 

//kod	double zmienna;	do	{	cout <<"Podaj zmienna: ";	cin >> zmienna;	} while (cin.good()==0);	cin.clear();//kod
po w pisaniu czegoś takiego i podaniu znaku zamiast liczby program wariuje. :blink:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#include <iostream>using namespace std;int main() {	double zmienna;	cout << "Podaj zmienną: ";	do {		if (cin.fail()) {			cin.clear();			while (cin.peek() != '\n')			cin.get();		}		cin >> zmienna;		if (cin.fail()) cout << "Błąd, to nie jest liczba. Podaj jeszcze raz zmienną: ";	} while (cin.fail());   	cout << endl << zmienna << endl;	return 0;}
Edytowane przez Dj_AnT

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...