0

ここにいくつかの改善が必要なプログラムがあります。このプログラムは、配列に 5 つの要素を入力し、重複があれば削除します。動作しますが、問題はすべての重複をゼロに設定することです。ゼロを表示したくありません。完全に破壊して排除したい。その重複した要素を表示したくありません。これは私がこれまでに持っているものです!いくつかの助けを使うことができます。ありがとうございました。

// Gurpreet Singh
// Duplicate Program
using System;

class duplicate 
{
    static void Main() 
    {
    const int Array_Size = 5;
    int [] number = new int [Array_Size];
    int i;

    for ( i = 0; i < Array_Size; i++) 
    {
        Console.Write("Element " + i + ":    ");
        number[i] = Int32.Parse(Console.ReadLine());
        if (number[i] < 9 || number[i] > 101)
        {
            Console.WriteLine("Enter Number between 10 - 100");
            number[i] = Int32.Parse(Console.ReadLine());
        }
    }

    for (i = 0; i < Array_Size; i++)
    {
        for (int j = 0; j < Array_Size; j++) 
        {
            if (i != j)
            {
                if (number[j] == number[i])
                    number[j] = 0;
            }
        }
    }

    Console.WriteLine("Duplicate Removed:");
    for (i = 0; i < Array_Size; i++)
    {
        Console.WriteLine("Element " + i + "    " + number[i]);
    }
    Console.ReadLine();
}
}
4

3 に答える 3

3

最も簡単な方法は、Linq のDistinct方法を使用することです。

number = number.Distinct().ToArray();

これにより、重複のない新しい配列が返されます。

于 2013-04-01T03:57:39.807 に答える
2

次の行で、複製の値をゼロに割り当てるため、複製はゼロとして表示されます。

if(number[j]==number[i])
    number[j]=0

配列から要素を削除するには、次のコードを使用します。

if(number[j]==number[i])
{
    int k=j;
    while(k<Array_Size-1)
    {
        number[k]=number[k+1];
        k++;
    }
    Array_Size--;
}

ステートメントArray_Size--;は、最後の要素が 2 回繰り返されないように行われます。

于 2013-04-01T03:57:54.160 に答える