online: 2; azi: 462; total: 50917 Manual clasa a x a - Implementarea structurilor de date - Pointeri si siruri de caractere

Manual clasa a X a

Implementarea structurilor de date

Pointeri si siruri de caractere

Se citesc două şiruri de caractere care conţin două numere reprezentate în baza 20. Afişaţi diferența celor două numere în:
a) baza 20;
b) baza 10.
# include < iostream >
# include < cstring >
using namespace std ;
int b20_to_b10 ( char *s) {
int n = strlen (s);
int b10 = 0 , power = 1 ;
for ( int i = n - 1 ; i >= 0 ; i--) {
int digit = s[i] - '0' ;
b10 += digit * power ;
power *= 20 ;
}
return b10;
}
void b10_to_b20 ( int n, char *s) {
int i = 0 ;
while (n > 0 ) {
int digit = n % 20 ;
s[i++] = digit + '0' ;
n /= 20 ;
}
s[i] = '\0' ;
int len = strlen (s);
for ( int j = 0 ; j < len / 2 ; j++) {
char temp = s[j];
s[j] = s[ len - j - 1 ];
s[ len - j - 1 ] = temp ;
}
}
int main () {
char num1[ 100 ], num2[ 100 ];
cout << " Introduceti cele doua numere in baza 20: " << endl ;
cin >> num1 >> num2;
int b10_num1 = b20_to_b10(num1);
int b10_num2 = b20_to_b10(num2);
int diff_b10 = b10_num1 - b10_num2;
char diff_b20[ 100 ];
b10_to_b20(diff_b10, diff_b20);
cout << " Diferenta numerelor in baza 20: " << diff_b20 << endl ;
cout << " Diferenta numerelor in baza 10: " << diff_b10 << endl ;
return 0 ;
}

Programul primește cele două numere în baza 20 sub formă de șiruri de caractere, le convertește în baza 10 prin utilizarea funcției b20_to_b10 , calculează diferența în baza 10, apoi convertește diferența înapoi în baza 20 prin utilizarea funcției b10_to_b20 . Rezultatul este afișat pe ecran.