LGOJ P1022 計算器的改良

2022-07-25 06:03:09 字數 1602 閱讀 2211

依然是自帶大常數的\(stl\)

於是乎就有了這個很長的**

雖然很長但是很傻瓜

但其實就是很傻。

詳情看注釋

// p1022.cpp: 定義控制台應用程式的入口點。

////#include "stdafx.h"

//#include #include #include #include #include #include #include #include using namespace std;

listl, l1, l2;

double unk = 0;//未知數的係數

c = 0;//常數項

char unkw;//未知數的字母,因為本題的字母不確定所以要單獨記錄

int yes = 1;//↑跟unkw有關的乙個引數

void intial()//初始化

int flag = 0;

//↓要十分注意,在我們的習慣中未知數的係數如果是1的話是可以省略的

//↓這是本題乙個坑點

for (list::iterator it = l.begin(); it != l.end(); it++)

if (*it >= 'a'&&*it <= 'z')

it++;

} //↓把等號左右兩邊的東西分開放更加直觀而方便

for (list::iterator it = l.begin(); it != l.end(); it++)

it--;

} if (flag == 0)

if (flag == 1)

}l1.push_back('+');

l2.push_back('+');

//判斷的時候是取兩個符號之間的數的,所以要在末尾補上符號

}void debug()//這個只是用來除錯的

int ltoi(listtlist)//從list到int的函式

} return minus ? (-ans) : (ans);

}void deal(listtlist)//分離未知數和常數

else }

}void judge()//處理等號左邊的東西

if (cnt == 2)//右邊有符號,記錄

} }}

void judge2()//對於右邊東西的判定,大體與judge()相同

if (cnt == 2)

else

cnt = 0;

deal(curr);

curr.clear();

}} }

}int main()

intial();

//debug();

judge();

judge2();

double x = 0;

x = -(c / unk);

if (x == 0)x = abs(x);//注意對-0.000特殊處理,坑點!

cout << c << ' ' << unk << endl;

cout << unkw << '=';

printf("%.3f", x);//保留三位

return 0;

}

P1022計算器 改良

傳送 這個題讓你通過自己的努力,來寫乙個可以解一元一次方程的計算題 麻麻再也不用擔心我計算錯了qwq 我們先學習一下一元一次方程的解法 step1 移項。把帶有未知數的項移到方程的一邊,把常數項移到方程的另一邊。step2 係數化一。方程左右兩邊同時除以未知數的係數 step3 寫答 最後別忘了輸出...

P1022 計算器的改良

nclncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zlzl先生首先研究了一些一元一次方程的例項 4 3x 84 3x 8 6a ...

P1022 計算器的改良

nclncl是一家專門從事計算器改良與公升級的實驗室,最近該實驗室收到了某公司所委託的乙個任務 需要在該公司某型號的計算器上加上解一元一次方程的功能。實驗室將這個任務交給了乙個剛進入的新手zl先生。為了很好的完成這個任務,zlzl先生首先研究了一些一元一次方程的例項 4 3x 84 3x 8 6a ...