szuban Temat założony przez niniejszego użytkownika |
Problem z zadaniem domowym rodział 9 » 2014-07-24 13:31:44 Witam, mam problem z odpowiednim wyjściem danych (korzystam z mac osx dlatego zamiast cin.sync(); używam cin.ignore( 1000, '\n' );) Otóż mój kod wygląda tak: #include <cstdio> #include <iostream> using namespace std;
int main() { double a, b, c; bool d, e, f; cout << "podaj pierwsza liczbe: "; cin >> a; d = cin.good(); cin.clear(); cin.ignore( 1000, '\n' ); cout << "podaj druga liczbe: "; cin >> b; e = cin.good(); cin.clear(); cin.ignore( 1000, '\n' ); cout << "podaj trzecia liczbe: "; cin >> c; f = cin.good(); cin.clear(); cin.ignore( 1000, '\n' ); cout << "liczba pierwsza to: " << a << " wczytano? " << d << "." << endl; cout << "liczba druga to: " << b << " wczytano? " << e << "." << endl; cout << "liczba trzecia to: " << c << " wczytano? " << f << "." << endl; return 0; }
Wszystko gra tylko nie mogę zrobić tak, aby przy wprowadzeniu liczby nr 3 "33.22nie" wyświetlało się 33.22. Fraza 33.22 wyświetla się gdy wprowadzę "33.22 nie" (ze spacją) a w instrukcji do zadania jest napisane, aby te dane wejściowe były bez spacji, cytat: Przykładowe dane wejściowe 13.3 tak 123 33.22nie Proszę o pomoc. |
|
Moorfox |
» 2014-07-24 16:52:42 Nie wiem czy dobrze rozumiem o co ci chodzi, ale jesli jest tak jak mysle to musisz wczytywac string np. Po tym funkcja ktora rozdzieli ci czesc w ktorej znajduje sie char-liczby i char-znaki(jakkolwiek bezsensownie to brzmi) Po tym przekonwertowac char-liczbowy na liczbowy |
|
szuban Temat założony przez niniejszego użytkownika |
nie rozumiem » 2014-07-24 18:10:05 to jak mam rodzielic cyfry od znakow ASCII? Bo niezbyt zrozumiałem |
|
pekfos |
» 2014-07-24 19:01:42 tylko nie mogę zrobić tak, aby przy wprowadzeniu liczby nr 3 "33.22nie" wyświetlało się 33.22. |
A co się wyświetla? |
|
Moorfox |
» 2014-07-24 20:52:24 char str[] = "32.22TAK" static char tab[ 9 ]; int a = 0; for( int i = 0; str[ i ]; i++ ) { if(( str[ i ] >= '0' && str[ i ] <= '9' ) || str[ i ] == '.' ) { tab[ a ] = str[ i ]; a++; } } a = atoi( tab );
Naprzyklad taka funkcja, nie znam niestety latwiejszych rozwiazan xd |
|
pekfos |
» 2014-07-24 21:20:18 Buffer overflow. A całość można zapisać 2, 3 razy krócej. Po co w ogóle tak kombinować? |
|
Moorfox |
» 2014-07-24 21:29:30 gdzie ty widzisz buffer overflow i pokaz wersje 3 razy krocej bo chyba o to mu chodzi |
|
pekfos |
» 2014-07-24 21:46:10 Jak podajesz rozwiązanie, to pisz tak, by działało dla normalnych danych, a nie dla wbitych do programu (dla tych też nie działa, btw), a da się podać takie dane, że program się złoży. Sam się domyśl jak, jest jedna opcja. I wątpię, że o to chodzi, a nawet jeśli, to wtedy podam ;) |
|
« 1 » 2 |