Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

pytanie o sposoby wprowadzania danych

Ostatnio zmodyfikowano 2008-12-27 18:45
Autor Wiadomość
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 :)
P-3001
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!
P-3002
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' ) ) )
P-3004
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.
P-3005
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ę?
P-3008
setless
» 2008-12-27 18:17:40
Przykładowa funkcja:
C/C++
#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 :] .
P-3012
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 :)
P-3013
1 2 3 « 4 »
Poprzednia strona Strona 4 z 4