elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No consigo visualizar dónde he cometido el fallo. (Max.Comun.Divisor)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No consigo visualizar dónde he cometido el fallo. (Max.Comun.Divisor)  (Leído 2,312 veces)
asa5

Desconectado Desconectado

Mensajes: 11


Ver Perfil
No consigo visualizar dónde he cometido el fallo. (Max.Comun.Divisor)
« en: 6 Diciembre 2017, 19:36 pm »

Hola, estoy intentando arreglar este pequeño problema pero no sé dónde está el fallo.
El tema es que estoy intentando reducir la fracción 2/-4 y que quede como -1/2 (por ejemplo), pero no consigo pasar del paso de reducir a 1/2.
Gracias de antemano.

#include <iostream>
#include <cmath>
// Multiplica, suma, resta y divide racionales.

using namespace std;

int mcd(int numero1, int numero2){
 int res=1,aux=1;

 if(numero1<numero2){
    aux=numero2;
    }
    else{
    aux=numero1;
        }

 if(numero1>0 && numero2>0){
    for(int i=1; i<=aux; i++){
       if ((numero1%i==0) && (numero2%i==0)){
            res=i;
                }
            }
        }

 else if(numero2<0)
            {
    numero2*=-1;

    if(numero1<numero2){
    aux=numero2;
    }

    else{
    aux=numero1;
        }
        int res=1;
           for(int i=1; i<=aux; i++){
              if ((numero1%i==0) && (numero2%i==0)){
            res=i;
                }
            }
        }

 return res;}

void ReducirQ(int nume, int deno, int &numereducido, int &denoreducido)
{
    numereducido=(nume/mcd(nume,deno));
    denoreducido=(deno/mcd(nume,deno));
}

void LeerQ(int &nume, int &deno)
{
 cout<<"Numero racional (nume deno): ";
 cin>>nume>>deno;
}
void EscribirQ(int nume, int deno)
{
 cout<<nume <<'/'<<deno;
}

void SumaQ(int nume1, int nume2, int deno1, int deno2, int &numerador, int &denominador, int &nred, int &dred)
{
    cout<<"La suma resultante es: ";
    numerador=(nume1*deno2)+(nume2*deno1);
    denominador=deno1*deno2;
    ReducirQ(numerador, denominador, nred, dred);
}

void RestarQ(int nume1, int nume2, int deno1, int deno2, int &numerador, int &denominador, int &nred, int &dred)
{
    cout<<"La resta resultante es: ";
    numerador=(nume1*deno2)-(nume2*deno1);
    denominador=deno1*deno2;
    ReducirQ(numerador, denominador, nred, dred);
}

void DividirQ(int nume1, int nume2, int deno1, int deno2, int &numerador, int &denominador, int &nred, int &dred)
{
    cout<<"La division resultante es: ";
    numerador=nume2*deno1;
    denominador=nume1*deno2;
    ReducirQ(numerador, denominador, nred, dred);
}

void MultiplicarQ(int nume1, int nume2, int deno1, int deno2, int &numerador, int &denominador, int &nred, int &dred)
{
    cout<<"La multiplicacion resultante es: ";
    numerador=nume1*nume2;
    denominador=deno1*deno2;
    ReducirQ(numerador, denominador, nred, dred);
}


int main()
{
int nume1, deno1, nume2, deno2, numerador, denominador, nred, dred;
//LeerQ(num1, deno1);

LeerQ(nume1, deno1);
LeerQ(nume2, deno2);
EscribirQ(nume1, deno1);
cout<<"\n";
EscribirQ(nume2, deno2);
cout<<"\n";
SumaQ(nume1, nume2, deno1, deno2, numerador, denominador, nred, dred);
EscribirQ(nred, dred);
cout<<"\n";
RestarQ(nume1, nume2, deno1, deno2, numerador, denominador, nred, dred);
EscribirQ(nred, dred);
cout<<"\n";
DividirQ(nume1, nume2, deno1, deno2, numerador, denominador, nred, dred);
EscribirQ(nred, dred);
cout<<"\n";
MultiplicarQ(nume1, nume2, deno1, deno2, numerador, denominador, nred, dred);
EscribirQ(nred, dred);
cout<<"\n";
}


« Última modificación: 6 Diciembre 2017, 19:54 pm por asa5 » En línea

Erius

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: No consigo visualizar dónde he cometido el fallo. (Max.Comun.Divisor)
« Respuesta #1 en: 7 Diciembre 2017, 06:09 am »

Solo tratas de reducir una fracción, no es así??
Pues si te ayuda... puedes acoplarlo a tu código...



  for(int i=2 ; i<=num ; i++){
       for(int j=2 ; j<=deno ; j++){
       if(num%i==0){
         if(den%i==0){
            num=num/i;
            den=den/i;   
         }
       }
   }
 }

 Tienes un pequeño error en la división, creo que ya debiste darte cuenta, algo sencillo y ademas estas declarando de nuevo a una variable que ya declaraste anteriormente....
Saludos...



« Última modificación: 9 Diciembre 2017, 13:31 pm por Erius » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
donde lo consigo
Multimedia
Gokuman 4 2,182 Último mensaje 20 Febrero 2005, 10:51 am
por Songoku
¿Donde consigo?
Diseño Gráfico
Chakis15 4 2,632 Último mensaje 12 Marzo 2005, 17:18 pm
por system_design
Programa en c "Máximo común divisor de dos números"
Programación C/C++
rayk 8 51,195 Último mensaje 26 Octubre 2013, 23:06 pm
por absgab
maximo comun divisor y minimo comun multiplo
Programación C/C++
7hongo7 3 7,796 Último mensaje 15 Marzo 2013, 21:11 pm
por alt_369
Maximo común divisor c++
Programación C/C++
Laleylalo5 2 2,559 Último mensaje 31 Marzo 2017, 00:12 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines