-1
ですから、フラクションクラスを配列として配列をソートしようとしています。私の演算子で何かが間違っているとは思うが、私が与える出力は常に配列全体をオーバーライドする最後の数値なので、テストすることはできないし、何が原因か分からない。最後の数値が配列をオーバーライドするのを防ぐにはどうすればいいですか?
メインクラス:(ソート方法を除く)
int m;
int n; static Fraction fraction = new Fraction();//edited
int denominator;
int numerator;
Fraction[] frac;//fraction
string l = Console.ReadLine();
string[] split = l.Split(' ');
m = Int32.Parse(split[0]);
n = Int32.Parse(split[1]);
frac = new Fraction[m];
for (int i = 0; i < m; i++)
{
string o = Console.ReadLine();
string[] split2 = o.Split(' ');
denominator= Int32.Parse(split2[0]);
numerator= Int32.Parse(split2[1]);
fraction.denominator= denominator;
fraction.numerator= numerator;
frac[i] = fraction;//put the numbers in the
//array
}
if (m < n)
SelectionSort(frac);
else
QuickSort(frac, 0, m - 1);
for (int i =0; i< m; i++)
{
Console.WriteLine(frac[i]);
}
そして、これは分数クラスです:
int denominator;
int numerator;
public int denominator
{
get { return denominator; }
set { denominator= value; }
}
public int numerator
{
get { return numerator; }
set { numerator= value; }
}
public static bool operator <(Fraction left, Fraction right)
{
var diff = left.denominator* right.numerator- right.numerator* left.denominator;
return diff < 0;
}
public static bool operator >(Fraction left, Fraction right)
{
var difference= left.denominator* right.numerator- right.numerator* left.denominator;
return !(difference> 0);
}
public override String ToString()
{
return String.Format("{0} {1}", this.denominator, this.numerator);
}
私も彼らかどうか(今ゴマ使用されることはありません)私の演算子をテストすることはできません配列が間違っているため動作しているかどうかどのようにエラーを見つけるための任意の提案?
あなたのコードは意味がありません。 'fraction'はどこに宣言されていますか? –
申し訳ありませんが、私はコードに追加することを忘れていますが、小数点はメインクラスに宣言されています:static Fraction fraction = new Fraction(); これをコードに追加します – nate
なぜそれを静的と宣言しましたか? –