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)