Fraction Program Error

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • d0ugg
    New Member
    • Jan 2007
    • 41

    Fraction Program Error

    Hi,

    I'm did a fraction program for one of my programming classes and it did compile, however when I'm running the program it crashes for some reason that I do not know.

    Code:
    // fraction.cpp
    
    #include <iostream>
    #include <string>
    #include "fraction.h"
    using namespace std;
    
    fraction mult(fraction f1, fraction f2)
    {
    	fraction f10;
    	int common;
    
    	f10.numerator = (f1.numerator * f2.numerator);
    	f10.denominator = (f1.denominator * f2.denominator);
    
    	common = gcd(f10.numerator, f10.denominator);
    	f10.numerator /= common;
    	f10.denominator /= common;
    
    	return f10;
    }
    
    fraction add(fraction f1, fraction f2)
    {
    	fraction f10;
    	int common;
    	
    	f10.numerator = (f1.numerator + f2.numerator);
    	f10.denominator = (f1.denominator + f2.denominator);
    
    	common = gcd(f10.numerator, f10.denominator);
    	f10.numerator /= common;
    	f10.denominator /= common;
    	
    	return f10;
    }
    
    fraction sub(fraction f1, fraction f2)
    {
    	fraction f10;
    	int common;
    
    	f10.numerator = (f1.numerator - f2.numerator);
    	f10.denominator = (f1.denominator - f2.denominator);
    
    	common = gcd(f10.numerator, f10.denominator);
    	f10.numerator /= common;
    	f10.denominator /= common;
    
    	return f10;
    }
    
    fraction div(fraction f1, fraction f2)
    {
    	fraction f10;
    	int common;
    	
    	f10.numerator = (f1.numerator / f2.numerator);
    	f10.denominator = (f1.denominator / f2.denominator);
    
    	common = gcd(f10.numerator, f10.denominator);
    	f10.numerator /= common;
    	f10.denominator /= common;
    
    	return f10;
    }
    
    void read()
    {
    	int numerator;
    	int denominator;
    
    	cout << "Enter your numerator: ";
    		cin >> numerator;
    	cout << "Enter your denominator: ";
    	cin >> denominator;
    
    }	
    
    void print(fraction a_fraction)
    {
    	cout << a_fraction.numerator << "/" << a_fraction.denominator << endl;
    }
    
    int gcd (int u, int v)
    {
    	u = (u < 0) ? -u : u;
    	v = (v < 0) ? -v : v;
    
    while (u > 0)
    {
    	if (u < v)
    {
    	int t = u;
    	u = v;
    	v = t;
    }
    	u -= v;
    }
    return v;
    }
    
    // -------------------------------
    
    // calc.cpp
    
    #include <iostream>
    #include <string>
    #include "fraction.h" 
    																																										
    using namespace std;
    
    int main() 
    { 
    	fraction f1;
    	fraction f2;
    	fraction f10;
    	fraction f;
    	fraction a_fraction;
    
    	fraction answer;
    	char symbol = ' ';
    	string nome;
    
       while (true)
       { 
    	cout << "+\tADD\n";
    	cout << "-\tSUBTRACT\n";
    	cout << "* or x\tMULTIPLY\n";
    	cout << "/\tDIVIDE\n";
    	cout << "E\tEXIT\n";
    	cout << "What operation do you want to use?: ";
    		cin >> symbol;
    		if (symbol == 'e' || symbol == 'E')
    			exit(0);
    
         switch (symbol) 
         { 
          case '+': 
    		  read();
    		  print(a_fraction);
    		  answer = add(f1, f2);
            nome = "sum"; 
            break; 
         case '-': 
    		read();
    		print(a_fraction);
    		answer = sub(f1, f2);
            nome= "difference"; 
            break; 
         case '*': 
    		read();
    		print(a_fraction);
    		answer = mult(f1, f2);
            break; 
         case 'x': 
            read();
    		print(a_fraction);
    		answer = mult(f1, f2);
            nome = "product";
            break;
         case '/': 
    		read();
    		print(a_fraction);
    		answer = div(f1, f2);
            nome = "quotient";
            break; 
    
          } 
    
    	void print(fraction a_fraction);
     
       }
       return 0;
    }
    
    // ------------------------
    
    // fraction.h
    
    struct fraction
    {
    	int numerator;
    	int denominator;
    };
    
    fraction mult(fraction f1, fraction f2);
    fraction add(fraction f1, fraction f2);
    fraction sub(fraction f1, fraction f2);
    fraction div(fraction f1, fraction f2);
    void read();
    void print(fraction a_fraction);
    int gcd (int u, int v);
    I got some WARNING but not ERRORS.
    Here they are:

    c:\documentos\p rogramas\calcul ator\fraction\f raction\calc.cp p(15) : warning C4101: 'f' : unreferenced local variable

    c:\documentos\p rogramas\calcul ator\fraction\f raction\calc.cp p(14) : warning C4101: 'f10' : unreferenced local variable

    c:\documentos\p rogramas\calcul ator\fraction\f raction\calc.cp p(38) : warning C4700: uninitialized local variable 'a_fraction' used

    c:\documentos\p rogramas\calcul ator\fraction\f raction\calc.cp p(39) : warning C4700: uninitialized local variable 'f2' used

    c:\documentos\p rogramas\calcul ator\fraction\f raction\calc.cp p(39) : warning C4700: uninitialized local variable 'f1' used


    Thank you all,

    Doug
  • svlsr2000
    Recognized Expert New Member
    • Feb 2007
    • 181

    #2
    With Initial look i could see one error, your trying to read using cin but your not storing it any where. so f1 and f2 contains garbage value.

    Comment

    Working...