-2

難しいことではありませんが、私はそれをしましたが、その位置を見つける方法がわかりません。CASE1 と CASE2 では位置を見つけることができますが、CASE3 では見つけられません。何か助けはありますか?

        int serial = 1, num, max, max2, i = 2,n;
        Console.WriteLine("Enter number of numbers");
        n = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter number");
        num = int.Parse(Console.ReadLine());
        /*case 1 */
        max = num;
        max2 = num;
        for (; i <= n; i++)
        {
            Console.WriteLine("enter num");
            num = int.Parse(Console.ReadLine());
             /* case 3 */
            if (num > max)
            {
                max2 = max;
                max = num;
                serial = i;
            }
              /* case 2 */
            else if (num > max2)
            {
                max2 = num;
                serial = i;
            }
        }
4

2 に答える 2

0

もう 1 つの変数を使用して、最大数の位置も格納してみましょう。以下serial2は、問題の結果です。

int serial = 1, serial2 = 1, num, max, max2, i = 2,n;
Console.WriteLine("Enter number of numbers");
n = int.Parse(Console.ReadLine());
Console.WriteLine("Enter number");
num = int.Parse(Console.ReadLine());
/*case 1 */
max = num;
max2 = num;
for (; i <= n; i++)
{
    Console.WriteLine("enter num");
    num = int.Parse(Console.ReadLine());
     /* case 3 */
    if (num > max)
    {
        max2 = max;
        max = num;
        serial2 = serial;
        serial = i;
    }
      /* case 2 */
    else if (num > max2)
    {
        max2 = num;
        serial2 = i;
    }
}
于 2012-12-08T01:18:56.000 に答える
0

これがあなたの求めているものだと思います-入力した数値が最大の数値に取って代わったときに、2番目に大きいインデックスを更新していませんでした:

Console.WriteLine("Enter number of numbers");
int numberOfNumbers = int.Parse(Console.ReadLine());
int? largestNumber = null;
int? secondLargestNumber = null;
int? indexOfLargestNumber = null;
int? indexOfSecondLargestNumber = null;

for (int i = 0; i < numberOfNumbers; i++)
{
    Console.WriteLine("Enter number");
    int inputNumber = int.Parse(Console.ReadLine());

    if (largestNumber == null || inputNumber > largestNumber)
    { 

        secondLargestNumber = largestNumber;
        largestNumber = inputNumber;

        indexOfSecondLargestNumber = indexOfLargestNumber;
        indexOfLargestNumber = i;

    }
    else if (secondLargestNumber == null || inputNumber > secondLargestNumber)
    {
        secondLargestNumber = inputNumber;
        indexOfSecondLargestNumber = i;
    }
}

/*because you started i=1 rather than i=0 as I've done, incrememting the indexes by 1*/
indexOfSecondLargestNumber++;
indexOfLargestNumber++;

Console.WriteLine("The {0} number entered ({1}) was the second largest.",indexOfSecondLargestNumber,secondLargestNumber);
于 2012-12-08T01:28:56.320 に答える