P1022計算器 改良

2022-04-12 03:20:38 字數 1419 閱讀 5131

傳送

這個題讓你通過自己的努力,來寫乙個可以解一元一次方程的計算題(麻麻再也不用擔心我計算錯了qwq)

我們先學習一下一元一次方程的解法

step1:移項。把帶有未知數的項移到方程的一邊,把常數項移到方程的另一邊。

step2:係數化一。方程左右兩邊同時除以未知數的係數

step3:寫答(最後別忘了輸出是"未知數=....."的格式)

解方程都會,關鍵是怎麼讓電腦進行移項。我們在解方程的時候通常把未知數移到左邊,常數移到右邊,並且在等號右邊含有未知數的項是要變號的,在等號左邊常數項要變號。所以我們在計算未知數的係數與常數時,可以以等號為劃分點,進行計算。

方程用字串的形式讀入,我們也注意到,每一項的起點是發現「+「 」-」 「=」,終點也是如此。所以我們在沒有掃瞄到符號或未知數時,就繼續計算當前項的絕對值,當掃瞄到下乙個符號的時候,就將算好的值按照符號與是否掃瞄過等號累加(這裡分別用k,v記錄未知數的係數和所有常數項的和)

v/k的值即為答案,注意ans如果是-0,要特判,輸出正0(雖然這倆沒毛區別,但評測機說你錯了你就錯了)

一些小坑見**

#include#include

#include

#include

#include

using

namespace

std;

char a[1000],c,aa;//

aa記錄未知數是什麼字元

intm,k,q,v;

bool dy,xs;//

dy標記是否掃瞄過等號,xs標記是否是含未知數的項(係數)

intmain()

else}//

注意若未知數前面不寫係數,則係數是1

elseelse}

}if(!dy)//

等號左邊的項

else}

elseelse}

}if(a[i]=='

=')dy=1;//

注意這些的更新順序

c=a[i]; //

記錄符號

xs=0

; }

else

if(a[i]>='

0'&&a[i]<='

9') //

只有是數字的字元才計算

else

}if(xs)//

最後一項掃瞄不到,要補上

else

double

ans;

if(k!=0

) ans=1.0*v/k;

else ans=0.000

;

if(ans==-0)ans=0

; cout

<"

="; printf("

%.3lf

",ans);

}

打了好久qwq

P1022 計算器的改良

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

P1022 計算器的改良

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

P1022 計算器的改良

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