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
#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;
}
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.
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.
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.
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