zaVIstic Temat założony przez niniejszego użytkownika |
Jaka biblioteka do if( Key == ',') Key = '.'; » 2012-11-09 20:43:53 Cześć. W moim małym programie jedyny problem sprawia fakt, że gdy wpisuje zmiennoprzecinkowa i zamiast kropki użyje przecinka (np. zamiast 1.0 wpisze 1,0) to cały program mi się 'psuje'. Znalazłem gdzieś w necie, że wystarczy if( Key == ',') Key = '.'; Tak też wpisałem w swój program, ale : " 'key' was not declared in this scope " Domyślam się, że to przez to, że tej komendy nie ma w jedynej bibliotece jakiej używam, czyli #include <iostream> Moje pytanie: Jakiej biblioteki powinienem użyć? A może są jakieś inne metody, by przecinek zamieniać w kropkę? Z góry dziękuje za pomoc :) |
|
Mrovqa |
» 2012-11-09 21:13:17 Nie trzeba dodawać żadnej nowej biblioteki, wystarczy zdefiniować zmienną Key: char Key; cin >> Key; if( Key == ',' ) Key = '.';
cout << Key;
Widzę, iż jeszcze długa droga przed Tobą. |
|
zaVIstic Temat założony przez niniejszego użytkownika |
» 2012-11-09 21:18:43 Sęk w tym, że mój strumień wejściowy (cin) jest typu double, nie char. Jeśli nie wiesz o co mi chodzi, mogę wstawić kod. Tak przy okazji.. Co zrobić żeby mi składnie podkreśliło w poniższym kodzie? ... :P Dobra zamieszczam kod. Sami możecie sprawdzić co stanie się, jeśli napiszemy np. 0,1 zamiast 0.1 :)
#include <iostream> #include <stdlib.h> using namespace std; double automat( string produkt );
int wybor; double reszta; double wynik; double zlotowki; static double licznik;
const double z1 = 1.00; const double z2 = 2.00; const double z5 = 5.00;
const double g1 = 0.10; const double g2 = 0.20; const double g5 = 0.50;
string cola( "Cola" ); string fanta( "Fanta" );
int main() { cout << "---AUTOMAT DO NAPOJOW---\n"; cout << " ---UWAGA!!!---\nPamietaj, ze wrzucajac grosze wpisujesz kropke, nie przecinek!\nnp. 0.1\n"; cout << "Przyjmuje nominaly o wartosci: 1zl, 2zl, 5zl, 0.50zl, 0.20zl, 0.10zl\n"; cout << "-------CENNIK------\n"; cout << " #1 Cola 2,00zl\n #2 Fanta 5,00zl\n"; cout << "-------------------\n"; cout << "Wybierz co chcesz kupic\n"; cout << "\n #"; cin >> wybor; switch( wybor ) { case 1: { wynik = 2, 00; automat( cola ); break; } case 2: { wynik = 5, 00; automat( fanta ); break; } default: { cout << "Nie ma produktu o takim numerze!!!"; } } system( "pause" ); }
double automat( string produkt ) { cout << "Wrzuc pieniadze ( W zlotowkach!\n [ 10 groszy = 0.1 ] ): "; do { cin >> zlotowki; if( zlotowki == ',' ) zlotowki = '.'; if( zlotowki != z1 && zlotowki != z2 && zlotowki != z5 && zlotowki != g1 && zlotowki != g2 && zlotowki != g5 ) { cout << "Takich wartosci nie przyjmujemy!\n"; continue; } else { licznik = licznik + zlotowki; cout << "Wrzuciles juz: " << licznik << "zl" << endl; } } while( licznik != wynik && licznik < wynik ); if( licznik == wynik ) { cout << "Prosze bardzo, oto Twoja " << produkt << endl; } else if( licznik > wynik ) { reszta = licznik - wynik; cout << "Prosze bardzo, oto Twoja " << produkt << endl; cout << "Oddaje reszte: " << reszta << "zl."; } }
|
|
cyklopek11 |
» 2012-11-09 21:31:53 A taki motyw. Więc w kodzie zmienne zmiennoprzecinkowe musisz pisać z kropką - nic nie poradzisz na to. Ale żeby wprowadzać do strumienia liczby zmiennoprzecinkowe z kropką lub z przecinkiem to możesz: std::string zlotowki;
...dalej w main cin >> zlotowki;
i napisze sobie funkcję która będzie przerabiać std::string na double akceptując zarówno przecinek jak i kropkę jako znak dziesiętny to uzyskasz dokładnie to co chcesz :-) |
|
zaVIstic Temat założony przez niniejszego użytkownika |
» 2012-11-09 21:36:41 Nie, nie o to chodzi.. Zauważ - w moim programie jest moment w którym 'wrzucasz monetę' cin >> zlotowki; gdzie zlotowki są typu double double zlotowki; zeby więc uzyskać grosze muszę wpisać 0.1 jeśli natomiast ktoś się pomyli i wpiszę 0,1 to sam zobacz co się dzieje : http://photoupload.pl/RuYTeraz rozumiesz? Co z tym zrobic? Nie chodzi o mnie, tylko o to, żeby program zawsze dobrze działał :).. Jeśli ktoś przez niewiedzę by wpisał , zamiast . to chciałem, żeby program sam go poprawił i zamienił , na . No to jak się nie da no to nie ma rady, pozostaje więc ostrzeżenie C stringiem, zeby uzywac kropek! Dzięki za wszystko, pozdrawiam! :) Aha i tak.. jeszcze długa droga przede mną, wiem. Dobra, dzięki wszystkim, zamykam! :) Cyklopek - na pewno spróbuje to zrobić tak jak mówisz, dzięki wielkie :) |
|
Mrovqa |
» 2012-11-09 21:45:31 Jeśli jednak tak się nie da, no to trudno :) |
Napisać da się wszystko, takie sprawdzanie też. W Twoim przypadku nie byłoby wygodniej przy wpisywaniu liczby napisać odpowiednią adnotację dla użytkownika? |
|
zaVIstic Temat założony przez niniejszego użytkownika |
» 2012-11-09 21:46:50 Takowa adnotacja była tam od początku ;).. Po prostu zastanawiałem się, czy na moim poziomie da się coś z tym zrobić. Spokojnie :) |
|
cyklopek11 |
» 2012-11-09 21:48:37 Jeśli napiszesz tak: std::string zlotowki;
...dalej w main cin >> zlotowki;
i napisze sobie funkcję która będzie przerabiać std::string na double akceptując zarówno przecinek jak i kropkę jako znak dziesiętny to uzyskasz dokładnie to co chcesz :-) |
|
« 1 » |