Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kurosaki12 en 28 Mayo 2010, 05:15 am



Título: Ayuda en dev c++
Publicado por: Kurosaki12 en 28 Mayo 2010, 05:15 am
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
  1.  
  2. #include <iostream>
  3. #include <stdlib.h>
  4.  
  5. float reduce(int *, int * );
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10.  
  11.    int num, den;
  12.    int mix;
  13.    float resultado;
  14.  
  15.  
  16.    cout << "Ingresa el numerador: " ,cin >> num;
  17.    cout << endl;
  18.    cout << "Ingresa el denominador: " ,cin >> den;
  19.    cout << endl;
  20.  
  21.    if(num>den){
  22.    cout << "La fraccion " << num << "/" << den << " es impropia." << endl;
  23.    mix=num/den;
  24.  
  25.    if(num % den ==0)
  26.    {      
  27.    cout << "La fraccion mixta es: " << mix ;
  28.    cout << endl;}
  29.  
  30.    else  
  31.    if(num%den>0){
  32.    cout << "La fraccion mixta es: " << mix << " " << num%den << "/" << den;
  33.    cout << endl;
  34.    }
  35.  
  36.    }
  37.  
  38.    else
  39.    if(num<den){
  40.    cout << "La fraccion "<< num << "/" << den << " no es impropoia por lo tanto no se puede convertir a fraccion mixta";
  41.    cout << endl;
  42.  
  43.    }
  44.  
  45.    if(num<den){
  46.    resultado=reduce(&num, &den);
  47.    cout << num << "/" << den << "= " << resultado << endl;}
  48.  
  49.  
  50.    if(num>den){
  51.    resultado=reduce(&num, &den);
  52.    cout << mix << " " << num%den << "/" << den << "= " << resultado << endl;}            
  53.  
  54.  
  55.  
  56.  
  57.  
  58.    system("pause");
  59.    return 0;
  60.  
  61. }
  62.  
  63. float reduce (int * nume, int * deno)
  64. {    int multi=9;
  65. // ------------ busca comun denominador -----------
  66.     while  (multi != 1)
  67.     {   multi=9;
  68.         while (*nume%multi != 0 || *deno%multi != 0)
  69.              multi--;
  70.  
  71.         *nume=*nume/multi;
  72.         *deno=*deno/multi;
  73.     }
  74. // ---- busca simplificar en caso de ser primos ---
  75.     while (*nume%*deno==0 || *deno%*nume==0){
  76.         if  (*nume%*deno==0)
  77.         {   *nume/= *deno;
  78.             *deno %= *nume;
  79.         }
  80.         else
  81.             if (*deno%*nume==0)
  82.             {  *deno /= *nume;
  83.                *nume %= *deno;
  84.             }
  85.     }
  86.  
  87.     return *nume/float(*deno);
  88. }
  89.  
  90.  


Título: Re: Ayuda en dev c++
Publicado por: leogtz en 28 Mayo 2010, 08:23 am
Dev-C++ es un IDE, no un lenguaje de programación.


Título: Re: Ayuda en dev c++
Publicado por: [L]ord [R]NA en 28 Mayo 2010, 21:26 pm
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


Título: Re: Ayuda en dev c++
Publicado por: Kurosaki12 en 29 Mayo 2010, 02:25 am
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.