Ayuda con un programa en C++ (parece sencillo pero...) [RESUELTO!]

Iniciado por luxna, 24 Septiembre 2010, 19:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

luxna

Buenas a todos/as!

Bueno, resulta que soy nuevo en esto del C++, y en la universidad nos han pedido que hagamos el siguiente programa:

Entrar un numero entero y uno natural (-32 y 6) y dividirlos entre si. El cociente de la división puede dar negativo o positivo, pero nos piden que el valor del resto sea positivo. Así pues, el resto tiene que ser un valor absoluto... Como ejemplos de los resultados que se deben obtener:

32 / 6 ---> Cociente 5, Resto 2
-32 / 6 ---> Cociente -6, resto 4

Con lo que realmente tengo problemas es con el segundo ejemplo... El primero no hay problema. No consigo que me den esos valores (-6 y 4) y me han prohibido usar la biblioteca <math.h>.

Mi intento lo he estructurado de la siguiente manera:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main(){

int a,b,q,r;
cin >> a >> b;
q=a/b;
r=a%b;
if (r < 0) {
cout << q << " " << -r << endl; // Aquí creo que esta el error
}
else {
cout << q << " " << r << endl;
}
}


Alguno/a puede ayudarme a solucionar este problema que viene determinado por el signo del resto?

Muchas gracias!!!

criskapunk

Buenas!

Si tenes que lograr que el resto de la division siempre sea positivo y no podes usar alguna funcion como Abs() (No se si C++ tendra la misma, no conozco el lenguaje), podrias tomar el valor devuelto y en caso de que fuese negativo, multiplicarlo por -1.

Un saludo ;)



Akai

Prueba a usar un unsigned int para almacenar el resto. Eso debería solucionar tu problema ya que las variables de tipo unsigned no almacenan el signo.

ace332

Bueno amigo, para resolver el ejercicio que te dieron debes fijarte en la relación que hay entre Dividendo, Divisor, Cociente y Residuo:

Dividendo = Cociente*Divisor + Resto (Aqui siempre Resto < Cociente)

Ahora bien, si el resto nos da negativo debemos "positivisarlo"... pero el nuevo resto tambien debe cumplir con la relación anterior:

Dividendo = (Cociente -1)*Divisor + (Divisor + Resto)

Luego tenemos lo siguiente

Nuevo cociente: Cociente -1
Nuevo resto:    Divisor + Resto

El resto es solo cosa de programarlo  ;)

Saludos  :)

luxna

Cita de: bigfish781 en 24 Septiembre 2010, 23:03 PM
Bueno amigo, para resolver el ejercicio que te dieron debes fijarte en la relación que hay entre Dividendo, Divisor, Cociente y Residuo:

Dividendo = Cociente*Divisor + Resto (Aqui siempre Resto < Cociente)

Ahora bien, si el resto nos da negativo debemos "positivisarlo"... pero el nuevo resto tambien debe cumplir con la relación anterior:

Dividendo = (Cociente -1)*Divisor + (Divisor + Resto)

Luego tenemos lo siguiente

Nuevo cociente: Cociente -1
Nuevo resto:    Divisor + Resto

El resto es solo cosa de programarlo  ;)

Saludos  :)


Lo tengo, ya me ha salido!!! Muchísimas gracias por vuestra ayuda!!!