メソッドの作成練習問題

2023年1月27日

要件からコードを作成する練習です

問題

C#で次の条件でコードを記述しなさい

引数の値を合計するSumメソッドを作成します
Sumメソッドは、整数型配列1つを引数にとります
Sumメソッドは、配列要素の合計を整数型として呼び出し元に戻します

Sumメソッドを呼び出すコードは次のようになります
整数型配列に要素1,2,3を格納します
この配列を引数としてSumメソッドを呼び出します
Sumメソッドからの戻り値をコンソール画面に表示します

解答

解説

・Sumメソッドを定義し、整数型配列を引数として受け取ります
・Sumメソッド内で、変数totalを定義し、0で初期化します
・配列の要素数だけ、forループを回し、各要素をtotalに加算します
・最後に、totalをreturnします
・Mainメソッド内で、整数型配列numbersを定義し、1, 2, 3の要素を持つ配列を作成します
・Sumメソッドを呼び出し、戻り値をresultに代入します
・resultをConsole.WriteLineで出力します

.NET6以前(.NET6以降でも使えます)

class Program
{
    static int Sum(int[] arr)
    {
        int total = 0;
        for (int i = 0; i < arr.Length; i++)
        {
            total += arr[i];
        }
        return total;
    }

    static void Main(string[] args)
    {
        int[] numbers = new int[] { 1, 2, 3 };
        int result = Sum(numbers);
        Console.WriteLine(result);
    }
}

Sumメソッドはforeachでも実現できます

static int Sum(int[] arr)
{
    int total = 0;
    foreach (var data in arr)
    {
        total += data;
    }
    return total;
}

.NET6以降の場合

次のようにトップレベルステートメントでの記述ができます

int[] numbers = new int[] { 1, 2, 3 };
int result = Sum(numbers);
Console.WriteLine(result);

int Sum(int[] arr)
{
    int total = 0;
    for (int i = 0; i < arr.Length; i++)
    {
        total += arr[i];
    }
    return total;
}

おまけ

要件超えていますが、汎用性のある合算メソッドの自作を試みると次のようになります(.NET7以降

using System.Numerics;

int[] array = { 1, 2, 3 };
float[] array2 = { 1.3f, 2.5f, 3.2f };
List<double> list = new() { 1.2, 2.2, 3.3 };
Console.WriteLine(Sum(array));
Console.WriteLine(Sum(array2));
Console.WriteLine(Sum(list));

T Sum<T>(IEnumerable<T> array) where T : INumber<T>
{
    T total = T.Zero;

    foreach (var n in array)
    {
        total += n;
    }
    return total;
}

学習目的を度外視すると次のように記述できます
(すでにLINQで実装されています・・・・)

int[] array = { 1, 2, 3 };
Console.WriteLine(array.Sum());

C#,練習問題

Posted by hidepon