こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C#

C#の質問です。
『クラスIntArrayを作成し、作成したクラスが正常に動作するか検証するためのクラスを作成してください。』
というプログラムを組んでおり、クラスIntArrayとその動作を検証するクラスを作成したのですが、クラスIntArrayについて「問題文で指定された通りに作成されていません。」という指摘を受けました。
何度も見直したのですが、どの部分が指定された通りになっていないのか、自分では見つけることが出来ませんでした;
私が作成したクラスIntArrayとその仕様については、下記のとおりです。
お分かりになる方がいらっしゃいましたら、ご助言をお願いいたします。

【クラスIntArray 仕様】
<インスタンス変数>
int型の配列data

<コンストラクタ>
以下の3種類を用意します。
・int型の配列を受け取り、そのコピーを内部的に保持します。
・第1引数で指定された要素数を持つ配列を確保し、全ての要素に初期値として第2引数で指定された値をセットします。
・第1引数で指定された要素数を持つ配列を確保し、全ての要素に初期値としてゼロをセットします。

<メソッド>
・Sort
内部的に保持している配列を、引数の値がtrueであれば昇順、falseであれば降順にソートする
・Length
IntArrayが保持している配列の要素数を取得する
・GetElement
引数に指定された要素番号の値を取得する
・SetElement
第1引数に指定された要素番号に第2引数で指定された値を格納する
・GetArray
IntArrayが保持している配列のコピーを取得する


【作成したクラスIntArray】
using System;

private int[] data;

public IntArray(int[] array)
{
this.data = new int[array.Length];
array.CopyTo(this.data, 0);

for (int index = 0; index < this.data.Length; index++)
{
// 先頭の要素以外を出力する場合
if (index > 0)
{
Console.Write(", ");
}
Console.Write(this.data[index]);
}
Console.WriteLine();
}

public IntArray(int args1, int args2)
{
int[] myarray = new int[args1];
for (int index = 0; index < args1; index++)
{
myarray[index] = args2;
}
for (int index = 0; index < myarray.Length; index++)
{
// 先頭の要素以外を出力する場合
if (index > 0)
{
Console.Write(", ");
}
Console.Write(myarray[index]);
}
Console.WriteLine();
}

public IntArray(int args)
{
int[] myarray = new int[args];
for (int index = 0; index < args; index++)
{
myarray[index] = 0;
}
for (int index = 0; index < myarray.Length; index++)
{
// 先頭の要素以外を出力する場合
if (index > 0)
{
Console.Write(", ");
}
Console.Write(myarray[index]);
}
Console.WriteLine();
}

public void Sort(bool flg)
{
Array.Sort(this.data); //昇順にソート
if (!flg)  //降順にソート
{
Array.Reverse(this.data);
}
for (int index = 0; index < this.data.Length; index++)
{
// 先頭の要素以外を出力する場合
if (index > 0)
{
Console.Write(", ");
}
Console.Write(this.data[index]);
}
Console.WriteLine();
}

public int Length()
{
return this.data.Length;
}
public int GetElement(int args)
{
int getvalue = this.data[args];
return getvalue;
}

public void SetElement(int args1, int args2)
{
this.data[args1] = args2;
}
public void GetArray()
{
for (int index = 0; index < this.data.Length; index++)
{
// 先頭の要素以外を出力する場合
if (index > 0)
{
Console.Write(", ");
}
Console.Write(this.data[index]);
}
Console.WriteLine();
}
}

投稿日時 - 2008-10-17 14:14:15

QNo.4408313

すぐに回答ほしいです

質問者が選んだベストアンサー

課題の放棄に見えるのですが。。。がんばって自分で考えましょう。
ぱっと見ですが、疑問に思ったことを書きます。
後続の課題に対する伏線があるかもしれないので、直接の回答は書きません。

1.配列要素を Console 出力せよ、とはどこにも書いていないが?
2.コンストラクタ2つめと3つめの仕様を言葉どおりにとりすぎでは?(コンストラクタから抜けると破棄されるような配列を確保しても意味がない。)
3.Sort が言葉どおりの仕様になっていない。
4.少なくとも GetArray はおかしい。GetElement は実装できているのに。。。

他にも気になるところがありますが、このぐらいにて。

投稿日時 - 2008-10-17 14:57:01

お礼

ご回答ありがとうございました!
ご指摘いただいた箇所を見直してみたいと思います。

投稿日時 - 2008-10-18 12:46:40

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問