برنامه ای که اعضای آرایه را به صورت غیر تکراری نشان میدهد. نیازمند به توضیح - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

برنامه ای که اعضای آرایه را به صورت غیر تکراری نشان میدهد. نیازمند به توضیح

0 امتیاز

لطفا چند خط کدی رو که با رنگ قرمز هایلایت کردم برای من توضیح بدبد ممنونم میشم.

static void Main(string[] args)

        {

            int[] Repeat = new int[100];

            int n,i,counter=0,j,k;

            Console.Write("ENTER THE NUMBER OF ELEMENTS IN THE ARRAY: ");

            n = Convert.ToInt32(Console.ReadLine());

 

            for (i = 1; i <= n; i++)

            {

                Console.Write("ELEMENT NUMBER {0} IS: ", i);

                Repeat[i] = Convert.ToInt32(Console.ReadLine());            

            }

 

            Console.WriteLine("THE UNIQUE ELEMENTS FOUND IN THE ARRAY ARE: ");

 

            for (i = 1; i <= n; i++)

            {

                counter = 0;

 

                for (j = 1; j <= i - 1; j++)

                {

                    if (Repeat[i] == Repeat[j])

                    {

                        counter++;

                    }

 

                }

 

                for (k = i + 1; k <= n; k++)

                {

                    if (Repeat[i] == Repeat[k])

                    {

                        counter++;

                    }

                }

 

                if (counter == 0)

                {

                    Console.Write("{0}  ", Repeat[i]);

                }

            }

            Console.ReadKey();

        }

    }

}

 

سوال شده تیر 25, 1399  بوسیله ی golden.light (امتیاز 43)   6 7 10

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام.دوست عزیز ،کلیت اون بخشی که فرمودین اینه که به ازای هر عنصر آرایه،کل آرایه رو جستجو می کنه واگر عنصر دیگری برابر با اون پیدا نکرد،اون عنصر رو به عنوان یک مقدار بی تکرار در آرایه چاپ می کنه.البته این کدی که گذاشتید یه کار ساده رو که با دو تا حلقه for هم میشه انجام داد رو پیچیده کرده(نمی دونم چرا !!!!) کد ساده تری که معادل کد بالا عمل میکنه رو براتون می ذارم.

for(int i= 0;i<n;i++)
{
  counter = ۰;
  for(int j= 0;j<n;j++)
  {
    if(Repeat[i]==Repeat[j])
    {
      counter++;
    }
    
  }

  if(counter == 1)
  {
    Console.Write("{0}  ", Repeat[i]);
  }
}

 

پاسخ داده شده تیر 26, 1399 بوسیله ی ik (امتیاز 571)   1 2 8
انتخاب شد تیر 27, 1399 بوسیله ی golden.light
خیلی ممنونم از پاسخ عالی شما. یک سوال دیگه که از شما داشتم در مورد Counter هست. میشه لطفا در مورد Counter اول و آخر توضیح بدید. ممنونم.
سلام.نقش شمارنده تعداد عنصر مورد نظر رو بر عهده داره.مثلا اگه آرایه شما شامل اعداد 2و4و3و4و5و7 باشه ، در دور اول حلقه(حلقه اول) تعداد 2 رو میشماره(هر بار که یه 2 پیدا کنه(توی حلقه دوم) counter یه دونه بهش اضافه میشه).در آخر هم چک میکنه اگه فقط یه دونه 2 وجود داشت(counter==1)،اون رو چاپ میکنه.
و به همین ترتیب کار رو برای بقیه عناصر هم انجام میده.یعنی دور بعدی حلقه تعداد 4 ها رو میشمره.دور بعد 3 و الی آخر.
از توضیحات عالی شما بسیار سپاسگزارم.
...