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

[C++] Rozróżnienie liczby od znaku.

Ostatnio zmodyfikowano 2014-03-17 15:11
Autor Wiadomość
Kuaczor
Temat założony przez niniejszego użytkownika
[C++] Rozróżnienie liczby od znaku.
» 2014-03-16 22:22:06
Mam takie zadanko, użytkownik podaje szerokość i wysokość mapy po czym podaje typy poszczególnych pól ( litery lub kropki ) np:

Wejście użytkownika

5 5
. . . . .
. . . . .
. . . . .
c c c c c
c c c c c

Wyjście programu

. . . . .
. . . . .
. . . . .
c c c c c
c c c c c

Tę samą mapę może zrobić tak:

Wejście użytkownika

5 5
10 . ( 10 kolejnych pól to pola typu kropka )
. . . . . ( 5 pól typu kropka )
10 c ( 10 kolejnych pól to pola typu 'c')

Wyjście programu

. . . . .
. . . . .
. . . . .
c c c c c
c c c c c

O ile z pierwszym sposobem nie mam problemów to nie za bardzo wiem jak zrealizować drugi, jak program ma rozróżniać czy użytkownik podał liczbę czy literę?

P-106604
Monika90
» 2014-03-17 00:22:01
Wczytujesz sobie jeden znak
C/C++
int n;
char ch;
in >> ch;
sprawdzasz czy to cyfra i jeżeli tak, to wstawiasz z powrotem do strumienia i wczytujesz liczbę
C/C++
if( std::isdigit( ch ) )
{
    in.unget();
    in >> n;
}
P-106612
Kuaczor
Temat założony przez niniejszego użytkownika
» 2014-03-17 11:45:48
Z std moge uzywac tylko cin i cout ;)
P-106618
michal11
» 2014-03-17 12:25:56
No to sprawdzaj po kodach ASCII.
P-106620
Monika90
» 2014-03-17 13:13:05
Nie sprawdzaj kodów ASCII, nie wszystkie systemy używają ASCII. Zamiast isdigit można tak
C/C++
if( ch >= '0' && ch <= '9' )
{
    cin.unget();
    cin >> n;
}

Z std moge uzywac tylko cin i cout ;)
A tak w ogóle, to dlaczego?
P-106624
michal11
» 2014-03-17 14:07:26
W sumie racja sposób z cyfrą w ' ' jest lepszy.
P-106627
Kuaczor
Temat założony przez niniejszego użytkownika
» 2014-03-17 15:11:59
Takie wytyczne. Dzięki za pomoc :)
P-106629
« 1 »
  Strona 1 z 1