#16399: c++ 求救


duncan103015 (錦毛爺)

學校 : 國立溪湖高級中學
編號 : 85458
來源 : [49.216.38.72]
最後登入時間 :
2021-02-19 10:56:10
c461. apcs 邏輯運算子 (Logic Operators) -- apcs | From: [101.10.115.84] | 發表日期 : 2018-12-29 12:03

 

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int a,b,c,d;

while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;


}
return 0;

}

 

這樣寫為什麼 3 0 1 的xor 出不來??

 

 

 
#16403: Re:c++ 求救


314159265358979323846264338327 ... (少年π)

學校 : 臺北市私立延平高級中學
編號 : 69058
來源 : [223.137.149.175]
最後登入時間 :
2024-11-18 16:24:11
c461. apcs 邏輯運算子 (Logic Operators) -- apcs | From: [223.137.73.62] | 發表日期 : 2018-12-29 16:33

 

#include
#include
using namespace std;

int main()
{
int a,b,c,d;

while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;


}
return 0;

}

 

這樣寫為什麼 3 0 1 的xor 出不來??

 

 

因為這樣系統會誤以為a,b要進行的是位元的XOR運算
位元的XOR運算:
以3,0為例

3的二進位表示法為11

0的二進位表示法為00

位元的XOR運算是這樣運算的

(1^0)*2+(1^0)=3

結果為0,不為預期的1

要在用整數型態輸入過了之後,再把a,b轉成bool運算再輸出(可以用!=0或兩個!來轉換)

以下是我的程式碼((1)僅供參考(2)盡量自己寫,別看):

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <iostream>
using namespace std;
int main(int argc, char** argv) {
	int a,b,c,d=0;
	cin>>a>>b>>c;
	if((a&&b)==c)cout<<"AND"<<'\n',d++;
	if((a||b)==c)cout<<"OR"<<'\n',d++;
	if(((a!=0)^(b!=0))==c)cout<<"XOR"<<'\n',d++;
	
	if(d==0)cout<<"IMPOSSIBLE"<<'\n';
	return 0;
}
 
#16422: Re:c++ 求救


duncan103015 (錦毛爺)

學校 : 國立溪湖高級中學
編號 : 85458
來源 : [49.216.38.72]
最後登入時間 :
2021-02-19 10:56:10
c461. apcs 邏輯運算子 (Logic Operators) -- apcs | From: [101.10.115.84] | 發表日期 : 2018-12-30 00:02

 

#include
#include
using namespace std;

int main()
{
int a,b,c,d;

while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;


}
return 0;

}

 

這樣寫為什麼 3 0 1 的xor 出不來??

 

 

因為這樣系統會誤以為a,b要進行的是位元的XOR運算
位元的XOR運算:
以3,0為例

3的二進位表示法為11

0的二進位表示法為00

位元的XOR運算是這樣運算的

(1^0)*2+(1^0)=3

結果為0,不為預期的1

要在用整數型態輸入過了之後,再把a,b轉成bool運算再輸出(可以用!=0或兩個!來轉換)

以下是我的程式碼((1)僅供參考(2)盡量自己寫,別看):

 

 

 

 

 

 

 

 

 

 

 

 

 

#include 
using namespace std;
int main(int argc, char** argv) {
	int a,b,c,d=0;
	cin>>a>>b>>c;
	if((a&&b)==c)cout<<"AND"<<'\n',d++;
	if((a||b)==c)cout<<"OR"<<'\n',d++;
	if(((a!=0)^(b!=0))==c)cout<<"XOR"<<'\n',d++;
	
	if(d==0)cout<<"IMPOSSIBLE"<<'\n';
	return 0;
}


感謝大大~~~已解決

 
#16426: Re:c++ 求救


314159265358979323846264338327 ... (少年π)

學校 : 臺北市私立延平高級中學
編號 : 69058
來源 : [223.137.149.175]
最後登入時間 :
2024-11-18 16:24:11
c461. apcs 邏輯運算子 (Logic Operators) -- apcs | From: [223.140.21.158] | 發表日期 : 2018-12-30 10:48

 

#include
#include
using namespace std;

int main()
{
int a,b,c,d;

while (cin>>a>>b>>c)
{
d=0;
if ((a&&b)==c)
{cout <<"AND"<<endl;
d++;}
if ((a||b)==c)
{cout <<"OR"<<endl;
d++;}
if ((a^b)==c)
{cout <<"XOR"<<endl;
d++;}
if (d==0)
cout <<"IMPOSSIBLE"<<endl;


}
return 0;

}

 

這樣寫為什麼 3 0 1 的xor 出不來??

 

 

因為這樣系統會誤以為a,b要進行的是位元的XOR運算
位元的XOR運算:
以3,0為例

3的二進位表示法為11

0的二進位表示法為00

位元的XOR運算是這樣運算的

(1^0)*2+(1^0)=3

結果為3,不為預期的1

要在用整數型態輸入過了之後,再把a,b轉成bool運算再輸出(可以用!=0或兩個!來轉換)

以下是我的程式碼((1)僅供參考(2)盡量自己寫,別看):

 

 

 

 

 

 

 

 

 

 

 

 

 

#include 
using namespace std;
int main(int argc, char** argv) {
	int a,b,c,d=0;
	cin>>a>>b>>c;
	if((a&&b)==c)cout<<"AND"<<'\n',d++;
	if((a||b)==c)cout<<"OR"<<'\n',d++;
	if(((a!=0)^(b!=0))==c)cout<<"XOR"<<'\n',d++;
	
	if(d==0)cout<<"IMPOSSIBLE"<<'\n';
	return 0;
}


感謝大大~~~已解決




 
ZeroJudge Forum