Funcion Separar Digitos de un numero

Iniciado por Ja_90, 29 Septiembre 2015, 03:22 AM

0 Miembros y 1 Visitante están viendo este tema.

Ja_90

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 (cpp) [Seleccionar]

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

/// Prototipo funciones
int cociente(int, int);
int residuo(int, int);

int main() {

   cout << "\t  FUNCIONES Ejercicio #3      \n\n";

   int a, b, num;

   cout << " Ingrese valor de a: ";
   cin >> a;
   cout << " Ingrese valor de b: ";
   cin >> b;
   cout << endl;

   cout << " Cociente: " << cociente(a,b);
   cout << " Residuo: " << residuo(a,b);
   cout << endl << endl;

   cout << " Ingrese un valor entre 1 y 32767: \n";
   cin >> num;

   if(num>0 && num<32768) {
     
        // Aca iria la funcion
   }
   else
      cout << " Ingrese valores correctos.\n\n";

   return 0;
}

int cociente(int x, int y) {

   return x/y;
}

int residuo(int x, int y) {

   return x%y;
}


:D  ::::Ja_90::::   :D

0xFer

#1
Para el primer paso creo que sería


   int numero =  231;

   int i = 10;
   for(  ; i < 1000001 ; i*=10)
       if( numero < i){
        numero = (cociente*i + numero)*10 + residuo;
        break;
        }

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.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

Ja_90

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.
:D  ::::Ja_90::::   :D

0xFer

#3
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 (cpp) [Seleccionar]

int num 7346;

//Aqui empieza el proceso iterativo
int digito = 7346/1000;
cout << digito;

num = num - digito*1000;


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

Luego habras sacado todos los dígitos
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}