Ayuda en dev c++

Iniciado por Kurosaki12, 28 Mayo 2010, 05:15 AM

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

Kurosaki12

Ayuda con el siguiente programa, lo que debe de hacer es que al ingresar una fraccion este determine si es fraccion impropia y transformarla en fraccion mixta y reducirla a su minima expresion y en el caso contrario de no ser fraccion impropia solo redusca la fraccion, el problema es que al introducir una fraccion que no es  impropia el programa se comporta algo extraño.

Nesecito ayuda porfavor!!!!!!!!!  :xD :xD :xD :xD :xD :xD

Código (cpp) [Seleccionar]


#include <iostream>
#include <stdlib.h>

float reduce(int *, int * );

using namespace std;

int main(){
   
    int num, den;
    int mix;
    float resultado;
   
   
    cout << "Ingresa el numerador: " ,cin >> num;
    cout << endl;
    cout << "Ingresa el denominador: " ,cin >> den;
    cout << endl;
   
    if(num>den){
    cout << "La fraccion " << num << "/" << den << " es impropia." << endl;
    mix=num/den;
   
    if(num % den ==0)
    {       
    cout << "La fraccion mixta es: " << mix ;
    cout << endl;}
   
    else 
    if(num%den>0){
    cout << "La fraccion mixta es: " << mix << " " << num%den << "/" << den;
    cout << endl;
    }
   
    }
   
    else
    if(num<den){
    cout << "La fraccion "<< num << "/" << den << " no es impropoia por lo tanto no se puede convertir a fraccion mixta";
    cout << endl;
   
    }
   
    if(num<den){
    resultado=reduce(&num, &den);
    cout << num << "/" << den << "= " << resultado << endl;}
   
   
    if(num>den){
    resultado=reduce(&num, &den);
    cout << mix << " " << num%den << "/" << den << "= " << resultado << endl;}             
   
   
   
   
   
    system("pause");
    return 0;
   
}

float reduce (int * nume, int * deno)
{    int multi=9;
// ------------ busca comun denominador -----------
     while  (multi != 1)
     {   multi=9;
         while (*nume%multi != 0 || *deno%multi != 0)
              multi--;

         *nume=*nume/multi;
         *deno=*deno/multi;
     }
// ---- busca simplificar en caso de ser primos ---
     while (*nume%*deno==0 || *deno%*nume==0){
         if  (*nume%*deno==0)
         {   *nume/= *deno;
             *deno %= *nume;
         }
         else
             if (*deno%*nume==0)
             {  *deno /= *nume;
                *nume %= *deno;
             }
     }
             
     return *nume/float(*deno);
}


leogtz

Dev-C++ es un IDE, no un lenguaje de programación.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

[L]ord [R]NA

A que le llamas un comportamiento extraño? si te explicas seria mejor, porque obviando que no se reduce a la minima expresion todo va bien con el programa

Kurosaki12

A lo que me refiero es que cuando ingreso una fracción impropia por ejemplo 13/5 el programa la convierte a fracción mixta y no hay ningún problema pero cuando ingreso una fracción que no es impropia por ejemplo 1/2 el programa me indica que no es impropia pero se traba y no me aparece el mensaje de "oprima cualquier tecla para continuar...." para cerrar el programa.