سلام.
کلاس آنالیزر رو براتون نوشتم.
فقط چند تا نکته هست که باید بگم.
اول اینکه این کلاس فقط یک عبارت چند جمله ای کامل رو در یک خط از ورودی میگیره و اونو به چند یک جمله ای تجزیه میکنه ولی هیچ کار محاسباتی روی آنها انجام نمیده یعنی باید خودتون زحمت محاسبه رو بکشید.
فرمت های قابل قبول هم به شکل زیر هستند(به علت کمبود وقت فرمت های پیچیده تر پشتیبانی نمیشوند):
کد:
/* Format */
// [+-n][a to z][^n]
// [+-n][a to z]
// [+-a to z][^n]
// [+-a to z]
// [+-n]
// True: +-12xy^2 or +-12xy or +-xy^2 or +-xy or +-12
// False: ^2 or +-2x^2y^ or etc.
این کلاس کلا از دو تابع تشکیل شده که شما فقط به یکی از آنها نیاز دارید و دیگری در اصل یک تابع داخلی میباشد.
تابعی که شما نیاز دارید به نام:
کد:
void AnalyzeInput(std::list<Polynomial> &list)
یک لیست دریافت میکند و آن را با ساختار Polynomial پر میکند.این تابع یک جمله از ورودی میگیرد و لیست را بر طبق ورود که یک چند جمله ای است پر میکند.حداکثر اندازه ورودی هم 1024 کاراکتر میباشد و کاراکتر space هم نادیده گرفته میشود.(اگر به کاراکتر بیشتر نیاز داشتید میتونید براحتی تغییر بدید)
بطور مثال اگر عبارت:
را وارد کنید لیست از 5 ساختار یک جمله ای با مقدار های زیر پر میشود:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ساختار Polynomial هم در کلاس تعریف شده و به شکل زیر هست. اگر عبارتی فاقد توان باشد مقدار 1- در power جایگزین میشود(هر ساختار نمونه ای از یک جمله ای میباشد):
کد:
struct Polynomial
{
int coefficient;
int power;
std::string character;
};
تنها کاری که باید انجام بدید اینه که ابتدا یک لیست خالی از Polynomial ایجاد کنید و بعد به تابع انتقالش بدید تابع لیست را به ترتیب از چپ به راست عبارت ورودی پر میکند و میتونید هر محاسباتی رو که لازم داشتید روی ساختار های داخل لیست انجام بدید.
برای مثال برای مرتب کردن عبارت میتونید ساختار ها رو با توجه به بزرگترین توان مرتب کنید.
بقیه توضیحات در خود کلاس کامنت گذاری شده.
اگر سوالی هم داشتید بپرسید.
کلاس (تمام کلاس داخل هدر تعریف شده):
کد:
http://up9.--------.com/images/limhktwe9wgcqbe49xm.zip
موفق باشید.