2010-05-03 9 views
1
Fraction AddFractions(const Fraction& frac1, const Fraction& frac2) 
{ 
    Fraction frac3; 

    if (frac1.denom == frac2.denom) 
    { 
     frac3.num = frac1.num + frac2.num; 
     frac3.denom = frac1.denom;   
    } 
    else 
    { 
     frac3.denom = (frac1.denom * frac2.denom); 
     frac3.num = (frac1.num * frac2.denom) + (frac2.num * frac1.denom);   
    } 
    return frac3; 
} 

Ceci est mon prototype et il est une structure définie comme Fraction avec int num et int denom quand je l'appelle la fonction qu'il me donne juste retour des ordures? Je ne sais pas ce qui ne va pas. S'il vous plaît aider. = (Les structures ne fonctionnent pas correctement?

cout << "Please enter two Fractions" << endl; 
    cout << endl; 
    GetFraction(frac1); 
    cout << "Your fisrt fraction is: "; 
    PrintFraction(frac1); 
    cout << endl; 
    cout << endl; 
    GetFraction(frac2); 
    cout << "Your second fraction is: "; 
    PrintFraction(frac2); 
    cout << endl; 


    do 
    { 
     choice1 = MathMenu(); 
     if (choice1 == ErrorOpt) 
     { 
      cout << "There was an error with what you have entered" << endl; 
     } 
     else if(choice1 != QuitOpt) 
     { 

      // do the math options 
      switch (choice1) 
      { 
      case AddOpt: 
       AddFractions(frac1, frac2); 
       break; 
      case SubtractOpt: 
       SubtractFractions(frac1, frac2); 
       break; 
      case MultiplyOpt: 
       MultiplyFractions(frac1, frac2); 
       break; 
      case DivideOpt: 
       DivideFractions(frac1, frac2); 
       break; 
      } 
      //print the results 
      PrintFraction(frac1); 
      PrintMathOption(choice1); 
      PrintFraction(frac2); 
      cout << " = "; 
      Standardize(frac3); 
      Reduce(frac3); 
      PrintFraction(frac3); 
      cout << endl; 
      Pause(); 
+2

Mes pouvoirs psychiques me disent que vous avez variable de pile ninitialized ou quelque chose le long de ces lignes. Pouvez-vous poster le code où vous définissez vos deux fractions et appelez cette fonction? –

+5

La fonction de langage de programmation X est cassée! Non, ce n'est probablement pas le cas. –

+0

Avez-vous un copieur et un opérateur d'affectation définis? Comment appelez-vous AddFractions (...)? Pouvons-nous voir le code? –

Répondre

4

Vous devez assigner frac3 par exemple:

frac3 = AddFractions(frac1, frac2); 
+0

@Potatoswatter: le résultat de la La fonction peut être ignorée en toute sécurité, mais l'impression d'une variable non initialisée peut produire des erreurs. – jfs

+0

Désolé, je n'ai pas vu qu'il avait une variable nommée 'frac3' du tout. Ça ne fait rien. – Potatoswatter

2

D'après ce que je peux dire de votre code, il n'y a pas frac3 variable dans le champ d'application:

 Standardize(frac3); 
     Reduce(frac3); 
     PrintFraction(frac3); 

Et votre les fonctions mathématiques sont appelées mais vous ne captez pas les retours

Questions connexes