Weierstrass ha scritto:
Hai ragione
Puoi fare così
#include <iostream>
#include <math.h>
using namespace std;
int main () {
int n, r;
bool stampa = false;
cout << "Inserisci un numero: " << endl;
cin >> n;
cout << "Il risultato e': " << endl;
for (int i = 8 * sizeof(int) - 4; i >= 0; i -= 4) {
r = (n >> i) & 15;
// equivalente a:
// r = (n / (int)pow(2,i)) % 16;
if(r > 0 || i == 0)
stampa = true;
if(stampa)
if(r < 10)
cout << (char)(r + '0');
else
cout << (char)(r - 10 + 'A');
}
return 0;
}
Oppure così:
#include <iostream>
using namespace std;
void stampa(int n){
if(n >= 16)
stampa(n / 16);
int r = n % 16;
if(r < 10)
cout << (char)(r + '0');
else
cout << (char)(r - 10 + 'A');
}
int main () {
int n;
cout << "Inserisci un numero: " << endl;
cin >> n;
cout << "Il risultato e': " << endl;
stampa(n);
return 0;
}
Ciao, leggo solo ora grazie mille per la risposta. Ho visto e provato i programmi ma erano ancora troppo complessi per come li vuole la professoressa. Ho svolto l'esercizio in maniera differente senza la parte finale e come mi avevi detto tu di mettere in cout. La prof ha detto che va bene in questo modo. Grazie mille dell'aiuto
#include <iostream>
using namespace std;
int main () {
int c=0, n, r;
cout<<"Inserisci un numero: "<<endl;
cin>>n;
cout<<"Il risultato e': "<<endl;
for (int i=0; n>0; i++ ) {
r=n%16;
if (r == 1) {
cout<<1;
} else {
if (r == 2) {
cout<<2;
} else {
if (r == 3) {
cout<<3;
} else {
if (r == 4) {
cout<<4;
} else {
if (r == 5) {
cout<<5;
} else {
if (r == 6) {
cout<<6;
} else {
if (r == 7) {
cout<<7;
} else {
if (r == 8) {
cout<<8;
} else {
if (r == 9) {
cout<<9;
} else {
if (r == 0) {
cout<<0;
} else {
if (r == 10) {
cout<<"A";
} else {
if (r == 11) {
cout<<"B";
} else {
if (r == 12) {
cout<<"C";
} else {
if (r == 13) {
cout<<"D";
} else {
if (r == 14) {
cout<<"E";
} else {
if (r == 15) {
cout<<"F";
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
n=n/16;
c++;
}
cout<<" - Attenzione: il numero va letto da destra a sinistra!- "<<endl;
}