ricardo83 Temat założony przez niniejszego użytkownika |
[XI. Tworzenie warunków złożonych if ... else] Problem z drugim ćwiczeniem » 2010-08-06 10:04:57 Witam Mam pytanie odnosnie cwiczenia w kursie 11.6.2 (Tworzenie warunków złożonych if ... else). Nalezy tam w pewnym momencie wprowadzic ilosc biletow do nabycia albo wcisnac literke "p" jesli rezygnujemy z zakupu biletow (autor kursu zaproponowal nawet ze "najlepiej gdyby sprawdzała czy została naciśnięta cyfra lub literka „p”"). Moje pytanie brzmi nastepujaco: czy mozna zadeklarowac jedna zmienna ktora bedzie przyjmowala albo liczbe biletow albo literke "p" zeby wrocic do menu? Jak ktos bedzie mial jakis pomysl to prosze o posta nizej :)
Pozdrawiam |
|
madmike44 |
» 2010-08-06 11:28:10 Najpierw pokaż, jak Ty to rozwiązałeś - wtedy możesz dostać wskazówki :) |
|
ricardo83 Temat założony przez niniejszego użytkownika |
» 2010-08-06 11:56:23 ja wlasnie nie potrafie poradzic sobie z tym problemem gdyz: 1. jak zadeklaruje jako int zmienna ktora ma wczytywac liczbe biletow ktore chcielibysmy kupic lub powrocic do menu glownego(czyli byc przygotowana ze moze sie w strumieniu pojawic literka "p" albo jakakolwiek inna), to nie bede mogl wpisac literki "p" gdyz program bedzie zachowywal sie w sposob nieoczekiwany (zapetli sie) 2. jesli zadeklaruje te zmienna jako char to przy wprowadzaniu cyfry (i sprawdzeniu ze wprowadzona wartosc jest cyfra) trzeba ja bedzie nastepnie przekonwertowac na typ int a otrzymana wartosc nie bedzie juz ta sama liczba ktora wpisywalismy, natomiast literke "p" ladnie wtedy program przyjmie. wiec zastanawiam sie jak zrobic zeby bylo mozliwe rozwiazanie tego przypadku na jednej zmiennej ? ja zrobilem to tak ale jeszcze nie dziala: char znak; int bilet; int bilet_1; const int LICZBA_BILETOW = 20; int licz_bil_1 = LICZBA_BILETOW, licz_bil_2 = LICZBA_BILETOW, licz_bil_3 = LICZBA_BILETOW, licz_bil_4 = LICZBA_BILETOW;
cout << "Kino Domownik zaprasza.\nDzisiejsza oferta to: \n" << "1. Bolek i Lolek\n" << "2. Seksmisja\n" << "3. Krzyzacy\n" << "4. Killer\n" << "z/Z Zakonczenie programu\n\n"
<< "Wybierz seans? "; cin >> znak;
while( znak != 'Z' && znak != 'z' ) { if( znak == '1' && licz_bil_1 > 0 ) { ta zmienna zastosowalem tak aby bylo mozliwe wejscie do petli bilet = LICZBA_BILETOW + 1; cout << "\nW puli zostalo " << licz_bil_1 << " biletow" << endl; cout << "Ile chcesz kupic biletow" << " na seans Bolek I Lolek p-powrot do menu\n"; cin >> bilet; if( isdigit( bilet ) ) { while( bilet > licz_bil_1 ) { if( bilet > licz_bil_1 ) cout << "Wybrales za duzo biletow!!!\n"; } licz_bil_1 = licz_bil_1 - bilet; } else cout << "Powrot do menu\n"; } else if( licz_bil_1 < 1 ) { cout << "brak biletow na ten seans\n"; }
jest to tylko fragment kodu ale najistotniejszy :) Pozdrawiam |
|
pekfos |
» 2010-08-06 12:07:34 #include <cctype> bool liczba( string a ) { for( int c = 0; c < a.length(); c++ ) if( !isdigit( a[ c ] ) { return false; } return true; }
string b; getline( cin, b ); if( liczba( b ) ) cout << "kupileś " << b << " biletów"; else cout << "anulowałes zakup biletu"
|
|
ricardo83 Temat założony przez niniejszego użytkownika |
» 2010-08-06 12:40:48 dzieki pekfos za rozwiazanie ale czy nie da sie tego zrobic inaczej, prosciej? wykorzystujac podstawowe typy zmiennych int,char gdyz przerabiam kurs od poczatku i autor pewnie zalozyl ze da sie to zrobic wykorzystujac poznane wczesniej techniki :)
Pozdrawiam
|
|
ison |
» 2010-08-06 12:48:48 możesz wczytać stringa, sprawdzić czy jest to literka 'p' jesli tak to przerywasz w innym wypadku konwertujesz na inta funkcja konwertująca cstringa do inta: int str2int( char liczba[] ) { int liczba2; sscanf( liczba, "%d", & liczba2 ); return liczba2; }
przykład użycia: int main() { char wartosc[ 250 ]; scanf( "%s", wartosc ); if( !strcmp( "p", wartosc ) ) printf( "Koniec\n" ); else { int bilety = str2int( wartosc ); } }
|
|
ricardo83 Temat założony przez niniejszego użytkownika |
» 2010-08-06 13:32:27 podziekowania dla ison gdyz to wlasnie o to rozwiazanie mi chodzilo :) podziekowania rowniez dla pekfos za pomoc ale jak dla mnie rozwiazanie ktore przedstawiles jest zbyt skomplikowane :(
Pozdrawiam |
|
Elaine |
» 2010-08-06 16:43:30 podziekowania rowniez dla pekfos za pomoc ale jak dla mnie rozwiazanie ktore przedstawiles jest zbyt skomplikowane |
Normalka, jego kody takie są, po co zrobić coś prosto, skoro można zamotać, dać dziwne nazwy i przy okazji zrobić wszystko tak, że nie kompiluje się/nie działa poprawnie (niepotrzebne skreślić)? ;> |
|
« 1 » 2 |