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

Rzutowanie

Ostatnio zmodyfikowano 2015-12-22 15:26
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
Rzutowanie
» 2015-12-22 13:39:01
Cześć, otóż mam takie pytanie, czy rzutowanie jest kosztowne dla programu? MOże przedstawię dokładnie problem, o który mi chodzi. Rozwiązywałem zadanie ze spoja PESEL. I postanowiłem rozwiązać to zadanie w taki sposób:

C/C++
string pesel;
int tab[ 11 ] = { 1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1 };
int suma = 0;

cin >> pesel; //pesel jest 11-to cyfrowy;
for( int i = 0; i < 11; i++ )
{
    suma +=( int )( pesel[ i ] - 48 ) * tab[ i ];
}

i tutaj moje pytanie, czy sposób z rzutowaniem jest dobry (tz. działa, ale czy stosowana przeze mnie konwencja jest poprawna - czy to jest zgodne z kanonem programowania)? a może jest jakiś wygodniejszy sposób "wyłuskiwania" poszczególnych cyfr z długiej liczby?
P-142238
carlosmay
» 2015-12-22 13:58:00
czy sposób z rzutowaniem jest dobry
 Sposób działający jest dobrym sposobem.

C/C++
int( pesel[ i ] - '0' )
 
 Można tak. Łatwiej zapamiętać, że odjecie od cyfry w łańcuchu znaku '0' daje oczekiwaną wartość.
P-142239
Anim
Temat założony przez niniejszego użytkownika
» 2015-12-22 14:13:27
?? co to ? :D
P-142241
carlosmay
» 2015-12-22 14:29:18
suma +=( pesel[ i ] - '0' ) * tab[ i ];
 W tym konkretnym przypadku nie musisz nawet używać int do rzutowania,
bo znak char to też liczba całkowita.
Różnica jest w jej interpretacji przy wypisaniu.

C/C++
char ch = 'a' + 3;
cout << ch << endl; // d
P-142242
Anim
Temat założony przez niniejszego użytkownika
» 2015-12-22 15:26:58
super :) dzięki za odpowiedź :)
P-142252
« 1 »
  Strona 1 z 1