Znak i liczba podawana w jednym strumieniu wejściowym.
Ostatnio zmodyfikowano 2011-09-06 23:07
Krump Temat założony przez niniejszego użytkownika |
Znak i liczba podawana w jednym strumieniu wejściowym. » 2011-09-04 00:12:48 Cześć, zastanawiałem się ostatnio jak zrobić pewien myk. Kombinowałem sam na różne sposoby ale, zawsze coś nie wychodziło, choć koncepcja była dobra i logiczna. o co chodzi już mówię. Załóżmy, że mamy taka sobie funkcję: double a, wynik; int i; do { i++; cout << "Podaj " << i << " składnik: "; cin >> a; wynik = wynik + a; } while( a != 0 );
i = 0; wynik_dzialania( wynik );
Jak zmienić ją, aby np po wpisaniu Koniec zamiast 0 zakończyło pętle. Oczywiście trzeba zawojować z char[] , ale ja nie mam serca do tego typu zmiennych i nie mogę nic przez to wykombinować. Macie pomysł, jak te cin dostosować, aby po wpisaniu albo liczby albo słowa Koniec funkcja robiła co potrzeba? |
|
malan |
» 2011-09-04 02:14:54 int n;
std::cin >> n;
if( std::cin.fail() ) { } |
|
Krump Temat założony przez niniejszego użytkownika |
» 2011-09-04 13:11:09 To też był jeden z moich pomysłów, ale nie wiem jak skonwertować w tym przypadku aby tylko na słowo Koniec podliczało, a na inne, podawało Błędna komenda. ;/
PS. Sorry, że nie podałem w cytacie wcześniej, ale zapomniałem komendy xD |
|
malan |
» 2011-09-04 13:43:16 std::string number;
std::cin >> number;
if( isNumber( number ) ) { int n = string2Int( number ); } else { if( number == "koniec" ) { } } |
|
Krump Temat założony przez niniejszego użytkownika |
» 2011-09-04 14:34:21 Dostosowałem to do swojej funkcji, ale jest problem ze string... Otóż, gdy nie dodałem biblioteki To wyskakuje taki błąd: 1>test.cpp(56): error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion) 1> D:\Programy\Visula C++\VC\include\istream(1053): could be 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &&,signed char *)'
A gdy ja dodałem, to wyskakują takie błędy: 1>test.cpp(58): error C3861: 'isx': identifier not found 1>test.cpp(60): error C3861: 'string2Int': identifier not found 1>test.cpp(66): error C2181: illegal else without matching if 1>test.cpp(73): error C2451: conditional expression of type 'std::string' is illegal
|
|
pekfos |
» 2011-09-04 15:41:33 pokaż kod. Napisałeś funkcje string2Int() itd? |
|
Krump Temat założony przez niniejszego użytkownika |
» 2011-09-04 16:59:44 case 1: { cout << endl << "Aby zakończyć wpisz \"Koniec\"." << endl << endl << "\tDodawanie:" << endl << endl; do { i++; cout << "Podaj " << i << " składnik: "; string x; cin >> x; if( isNumber( x ) ) { int n = string2Int( x ); wynik = wynik + n; } else { if( x == "Koniec" || x == "koniec" || x == "kOniec" || x == "KONIEC" || x == "kONIEC" ) else { cout << "Błędna komenda."; x == false; } } } while( x ); i = 0; wynik_dzialania( wynik ); break; }
|
|
pekfos |
» 2011-09-04 17:17:45 pokaż kod funkcji isNumber() i string2Int() |
|
« 1 » 2 3 |