[C++] Sortowanie numerów PESEL
Ostatnio zmodyfikowano 2010-06-13 22:50
boleksit Temat założony przez niniejszego użytkownika |
» 2010-06-13 22:44:18 Ok, po długich a ciężkich, dzięki Waszej pomocy program ukończyłem :) Ale mam jeszcze do was jedno pytanko:P mam funckję która sprawdza poprawność peselu, skopiowałem ją z netu(wiem, że leniwy jestem;P). Wygląda ona tak: bool Sprawdz( string & dana, char wynik[ 12 ] ) { if( dana.size() != 11 ) { wynik[ 0 ] = 0; return 0; } const char waga[ 4 ] = { 9, 7, 3, 1 }; unsigned short suma = 0; for( char i = 0; i < 10; ++i ) suma +=( dana[ i ] - '0' ) * waga[ i % 4 ]; if( dana[ 10 ] - '0' != suma % 10 ) { wynik[ 0 ] = 0; return 0; } for( char i = 0; i < 11; ++i ) wynik[ i ] = dana[ i ]; wynik[ 11 ] = 0; return 1; } I zastanawia mnie po co jest to -'0' w dana(i) - '0' |
|
ison |
» 2010-06-13 22:50:47 gdyż konwertujesz znak ASCII na liczbę przykładowo znak '0' ma kod 48 zatem jeśli char zawiera znak '5' to przy konwertowaniu go na liczbę (z tekstu) musimy odjąć kod znaku '0' (znak '5' - '0' wynosi 5 jako liczba) gdybyś char='2' podpisał pod inta to int wynosiłby 50 (gdyż taki jest kod ASCII znaku '2') radzę zapoznać się z tą tablicą ;) programik wypisujący rozszerzoną tablicę ASCII (dla windowsów) są to wszystkie możliwe znaki jakie można wypisać w standardowej konsoli #include<cstdio>
int main() { for( int i = 1; i < 256; i++ ) printf( "%d %c\n", i, i ); }
|
|
1 « 2 » |