Wyświetlanie int z zerami
Ostatnio zmodyfikowano 2015-04-06 17:56
Glazus |
» 2015-04-04 11:39:39 Ale wtedy "uszytkownik" będzie mógł wpisać "blablaktotoczytatentrąba" i ci wyświetli to samo... |
Chyba że sprawdzisz, czy wprowadzana dana jest poprawna. while( cin >> tmp ) { bool ok = true; for( int i = 0; i < tmp.length(); i++ ) { if( !( tmp[ i ] > 47 && tmp[ i ] < 58 ) ) { ok = false; break; } } if( ok ) break; } |
|
Brunon3 |
» 2015-04-04 11:43:09 @up: A nie lepiej najpierw wczytywać liczbę do int i sprawdzać czy jest prawidłowa przez cin.good() cin.fail() , a następnie kopiować tego int 'a do std::string i na nim operować? Wbrew pozorom mniej kodu. -BD. |
|
Glazus |
» 2015-04-04 12:03:00 Autor chce, by po wpisaniu przez użytkownika 00001 zmienna przechowywała 00001 , a po wpisaniu 001 przechowywała 001 . W jaki sposób chcesz to zapewnić przyjmując inta? |
|
Brunon3 |
» 2015-04-04 12:06:07 @up: Do int'a w "czystej" postaci czyli "1". Następnie za pomocą cin.good() sprawdzam czy to na pewno liczba, a potem kopiuję do string'a i wykonuję dalsze operacje (zera na początku). Ilość zer które dał użytkownik mogą być przechowywane w osobnym int'cie...
Chociaż po namyśle Twój pomysł może się okazać lepszy. :)
-BD. |
|
michal11 |
» 2015-04-04 13:24:21 Jak chcesz sprawdzać ile zer wpisał użytkownik jeżeli wczytujesz je do inta ? |
|
Brunon3 |
» 2015-04-04 13:25:50 No właśnie... Trzeba by było wczytywać do string'a a następnie kopiować do następnego i jeszcze liczyć zera... Nie, naprawdę, Twój sposób jest lepszy. ;) Sorry za offtop.
-BD. |
|
C-Objective |
» 2015-04-04 13:38:48 Hmm... Tak się trochę nad tym nieefektywnym kodem zastanawiam: Metoda nie zadziała prawidłowo na 10, ale łatwo to naprawić #include <conio.h> #include <istream> #include <string> const string cyfry[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" }; int main() { std::string liczba; std::cin >> liczba; for( int i = 0; i > liczba.length(); i++ ) { if( liczba[ i ] == "0" || liczba[ i ] == "1" || liczba[ i ] == "2" || liczba[ i ] == "3" || liczba[ i ] == "4" || liczba[ i ] == "5" || liczba[ i ] == "6" || liczba[ i ] == "7" || liczba[ i ] == "8" || liczba[ i ] == "9" ) else } int zera = 0; for( int i2; i2 > liczba.length(); i2++ ) if( liczba[ i ] == "0" ) zera++; int cyfra = atoi( liczba.c_str() ); return 0; } |
|
michal11 |
» 2015-04-04 16:01:06 Wywal tego ifa bo oczy bolą. Przede wszystkim masz funkcję isdigit/isalpha, jeżeli nie chcesz z nich skorzystać to lepszym rozwiązaniem będzie użycie twojej globalnej tablicy zamiast pojedyncze sprawdzanie. Reszta wygląda ok
Edit. Jednak nie ok, ostatni for jest zły. Nie inicjujesz zerem i zła nazwa |
|
1 « 2 » 3 |