Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main(int argc, char *argv[]) {
- cout<<"Ingrese numero: ";
- int nro;
- cin>>nro;
- // Control de errores
- if ( !cin.good() ) {
- cerr<<"El numero ingresado es demasiado grande";
- return 1;
- }
- /* Calculando la cantidad de dígitos del número. Lo hago de la sig manera: averiguando el mayor
- divisor del número, que sea múltiplo de 10. Por ej, si el número es 123456, el mayor divisor múltiplo
- de 10 va ser 100.000 y de esta forma sé que tiene 6 dígitos. */
- int largo = 1; // Variable que almacena el múltiplo.
- int aux = 10;
- while ( nro % largo != nro % aux ) {
- /* Cuando ni largo ni aux sean divisores de nro, el mod (%) va a dar como resultado el nro completo,
- y por ende van a dar el mismo resultado. */
- largo *= 10; // Aumento al siguiente múltiplo de 10.
- aux *= 10;
- }
- largo /= 10; // Ya me salí de los números divisores, así que vuelvo al anterior.
- int digitos = 0;
- aux = largo;
- while (true) {
- aux /= 10;
- ++digitos;
- if (aux < 10)
- break;
- /* En este while voy decrementando el índice de multiplicidad de 10 del valor que encontramos, y cada
- decremento es un dígito más. Cuando no puede decrementar más sale del while */
- }
- ++digitos; // Porque el while anterior no toma al último dígito, lo agrego acá.
- // Controlamos...
- cout<<"El nro tiene "<<digitos<<" digitos"<<endl<<endl;
- int A[10]; // Cantida máxima de dígitos para un int.
- for(int i=0;i<digitos;i++) {
- A[i] = (nro - nro % largo) / largo;
- nro -= nro - nro % largo;
- largo /= 10;
- /* Lo que hace este for en cada vuelta es leer el primer dígito de la izquierda, guardarlo y
- "cortarlo" del nro */
- }
- cout<<"Mostrando arreglo...\n\n";
- for(int i=0;i<digitos;i++) {
- cout<<A[i]<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement