0

arraylist の double の合計が 100 になるまで、このプログラムを何度もループさせようとしています。または、50 を追加してから 51 を追加しようとすると、100 を超えていることがわかります。さまざまなループを試しましたが、まだ正しく動作しません。正しい方向に操縦する必要があるだけです。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            List<double> myList = new List<double>();
            do
            {
                Console.Write("Enter your number: ");
                myList.Add(Convert.ToDouble(Console.ReadLine()));

            } while (myList.Sum() >= 100);
            double sum = myList.Sum();
            Console.WriteLine("The sum is " + sum);

            double avg = sum / myList.Count;
            Console.WriteLine("The average is " + avg);
            Console.ReadLine();
        }
    }
}
4

5 に答える 5

0

これにより、入力されたすべての数値が読み取られ、それらが加算されます。合計が 100 以上になると終了します。

static void Main(string[] args)
{
    List<double> myList = new List<double>();
    var sum = 0;
    do
    {
        Console.Write("Enter your number: ");
        myList.Add(Convert.ToDouble(Console.ReadLine()));

        sum = myList.Sum();

        if (sum > 100)
        {
            Console.Write("Your sum is greater than 100.");
        }
    } while (sum <= 100)

    Console.WriteLine("The sum is " + sum);

    double avg = sum / myList.Count;
    Console.WriteLine("The average is " + avg);
}
于 2013-10-29T17:51:46.210 に答える
0

合計が 100 に達しない間はループする必要があるため、条件はinputList.Sum() < 100です。

合計と新しい数が 100 より大きい場合は、ユーザーに伝えます。そうでない場合は、それらを一緒に追加できます。

また、本当に 10 進数が必要な場合を除き、ユーザーに を照会するint必要があります (その場合は、イプシロンで等しいかどうかを確認する必要があります)。

これにより、次のようになります。

static void Main(string[] args)
{
    List<int> inputList = new List<int>();

    do
    {
        Console.Write("Enter your number: ");
        int numberToAdd = Convert.ToInt32(Console.ReadLine());

        if (numberToAdd + inputList.Sum() > 100)
        {
            Console.WriteLine("Number will not be added, {0} is greater than 100", numberToAdd + inputList.Sum());
        }
        else
        {
            inputList.Add(numberToAdd);
        }

    } while (inputList.Sum() < 100);

    double sum = inputList.Sum();
    Console.WriteLine("The sum is " + sum);

    double avg = sum / inputList.Count;
    Console.WriteLine("The average is " + avg);

    Console.ReadLine();
}

少し掃除したら:

    static void Main(string[] args)
    {
        List<int> inputList = AskUserForInput();
        PrintSum(inputList);
        PrintAverage(inputList);

        Console.ReadLine();
    }

    private static List<int> AskUserForInput()
    {
        List<int> inputList = new List<int>();

        do
        {
            Console.Write("Enter your number: ");
            int numberToAdd = Convert.ToInt32(Console.ReadLine());

            if (IsGreaterThan100(numberToAdd, inputList))
            {
                Console.WriteLine("Number will not be added, {0} is greater than 100", numberToAdd + inputList.Sum());
            }
            else
            {
                inputList.Add(numberToAdd);
            }
        } while (IsSumLowerThan100(inputList));

        return inputList;
    }

    private static bool IsGreaterThan100(int numberToAdd, List<int> inputList)
    {
        return numberToAdd + inputList.Sum() > 100;
    }

    private static bool IsSumLowerThan100(List<int> inputList)
    {
        return inputList.Sum() < 100;
    }

    private static void PrintAverage(List<int> inputList)
    {
        double avg = inputList.Sum() / inputList.Count;
        Console.WriteLine("The average is " + avg);
    }

    private static void PrintSum(List<int> inputList)
    {
        double sum = inputList.Sum();
        Console.WriteLine("The sum is " + sum);
    }
}
于 2013-10-29T17:52:25.150 に答える
0

あなたのループはこのように見える必要があります

    do
    {
        Console.Write("Enter your number: ");

        double num = Convert.ToDouble(Console.ReadLine());
        if ((myList.Sum() + num) <= 100)
            myList.Add(num);
        else
            break;

    } while (true);

正確な要件が不明なため、変更する必要がありますが、それは始まりです

于 2013-10-29T17:52:55.710 に答える
0

このループを試してください:

     while (true)
        {
            Console.Write("Enter your number: ");
            double temp = Convert.ToDouble(Console.ReadLine());
            if (myList.Sum() + temp <= 100)
            {
                myList.Add(temp);
                if (myList.Sum() >= 100)
                {
                    break;
                }
            }
            else
            {
                Console.Write("You Exceed The Limit ");
            }
        }
于 2013-10-29T17:53:04.663 に答える
0

ループ内の数値の合計を確認し、合計がクォータを超えている場合はメッセージを書き込みます。

double sum = 0.0;
bool continue = true;
do
{
    Console.Write("Enter your number: ");
    var input = Console.ReadLine();
    if (input.Length > 0)
    {
        double next = Convert.ToDouble(input);
        if (sum + next <= 100)
        {
            sum += next;
            myList.Add(next);
        }
        else
        {
            Console.WriteLine("Input exceeds quota.");
        }
    }
    else
    {
        continue = false;
    }
} while (continue);

このコードに関する注意事項:

  • これは、ユーザーが何も入力せずに単にリターンを押すまで、入力を読み取り続けます。
  • 反復ごとに合計を再計算するのではなく、ローカル変数を使用します。
  • ユーザーは新しい値を入力できます。割り当てを超える場合は、代わりに小さい値を入力してください。
于 2013-10-29T17:41:58.450 に答える