所以我有一个小问题。我试图减少C#中的一小部分。我做了一些工作来检查用户是否输入了一个字符串并让它显示一条消息,我想知道如何减少用户输入的分数,并且还可能让我的程序检查以查看用户是否为分母输入零然后让它显示一条消息,说明"不能除以零。"
任何帮助将不胜感激!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FractionApplication
{
class FractionApplicaton
{
static void Main(string[] args)
{
double numerator;
double denominator;
string inputData;
bool goodData;
Console.Write("Please enter a numerator: ");
inputData = Console.ReadLine();
goodData = double.TryParse(inputData, out numerator);
if (goodData != true)
{
Console.WriteLine("The numerator entered contains bad data.");
}
else
{
Console.Write("\nPlease enter a denominator: ");
inputData = Console.ReadLine();
goodData = double.TryParse(inputData, out denominator);
if (goodData != true)
{
Console.WriteLine("The denominator entered contains bad data.");
}
else
{
Console.WriteLine("The original fraction was: {0}/{1}",numerator,denominator);
}
}
}
}
}
答案 0 :(得分:0)
这应该有用。
int temp;
if(numerator<denominator)temp = numerator;
else temp = denominator;
for(int i=temp/2; i>1; i--){
if(numerator%i==0 && denominator%1==0){
//this is a common denominator and you can divide both by i
}
}
我们正在寻找分子和分母的共同因素。没有公因子可以大于较小数字的一半大小,因此我们看到哪一个较小并且将i设置为该值的一半。然后我们用%来得到分子/ i和分母/ i的余数。
如果两者都为零,那么我们有一个共同的因素,因为我们从temp / 2开始倒计时,而不是0计数,它将是最大的公因子。在确保分子和分母有效后,您可以将它放在任何位置。
您可能希望将值设为in而不是double。你不会将2.01 / 3.56作为一个分数对吗?我不确定%运算符是否适用于双精度数。