Dado un número N , la tarea es escribir un programa en C para imprimir todos los dígitos del número N en su orden original.
Ejemplos:
Entrada: N = 12
Salida: 1, 2Entrada: N = 1032
Salida: 1, 0, 3, 2
Método 1: La forma más sencilla de hacerlo es extraer los dígitos uno por uno e imprimirlo.
- Extraiga el último dígito del número N por N%10 y almacene ese dígito en una array (digamos arr[] ).
- Actualice el valor de N por N/10 y repita el paso anterior hasta que N no sea igual a 0 .
- Cuando se hayan extraído y almacenado todos los dígitos, recorra la array desde el final e imprima los dígitos almacenados en ella.
A continuación se muestra la implementación del enfoque anterior:
// C program of the above approach #include <stdio.h> #define MAX 100 // Function to print the digit of // number N void printDigit(int N) { // To store the digit // of the number N int arr[MAX]; int i = 0; int j, r; // Till N becomes 0 while (N != 0) { // Extract the last digit of N r = N % 10; // Put the digit in arr[] arr[i] = r; i++; // Update N to N/10 to extract // next last digit N = N / 10; } // Print the digit of N by traversing // arr[] reverse for (j = i - 1; j > -1; j--) { printf("%d ", arr[j]); } } // Driver Code int main() { int N = 3452897; printDigit(N); return 0; }
Producción:
3 4 5 2 8 9 7
Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(log 10 N)
Método 2: Usar recursividad
- Iterar recursivamente hasta que N se convierta en 0:
- Caso base: si el valor de N es 0 , salga de la función.
if(N==0) return ;
- Llamada recursiva: si no se cumple el caso base, llame recursivamente para la siguiente iteración actualizando N a N/10 e imprima el valor del último dígito extraído (digamos r ) del número N , después de la llamada recursiva.
recursive_function(N/10); print(r);
- Caso base: si el valor de N es 0 , salga de la función.
A continuación se muestra la implementación del enfoque anterior:
// C program of the above approach #include <stdio.h> // Function to print the digit of // number N void printDigit(int N) { int r; // Base Case if (N == 0) { return; } // Extract the last digit r = N % 10; // Recursive call to next // iteration printDigit(N / 10); // Print r printf("%d ", r); } // Driver Code int main() { int N = 3452897; printDigit(N); return 0; }
Producción:
3 4 5 2 8 9 7
Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(1)