سلام،
اول از همه واقعا عذر میخوام که یکم دیر جواب میدم.
خوب گرفتم چی شد ، این مسئله ، میشه گفت یکم سخته ... سخت از چه نظر؟ الان میگم !
شما هر رشته ورودی که به عنوان معادله خطی دریافت میکنید رو باید بررسی کنید ، اینطوری :
مثلا ، ورودی ما این هست :
اول باید عبارتهایی که بین علامت «+» یا «-» هستن یکی یکی از هم جدا کنید.
خیلی راحت میشه با یه حلقه نوشت.
بعد چک کنید که آیا داخل اون عبارت جداشده ، علامت ^ هست؟
اگر بود ، یکی از عدد بعد از ^ کم بشه ، و اصل عدد ضرب در عدد قبل از ^ بشه.
اگر هم نبود ، مقدار 1 یا 0 رو چاپ کنه ( برای متغیر 1 ، برای عدد 0 !)
یه نمونه مثال میزنم :
در مرحله اول 277x^4 جدا میشه.
آیا داخلش ^ داریم؟ بله !
پس 4 را ضربدر 277 کن و یکی از 4 کم ! ( 1108x^3 )
قسمت بعدی : 2 جدا میشه.
آیا داخلش ^ داریم؟ خیر ...
عدد است یا حرف (متغیر ) ، عدد ... پس عدد صفر را چاپ کن !
قسمت بعدی ، x^6
آیا ^ دارد؟ بله ...
یکی کم کن ، ضرب در عدد قبل کن ...
// البته یه شرط دیگه هم لازم هست که چک کنه ، پشت متغیر عدد هست یا نه !
// که خیلی راحت میشه ، اگه حرف ( کارکتر ) اول قسمت جدا شده ، عدد باشه ، میشه عدد در غیر اینصورت یعنی اینکه عدد نداره ...
یه نکته دیگه ، وقتی اینطوری جدا می کنید ، نیاز به یه تابع تبدیل رشته به عدد دارید.
برای مثال 277 اینجا دویست و هفتاد و هفت نبود ، بلکه دو ، هفت ، هفت بود ...
یا حتی رقم توان ، اون هم عدد نبود ، کارکتر بود ...
هر دوی اینها باید تبدیل به عدد بشن بعد ...
متاسفانه یکم بیحوصلم ، وگرنه حتما برای تفریح هم که شده ، مینوشتم.
اگر باز راهنمایی نیاز بود ، در خدمتم.