-5

したがって、関数 (InsertMark という名前) のコードは以下のとおりです。この関数をどのように呼び出して、たとえば 10 人のマークを iMarks という配列に入力しますか?

static void InsertMark(int [] piMarkArray, int piStuNum)
{
  int iMark;

  Console.Write("Enter mark for student " + piStuNum + ": ");
  iMark = Convert.ToInt32(Console.ReadLine());

  while (iMark < 0 || iMark > 100)
  {
    Console.Write("Not a percentage. Enter again: ");
    iMark = Convert.ToInt32(Console.ReadLine());
  }

  //update array element with this mark
  piMarkArray[piStuNum] = iMark;
  }

ありがとう。

4

6 に答える 6

1

piMarkArray[piStuNum] = iMark;をwhileループ内に移動し、indexを使用し、indexが配列の長さ以上の場合はループを終了します。

 int index=0;
 while ((iMark < 0 || iMark > 100) && index < piMarkArray.Length) // exit the loop array is full
 {
    Console.Write("Not a percentage. Enter again: ");
    iMark = Convert.ToInt32(Console.ReadLine());
    piMarkArray[index++] = iMark; // Here marks are set
  }

  //update array element with this mark
于 2013-01-09T19:47:24.063 に答える
0

サイズ10の配列を宣言する必要がありますint[] iMarks = new int[10]。次に、forループで、配列とカウンター値を関数に渡します。

        int[] iMarks = new int[10];
        for(int x = 0; x < 10; x++)
            InsertMark(iMarks, x);

これが完全なクラス/実例です:

static void Main(string[] args)
    {
        int[] iMarks = new int[10];
        for(int x = 0; x < 10; x++)
            InsertMark(iMarks, x);

        Console.Read();

    }

    static void InsertMark(int[] piMarkArray, int piStuNum)
    {
        int iMark;

        Console.Write("Enter mark for student " + piStuNum + ": ");
        iMark = Convert.ToInt32(Console.ReadLine());

        while(iMark < 0 || iMark > 100)
        {
            Console.Write("Not a percentage. Enter again: ");
            iMark = Convert.ToInt32(Console.ReadLine());
        }

        //update array element with this mark
        piMarkArray[piStuNum] = iMark;
    }
}
于 2013-01-09T19:52:21.690 に答える
0

ここでは、マークを保持する配列を作成10し、ループ内でメソッドを入力します。

int[] marks = new int[10];
for(int i = 0; i < marks.Length; i++)
    InsertMark(marks, i);
于 2013-01-09T19:47:47.077 に答える
0

main 関数では、次のコードを使用できます。

 int iMarks[10];

for(int i = 0; i <10; i++ )
   InsertMark(iMarks, i)
于 2013-01-09T19:48:01.730 に答える
0

このようなものを探していますか?

for(int i=0; i<10; i++)
{
    InsertMark(iMarks, i);
}
于 2013-01-09T19:48:11.487 に答える
0

コーディングには常に複数の方法があり、これも例外ではありません。ここに記載しているのは、これを行う慣用的な C# の一例です。私が考えることができる少なくとも 2 つの変形がありますが、どちらが優れているかはわかりませんが、これは元のアイデアに最も近いものです。

まず、基本Studentクラス:

class Student
{
   public int ID;
   public int Mark;
}

次に、マークを求める関数

int GetMark(int studentID)
{
    Console.Write("Enter mark for student " + studentID + ": ");
    int mark = Convert.ToInt32(Console.ReadLine());

    while (iMark < 0 || iMark > 100)
    {
        Console.Write("Not a percentage. Enter again: ");
        iMark = Convert.ToInt32(Console.ReadLine());
    }
    return mark;
}

Student最後に、メイン プログラムから、オブジェクトのリストまたは配列を呼び出しAllStudentsて、次のようにします。

foreach (Student student in AllStudents)
{
    student.Mark = GetMark(student.ID); 
}

または、クラスを使用していない場合、ループは次のようになります。

int[] marks = new int[10]; // Or whatever size it needs to be.
for (int i = 0; i < marks.Length; i++)
{
   marks[i] = GetMark(i);
}
于 2013-01-09T20:08:21.590 に答える