1

目標は、一連の数値を入力すると、最小値と最大値が表示されるプログラムを作成することです。-99はセンチネルとして使用されます。

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

namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            double number = 0, maxValue = 0, minValue = 0;
            string goOn = "Y";

            Console.WriteLine("Please enter a series of numbers, when you wish to stop entering numbers please enter -99.");
            Console.WriteLine("The smallest and largest values will then be displayed.");
            Console.WriteLine("Remember not to enter -99 unless you want the series to end.");
            do
            {
                while (!double.TryParse(Console.ReadLine(), out number))
                    Console.WriteLine("Please enter whole numbers only");

                while (number != -99)
                {
                    process(ref number, ref minValue, ref maxValue);

                    while (!double.TryParse(Console.ReadLine(), out number))
                        Console.WriteLine("Please enter whole numbers only");
                }
                Console.WriteLine("The smallest value is {0} and the largest value is {1}.", minValue, maxValue);
                Console.WriteLine("Do you want to enter another series of numbers?");
                Console.WriteLine("If so enter y, if you want to end press any other key");
                goOn = Console.ReadLine();
                if (goOn.ToUpper() == "Y")
                {
                    Console.WriteLine("Please enter your set of numbers.");
                    Console.WriteLine("Remember not to enter -99 unless you want the series to end.");
                }

            } while (goOn.ToUpper() == "Y");
        }
        static void process(ref double minValue, ref double maxValue, ref double number)
        {

            if (number > maxValue)
            {
                number = maxValue;
            }
            if (number < minValue)
            {
                number = minValue;
            }

        }
    }
}

配列、バブル、またはクラスをまだ学んでいませんが、問題は次のとおりです。

おそらく、最小値と最大値を取得する方法が原因で、たとえば 3、22、7、15、1 と入力すると、値 22 が破棄されて 7 に置き換えられたため、22 ではなく 15 が返されます。

最小値が表示されず、代わりに 0 が表示される

数値以外が入力され、エラー メッセージが表示された後、さらに数値が入力されると、minValue は maxValue と同じように表示されます。

4

1 に答える 1

6

これは単純な間違いです:

static void process(ref double minValue, ref double maxValue, ref double number)
    {

        if (number > maxValue)
        {
            maxValue = number;
        }
        if (number < minValue)
        {
            minValue = number;
        }

    }

数値ではなく、maxValueとminValueに影響を与える必要があります。

于 2013-03-04T08:50:15.530 に答える