Exercice langage C corrigé modularisation, tutoriel & guide de travaux pratiques en pdf.
Le code ci-dessous convertit un nombre décimal en binaire, l’affiche et fait la conversion inverse. Recopiez ce code dans un buffer d’Emacs, et essayez de le comprendre. Vous pouvez ensuite le compiler – il devrait fonctionner sans problème – et le tester.
#include
using namespace std;
int main(int argc, char **argv) {
const int max_bits = 10;
int decimal, binaire, original, n, bits;
long puissance2, puissance10;
cout << "Entrez un nombre entier: ";
cin >> decimal;
// calcul du nombre de bits
n = decimal;
bits = 0;
while (n > 0) {
bits++;
n /= 2;
}
cout << decimal << " a " << bits << " bits." << endl;
if (bits > 10) {
cout << "Nous ne pouvons pas convertir de nombres plus grands que "
<< max_bits << " bits." << endl;
return 0;
}
// conversion en binaire
n = decimal;
binaire = 0;
for (int i=bits-1; i>=0; i--) {
puissance2 = 1;
for (int j=0; j<i; j++)
puissance2 *= 2;
puissance10 = 1;
for (int j=0; j<i; j++)
puissance10 *= 10;
if (n / puissance2 > 0) {
n = n - puissance2;
binaire += puissance10;
}
}
cout << decimal << " vaut '" << binaire << "' en binaire." << endl;
// calcul du nombre de bits
n = binaire;
bits = 0;
while (n > 0) {
bits++;
n /= 10;
}
cout << decimal << " a " << bits << " bits." << endl;
// conversion de binaire en decimal
original = 0;
n = binaire;
for (int i=bits-1; i>=0; i--) {
puissance2 = 1;
for (int j=0; j<i; j++)
puissance2 *= 2;
puissance10 = 1;
for (int j=0; j<i; j++)
puissance10 *= 10;
if (n / puissance10 > 0) {
n = n - puissance10;
original += puissance2;
}
}
cout << "Nombre original: " << original << endl;
return 0;
}La correction exercice langage C (voir page 2 en bas)