pytanie o sposoby wprowadzania danych
Ostatnio zmodyfikowano 2008-12-27 18:45
pekfos Temat założony przez niniejszego użytkownika |
» 2008-12-27 16:12:56 działa :) teraz muszę się dowiedzieć co robią te cin.peek() cin.ignore() i inne :) |
|
setless |
» 2008-12-27 16:19:50 Nie chcę Ci tłumaczyć sam bo nie jestem w tym najlepszy, dlatego skieruje Cię w te miejsca: cin.peek()cin.ignore()[Edit] Nie bardzo wiem jakie tagi użyć do linków, proszę Admina o poprawę. [Edit 2] Dziękuje serdecznie! |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2008-12-27 16:24:06 jeszcze jeden zapis jest dal mnie niejasny if(( int( znak ) < int( '0' ) ) ||( int( znak ) > int( '9' ) ) ) |
|
setless |
» 2008-12-27 16:28:14 Jest to porównywanie wartości liczbowych znaków. Działa to w ten sposób że podczas porównywania zmienna typu char znak, jest traktowana jako zmienna liczbowa typu int (wartość z tabeli ASCII), co pozwala określić przedział od 0 do 9.
[Edit] Dodam jeszcze, że zapis int('0') nie oznacza nic innego jak 48. |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2008-12-27 17:09:19 tylko jeszcze jak to przerobić na wygodną w użyciu funkcję? |
|
setless |
» 2008-12-27 18:17:40 Przykładowa funkcja: #include <iostream> #include <conio.h> #include <vector>
using namespace std; void getnumb( std::vector < int > & );
int main() { std::vector < int > tablica; getnumb( tablica ); for( int i = 0; i < tablica.size(); i++ ) cout << "Element " << i + 1 << ": " << tablica[ i ] << endl; getch(); return 0; }
void getnumb( std::vector < int > & tab ) { int liczba = 0; char znak; bool koniec = false; while( !koniec ) { znak = cin.peek(); if(( znak == ';' ) ||( znak == ' ' ) ) { cin.ignore( 1 ); continue; } if(( int( znak ) == 10 ) ||( int( znak ) == - 1 ) ) break; if(( int( znak ) < int( '0' ) ) ||( int( znak ) > int( '9' ) ) ) { cin.ignore( 1 ); continue; } cin >> liczba; tab.push_back( liczba ); } }
Nie wiem czy najwygodniejsza w użyciu, jest to bynajmniej pierwsze co mi wpadło do głowy :] . |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2008-12-27 18:45:41 ważne że działa :) dodałem jeden parametr : void getnumb( std::vector < int > &, char ); dzięki niemu można bez edycji funkcji zmienić separator :) |
|
1 2 3 « 4 » |