|
-
July 29th, 2010, 06:05 PM
#1
Help With C# Fractions Program!
All,
I have the code below for the following problem:
Create a Fraction class with fields that hold a whole number, a numerator, and a denominator. In addition:
» Create properties for each field. The set accessor for the denominator should not allow a 0 value; the value defaults to 1.
» Add three constructors. One takes three parameters for a whole number, numerator, and denominator. Another accepts two parameters for the numerator and denominator; when this constructor is used, the whole number value is 0. The last constructor is parameter-less; it sets the whole number and numerator to 0 and the denominator to 1. (After construction, Fractions do not have to be reduced to proper form. For example, even though 3/9 could be reduced to 1/3, your constructors do not have to perform this task.)
» Add a Reduce()method that reduces a Fraction if it is in improper form. For example, 2/4 should be reduced to 1/2.
» Add an operator+()method that adds two Fractions. To add two fractions, first eliminate any whole number part of the value. For example, 2 1/4 becomes 9/4 and 1 3/5 becomes 8/5. Find a common denominator and convert the fractions to it. For example, when adding 9/4 and 8/5, you can convert them to 45/20 and 32/20. Then you can add the numerators, giving 77/20. Finally, call the Reduce()method to reduce the result, restoring any whole number value so the fractional part of the number is less than 1. For example, 77/20 becomes 3 17/20.
» Include a function that returns a string that contains a Fraction in the usual display format—the whole number, a space, the numerator, a slash (/), and a denominator. When the whole number is 0, just the Fraction part of the value should be displayed (for example, 1/2 instead of 0 1/2). If the numerator is 0, just the whole number should display (for example, 2 instead of 2 0/3). Write a Main()method that instantiates several Fractions and demonstrate that all the methods work correctly. Save the program as FractionDemo.cs.
Code:
using System;
public class FractionDemo
{
public static void Main()
{
Fraction fractionComplete = new Fraction(10, 1, 4);
Fraction fractionNumDen = new Fraction(2, 10);
Fraction fractionNumDen2 = new Fraction(3, 10);
Fraction fractionNone = new Fraction();
Fraction fractionCombined;
fractionCombined = fractionNumDen + fractionNumDen2;
Display(fractionComplete);
Display(fractionNumDen);
Display(fractionNone);
Display(fractionCombined);
Console.ReadLine();
}
public static void Display(Fraction incNumbers)
{
string fractionString;
if (incNumbers.Whole >= 1 && incNumbers.Numerator == 0)
{
fractionString = ("The fraction is " + incNumbers.Whole + ".");
Console.WriteLine(fractionString);
}
else if (incNumbers.Whole == 0 && incNumbers.Numerator >= 1)
{
fractionString = ("The fraction is " + incNumbers.Numerator + "/" + incNumbers.Denominator + ".");
Console.WriteLine(fractionString);
}
else if (incNumbers.Whole >= 1)
{
fractionString = ("The fraction is " + incNumbers.Whole + " " + incNumbers.Numerator + "/" + incNumbers.Denominator + ".");
Console.WriteLine(fractionString);
}
}
}
public class Fraction
{
private int whole;
private int numerator;
private int denominator;
public int Whole
{
get { return whole; }
set { whole = value; }
}
public int Numerator
{
get { return numerator; }
set { numerator = value; }
}
public int Denominator
{
get { return denominator; }
set
{
if (value >= 1)
denominator = value;
else
denominator = 1;
}
}
public Fraction (int incWhole, int incNumerator, int incDenominator)
{
Whole = incWhole;
Numerator = incNumerator;
Denominator = incDenominator;
}
public Fraction (int incNumerator, int incDenominator)
{
Whole = 0;
Reduce(incNumerator, incDenominator);
Numerator = incNumerator;
Denominator = incDenominator;
}
public Fraction()
{
Whole = 0;
Numerator = 0;
Denominator = 1;
}
public static Fraction operator+ (Fraction a, Fraction b)
{
int r1 = a.Numerator * b.Denominator + b.Numerator * a.Denominator;
int r2 = a.Denominator * b.Denominator;
return new Fraction(r1, r2);
}
public static int Reduce(int incNum, int incDen)
{
if (incNum == 0)
{
return incDen;
}
while (incDen != 0)
{
if (incNum > incDen)
{
incNum -= incDen;
}
else
{
incDen -= incNum;
}
}
return incNum;
}
}
I'm getting a number of errors, but I can't figure out exactly what's causing it. I think it may be the Reduce or operator+ method, but I'm not sure how to re-write it. I would greatly appreciate your prompt response. Thanks!
Last edited by yourexodus; July 29th, 2010 at 06:18 PM.
Reason: Ok, I got it to run without errors, but the fractions are still not being reduced. Any ideas??
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|