c p p

c p p

کدها و برنامه های سی پلاس پلاس ، ساختمان داده به زبان cpp، کدها و برنامه های اسمبلی،پروژه های آماده سی پلاس ،سی پلاس تحت داس
c p p

c p p

کدها و برنامه های سی پلاس پلاس ، ساختمان داده به زبان cpp، کدها و برنامه های اسمبلی،پروژه های آماده سی پلاس ،سی پلاس تحت داس

جمع دو جمله ای با لیست پیوندی

سلام دوستان خوبم.

یکی از تمرین های ساختمان داده ، برنامه ای هست که دو عبارت دوجمله ای رو دریافت کنه و به کمک لیست پیوندی حاصلجمعشونو حساب کنه.

برنامه ای که اینجا گذاشتم همین کاررو انجام میده.منتها من یک کم گسترشش دادم.امکانات برنامه اظافه کردن چند دوجمله ای ، پاک کردن ، نمایش ، ساده کردن ، و جمع دو عبارت هستن.یک کلاس برای ساختن گره node هست که نما و ضریب رو در خودش نگه میداره ، یک کلاس برای پیوند دادن این گره ها وساختن دو جمله ای و کلاس دیگر هم برای لیست کردن این دو جمله ای ها و امکانات دیگه هست.  

 

برای ساده کردن دو جمله ای  در یک حلقه for هر بار یکی از داده های node را با تمام node های دیگر مقایسه میکنیم و در صورت برابر بودن اندیس دوم آنها مجموع در یکی از node ها قرارمیگیرد و node دیگری پاک میشود.این تابع ساده کردن هست:(لطفا کپیش کنید تو نوت پد) 

 

 void list::sade()
                                     {

  node *p=first; 

  node *q,*r;

  while(p->link!=NULL)
        {
         q=first;
         while(q->link!=NULL)
        {
         r=q;
         q=q->link;
         if(p->nama==q->nama && q!=p)
     {
      p->zarib+=q->zarib;
      r->link=q->link;
      q->link=NULL;
      q=r;
     }
        }
         p=p->link;
        }

    }

برای جمع کردن هم همین کار انجام میشه البته این بار حاصل جمع ها در یک لیست دیگر از node ها قرار میگیرند.  

 


  while(a->link!=NULL)
         {
   plusslist.insert(a->zarib , a->nama);
   a=a->link;
         }
  plusslist.insert(a->zarib , a->nama);
  while(b->link!=NULL)
         {
   plusslist.insert(b->zarib , b->nama);
   b=b->link;
         }
  plusslist.insert(b->zarib , b->nama);

  plusslist.sade(); 

 

 

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

 برنامه دو جمله ای بکمک لیست پیوندی

نظرات 3 + ارسال نظر
saeed karimi جمعه 17 اردیبهشت‌ماه سال 1389 ساعت 12:52 ب.ظ http://www.pasargadsaeed.blogfa.com/

سلام
خیلی ممنون

azadi پنج‌شنبه 19 خرداد‌ماه سال 1390 ساعت 12:01 ب.ظ

ممنون!

nasim پنج‌شنبه 8 خرداد‌ماه سال 1393 ساعت 10:44 ق.ظ

merC :*
:p

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد