Problem z ćwiczeniem 12.6
Ostatnio zmodyfikowano 2010-05-03 22:02
Comandoraf Temat założony przez niniejszego użytkownika |
Problem z ćwiczeniem 12.6 » 2010-05-03 20:01:19 Mam taki probelm ;] Napisałem programik taki jak w ćwiczeniu 12.6 (w kursie). Nie wiem jednak co zrobić, żeby program sprawdzał, czy wpisany znak jest liczbą. Chciałem iść na skróty i po prostu dałem, żeby wyświetlał zdanie : "Nie ma takiej opcji" jeśli wprowadzony znak nie mieści się w zakresie 1-5. Niestety działa to tylko w połowie. O ile wpisuję liczbę to normalnie wyskakuje wiadomość i program prosi o ponowne wpisanie komendy. Jeśli natomiast jest to litera albo jakiś znak np. '!' program świruje i, owszem wyświetla informacje, że nie ma takiej opcji, ale nie prosi o ponowne podanie komendy tylko przeskakuje do ostatniego wyboru w switch (5) czyli wyłącza program. Zresztą sami sprawdźcie: #include <iostream> #include <conio.h> #include "ddtconsole.h" #include <ctime> int main() { using namespace std; using namespace ddt::console; int kolor = 11; char tab1[ 8 ][ 6 ][ 200 ] = { { "Co wybierasz szefie?" }, { { "Administrowanie forum DDT:\n" }, { "[1]. Czytaj logi\t" }, { "[3]. Lista oczekujacych prac\n" }, { "[2]. Usun temat\t" }, { "[4]. Pauza\n\t" }, { "[5]. Koniec" } }, { { "16 Styczen 2008 00:01 - atak SYN flooding IP 99.99.99.1\n" }, { "20 maj 2008 14:13 - uzytkownik Macius700 blad logowania\n" }, { "31 lipiec 2008 20:09 - aktualizacja Kursu Allegro\n" }, { "5 sierpien 2008 17:29 - zarejestrowal sie uzytkownik Mapet\n" } }, { { "1. GroupId = 191\t" }, { "2. GroupId = 163\t" }, { "3. GroupId = 671\n" } }, { { "1. Dokumentacja." }, { "2. Artykuly." }, { "3.Dzial Pliki." }, { "4.Sygnatury zamkniecia by Dante" } }, { { "Twoja przerwa wyniesie<w sekundach>: " }, { "Szefie zrob sobie przerwe, ile potrzebujesz minut?" }, { "Niestety Twoja przerwa juz minela czas do roboty ; )" } }, { "Nie ma takiej opcji, sprobuj ponownie." }, { { "Aplikacja zakonczy dzialanie za <sek>" }, { "Koniec na dzisiaj do jutra!" } }, }; int wybor; float minuty; gotoxy( 25, 1 ); cout << tab1[ 1 ][ 0 ]; textcolor( kolor ); gotoxy( 20, 2 ); cout << tab1[ 1 ][ 1 ]; gotoxy( 45, 2 ); cout << tab1[ 1 ][ 2 ]; gotoxy( 20, 3 ); cout << tab1[ 1 ][ 3 ]; gotoxy( 45, 3 ); cout << tab1[ 1 ][ 4 ]; gotoxy( 45, 4 ); cout << tab1[ 1 ][ 5 ] << endl; do { cout << tab1[ 0 ][ 0 ]; cin >> wybor; switch( wybor ) { case 1: cout << tab1[ 2 ][ 0 ] << tab1[ 2 ][ 1 ] << tab1[ 2 ][ 2 ] << tab1[ 2 ][ 3 ] << endl; break; case 2: cout << tab1[ 3 ][ 0 ] << tab1[ 3 ][ 1 ] << tab1[ 3 ][ 2 ] << endl; break; case 3: cout << tab1[ 4 ][ 0 ] << tab1[ 4 ][ 1 ] << tab1[ 4 ][ 2 ] << tab1[ 4 ][ 3 ] << endl; break; case 4: { cout << tab1[ 5 ][ 1 ]; ( cin >> minuty ).get(); clock_t koniec = int( minuty * 60 ) * CLOCKS_PER_SEC, start = clock(); cout << tab1[ 5 ][ 0 ] << minuty * 60 << endl; while( clock() - start < koniec ) ; cout << tab1[ 5 ][ 2 ] << endl; } break; case 5: cout << tab1[ 7 ][ 1 ] << endl; for( int i = 5; i > 0; i-- ) { clock_t start = clock(), koniec = 1 * CLOCKS_PER_SEC; cout << tab1[ 7 ][ 0 ] << i << endl; while( clock() - start < koniec ); } break; default: cout << tab1[ 6 ][ 0 ] << endl; } if( wybor == 5 ) { clrscr(); break; } } while( wybor = 5 ); return( 0 ); }
No więc jeśli możecie to powiedzcie jak to zrobić, żeby działało tak jak powinno :D i nurtuje mnie pytanie: dlaczego program po wpisaniu litery wykonuje polecenie 5? (wyłącz program) Tego to już w ogóle nie rozumię. W przypadku cyfr działa normalnie. Z góry dziękuję za pomoc |
|
DejaVu |
» 2010-05-03 20:18:41 Niedawno dawałem rozwiązanie problemu - poczytaj ostatnie tematy na forum. /edit: Cóż... w temacie nawet jest ten sam numer ćwiczenia... http://forum.ddt.pl/?Tid=2338 |
|
Comandoraf Temat założony przez niniejszego użytkownika |
» 2010-05-03 21:07:56 Wprowadziłem poprawki tak, że mój program jest teraz praktycznie taki sam jak użytkownika Minor ;/ i mam ten sam problem co On. Jak wpisuje wielocyforową liczbe to jak sie za czyna od 1,2,3,4 lub 5 to wyswietla dana opcje. A wpatruje sie w Twój post od pół godziny i nie wiem co mam z nim zrobić ;/ mógłbyś trochę jaśniej?? |
|
DejaVu |
» 2010-05-03 22:02:53 Napisz prosty program w którym będzie występował ten kod, przetestuj i spróbuj zrozumieć. |
|
« 1 » |