Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ja_90 en 29 Septiembre 2015, 03:22 am



Título: Funcion Separar Digitos de un numero
Publicado por: Ja_90 en 29 Septiembre 2015, 03:22 am
Buenas Noches, ando resolviendo algunos ejercicios de un libro, pero quede en este

Escriba segmentos de programa que lleven a cabo cada una de las siguientes tareas:
a) Calcular la parte entera de un cociente, cuando el entero a se divide entre el entero b.
b) Calcular el residuo entero, cuando el entero a se divide entre el entero b.
c) Utilice los segmentos de programa desarrolladas en a) y b), para escribir una función que introduzca un entero
entre 1 y 32767 y que imprima una serie de dígitos, y que cada par de ellos se encuentre separado por dos espacios. Por ejemplo, el entero 4562 se debe imprimir como:
4 5 6 2.

La parte a y b es sencilla ya lo hice pero no he podido con la parte c, si alguien me puede guiar en como, se que debo jugar con el cociente y residuo pero no he encontrado una manera que me de solucion a lo que me piden. Muchas gracias

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5.  
  6. /// Prototipo funciones
  7. int cociente(int, int);
  8. int residuo(int, int);
  9.  
  10. int main() {
  11.  
  12.   cout << "\t  FUNCIONES Ejercicio #3      \n\n";
  13.  
  14.   int a, b, num;
  15.  
  16.   cout << " Ingrese valor de a: ";
  17.   cin >> a;
  18.   cout << " Ingrese valor de b: ";
  19.   cin >> b;
  20.   cout << endl;
  21.  
  22.   cout << " Cociente: " << cociente(a,b);
  23.   cout << " Residuo: " << residuo(a,b);
  24.   cout << endl << endl;
  25.  
  26.   cout << " Ingrese un valor entre 1 y 32767: \n";
  27.   cin >> num;
  28.  
  29.   if(num>0 && num<32768) {
  30.  
  31.        // Aca iria la funcion
  32.   }
  33.   else
  34.      cout << " Ingrese valores correctos.\n\n";
  35.  
  36.   return 0;
  37. }
  38.  
  39. int cociente(int x, int y) {
  40.  
  41.   return x/y;
  42. }
  43.  
  44. int residuo(int x, int y) {
  45.  
  46.   return x%y;
  47. }
  48.  
  49.  


Título: Re: Funcion Separar Digitos de un numero
Publicado por: 0xFer en 29 Septiembre 2015, 04:37 am
Para el primer paso creo que sería

Código
  1.    int numero =  231;
  2.  
  3.    int i = 10;
  4.    for(  ; i < 1000001 ; i*=10)
  5.        if( numero < i){
  6.         numero = (cociente*i + numero)*10 + residuo;
  7.         break;
  8.         }
  9.  
Esto lo que hace es agregar el cociente al principio del número y el residuo al final. si el número introducido por ejemplo es un 231 y si el cociente es 4 y residuo 6 entonces sale 42316.

Luego sólo tienes que ir sacando el primer dígito del número e ir imprimiendolo. para sacar el primer dígito de 23 por ejemplo seria un 23/10 lo que es igual a 2 luego restar ese dígito a 23 sería. 23 - 2*10. repite hasta que quede el último dígito. si el número es menor que 100 entonces lo divides por 10, sino sii es menor que 1000 entonces por 100 y asi. Luego cada segunda vez que repitas el procedimiento imprimes dos espacios.


Título: Re: Funcion Separar Digitos de un numero
Publicado por: Ja_90 en 30 Septiembre 2015, 23:43 pm
Hola 0xFer  la verdad no te entendi muy bien lo ultimo sobre como ir sacando cada digito. Me puedes explicar de nuevo esa parte te lo agradeceria.


Título: Re: Funcion Separar Digitos de un numero
Publicado por: 0xFer en 1 Octubre 2015, 01:21 am
Pongamos que tenemos 7346. para sacar el número 7 y guardarlo en una variable hay que dividir 7346 por 1000. int dígito = 7346/1000 = 7.xxx. por ser una variable de tipo entera lo que está después del punto se trunca entonces dígito = 7. Luego 7346 - 7*1000 = 346. Ahora haces lo mismo con 346. Es un proceso iterativo.

Código
  1. int num 7346;
  2.  
  3. //Aqui empieza el proceso iterativo
  4. int digito = 7346/1000;
  5. cout << digito;
  6.  
  7. num = num - digito*1000;
  8.  

En las siguientes iteraciones sería
digito = 346/100
digito = 46/10
digito = 6/1

Luego habras sacado todos los dígitos