#include <iostream> #include <cmath> int main() { int tab[10][9]; // 10 chiffres possibles pour une taille de 9 // On associe donc chacun de nos 10 numéros, avec un tableau de 9 positions // On ne vas pas forcément utiliser les 9 cases. while (true) // Boucle principale, là pour faire continuer le programme jusqu'à ce que l'on en ait marre. { // On remplit toutes les cases à -1, pour dire qu'elles sont vides. for (int i = 0; i < 10; ++i) for (int j = 0; j < 9; ++j) tab[i][j] = -1; int nb = 0; int position_actuelle = 0; std::cout << "Entrez un nombre: "; std::cin >> nb; if (nb == 0) // Si nb vaut 0, on sort de la boucle principale. break; if (nb > 999999999) { std::cerr << "Le nombre est trop grand" << std::endl; return 1; } while (nb > 0) { // Récupération du nombre pour trouver la liste. int indice = nb % 10; // On ajoute la position courante dans la liste (en faisant un ajout en queue) int pos = 0; while (tab[indice][pos] != -1 && pos < 9) ++pos; tab[indice][pos] = position_actuelle; nb /= 10; ++position_actuelle; } // Debug, non demandé, histoire de voir à quoi ressemble notre tableau std::cout << "Debug:" << std::endl; for (int i = 0; i < 10; ++i) { std::cout << "Numero " << i << ": "; for (int j = 0; j < 9; ++j) { if (tab[i][j] == -1) std::cout << tab[i][j] << " "; else std::cout << " " << tab[i][j] << " "; } std::cout << std::endl; } // Affichage uniquement de ce qui n'est pas en -1 std::cout << "\nAffichage des positions:" << std::endl; for (int i = 0; i < 10; ++i) { if (tab[i][0] != -1) { std::cout << "Numero " << i << ": "; for (int j = 0; j < 9 && tab[i][j] != -1; ++j) std::cout << " " << tab[i][j] << " "; std::cout << std::endl; } } // Reconstruction du nombre d'origine std::cout << "\nReconstruction du nombre d'origine:" << std::endl; int nb_origine = 0; for (int i = 0; i < 10; ++i) for (int k = 0; k < 9 && tab[i][k] != -1; ++k) nb_origine += i * std::pow(10, tab[i][k]); std::cout << "Nombre d'origine: " << nb_origine << "\n\n"; } return 0; }
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
$ ./a.out
Entrez un nombre: 123456789
Debug:
Numero 0: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 1: 8 -1 -1 -1 -1 -1 -1 -1 -1
Numero 2: 7 -1 -1 -1 -1 -1 -1 -1 -1
Numero 3: 6 -1 -1 -1 -1 -1 -1 -1 -1
Numero 4: 5 -1 -1 -1 -1 -1 -1 -1 -1
Numero 5: 4 -1 -1 -1 -1 -1 -1 -1 -1
Numero 6: 3 -1 -1 -1 -1 -1 -1 -1 -1
Numero 7: 2 -1 -1 -1 -1 -1 -1 -1 -1
Numero 8: 1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 9: 0 -1 -1 -1 -1 -1 -1 -1 -1
Affichage des positions:
Numero 1: 8
Numero 2: 7
Numero 3: 6
Numero 4: 5
Numero 5: 4
Numero 6: 3
Numero 7: 2
Numero 8: 1
Numero 9: 0
Reconstruction du nombre d'origine:
Nombre d'origine: 123456789
$ ./a.out
Entrez un nombre: 111111111
Debug:
Numero 0: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 1: 0 1 2 3 4 5 6 7 8
Numero 2: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 3: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 4: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 5: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 6: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 7: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 8: -1 -1 -1 -1 -1 -1 -1 -1 -1
Numero 9: -1 -1 -1 -1 -1 -1 -1 -1 -1
Affichage des positions:
Numero 1: 0 1 2 3 4 5 6 7 8
Reconstruction du nombre d'origine:
Nombre d'origine: 111111111
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question