#include<stdio.h>
void main()
{
   int a[20], i, j, k, n;
  // clrscr();

   printf("\nEnter array size : ");
   scanf("%d",&n);

   printf("\nEnter %d array element : ", n);
   for(i = 0; i < n; i++)
   {
      scanf("%d",&a[i]);
   }

   printf("\nOriginal array is : ");
   for(i=0;i< n;i++)
   {
      printf(" %d",a[i]);
   }

   printf("\nNew array is  : ");
   for(i=0; i < n; i++)
   {
      for(j=i+1; j < n; )
      {
         if(a[i] == a[j])
         {
            for(k=j; k < n;k++)
            {
               a[k] = a[k+1];
            }
            n--;
         }
         else {
            j++;
         }
      }
   }

   for(i=0; i < n; i++)
   {
      printf("%d ", a[i]);
   }
//getch();
}

নিচের লাইনগুলো execute কিভাবে হচ্ছে একটু বুঝালে ভাল হত ?

for(i=0; i < n; i++)
       {
          for(j=i+1; j < n; )
          {
             if(a[i] == a[j])
             {
                for(k=j; k < n;k++)
                {
                   a[k] = a[k+1];
                }
                n--;
             }
             else {
                j++;
             }
          }
       }

asked 07 Sep '16, 11:01

Rejwan's gravatar image

Rejwan
1056

edited 07 Sep '16, 15:10

Kaiser%20Ahmed's gravatar image

Kaiser Ahmed
3.2k522


ধরি n = 4 এবং a[3] ={ 1, 3, 3 , 4 }

তাহলে, i এর মান হবে ০ থেকে ৩ । প্রত্যেক i এর মান এর জন্য একটি লুপ চলবে যেখানে লুপ শুরু হবে i এর মানের সাথে ১ যোগ করে আর শেষ হবে n থেকে ১ কম সংখ্যায় (আমাদের জন্য ৩ এ শেষ হবে)। যদি এই লুপ অ্যারে a[] এর উপর চলার সময় পাশাপাশি দুটি একই আইটেম/ভালু পায় তবে আর একটি লুপ চলবে যার কাজ হবে অ্যারেতে থাকা বর্তমান আইটেমকে তার পরবর্তী আইটেম দ্বারা পরিবর্তন করা। এখানে যেহেতু বর্তমান আইটেম এর জায়গা(ইনডেক্স)পরবর্তী আইটেম নিয়ে নিচ্ছে তাই অ্যারেতে থাকা আইটেম এর সংখ্যা কমছে। তাই দেখুন n এর মান এক করে কমছে। আর যদি দুটো পাশপাশি আইটেম এক না হয় তবে লুপ পরবর্তী ধাপে চলে যাচ্ছে। এবার উদাহরণ দেই n = 4 এবং a[3] ={ 1, 3, 3 , 4 } এর জন্য।

i = 0 
  j = 1
   a[0] == a[1] // না a[0] = 1 এবং a[1] =3
      j = 2 // j এর মান বাড়ল

  j = 2
   a[0] == a[2] // না a[0] = 1 এবং a[2] =3
    j = 3 // j এর মান বাড়ল

  j = 3
   a[0] == a[3] // না a[0] = 1 এবং a[3] =4
    j = 4 // j এর মান বাড়ল
j এর লুপ শেষ(j<n)

i = 1 
  j = 2
   a[1] == a[2] // হ্যাঁ a[1] = 3 এবং a[2] =3
      k = 2
        a[2]= a[3]
      k = 3
        a[3] = a[4]
    n = 3 // n এর মান কমল । বর্তমান অ্যারে a[2] = { 1, 3 , 4} । j এর মান আগেরটাই আছে

  j = 2
   a[1] == a[2] // না a[1] = 3 এবং a[2] =4
     j = 3 // j এর মান বাড়ল 
j এর লুপ শেষ(j<n)

আশা করি এরপরেরটুকু বুঝে নিতে পারবেন।

permanent link

answered 07 Sep '16, 15:43

Kaiser%20Ahmed's gravatar image

Kaiser Ahmed
3.2k522

ধন্যবাদ আপনাকে।

(19 Sep '16, 16:35) Rejwan
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×402
×4

question asked: 07 Sep '16, 11:01

question was seen: 496 times

last updated: 19 Sep '16, 16:35