#15403: 我卡題了


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
d980. 11479 - Is this the easiest problem? -- UVa11479 | From: [203.72.178.252] | 發表日期 : 2018-10-04 17:46

#include <iostream>
using namespace std;
int main(int argc, char** argv){
long long int a,b,c,e;
cin>>e;
for(int d=1;d<e;d++){
cin>>a>>b>>c;
if(a+b<c){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(a+c<b){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(c+b<a){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(a==b==c){
cout<<"Case "<<d<<": Equilateral"<<endl;
}
else if(a==b){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else if(a==c){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else if(c==b){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else{
cout<<"Case "<<d<<": Scalene"<<endl;
}
}
}

 
#15405: Re:我卡題了


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
d980. 11479 - Is this the easiest problem? -- UVa11479 | From: [49.158.83.43] | 發表日期 : 2018-10-04 20:15

#include
using namespace std;
int main(int argc, char** argv){
long long int a,b,c,e;
cin>>e;
for(int d=1;d<e;d++){
cin>>a>>b>>c;
if(a+b<c){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(a+c<b){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(c+b<a){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(a==b==c){
cout<<"Case "<<d<<": Equilateral"<<endl;
}
else if(a==b){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else if(a==c){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else if(c==b){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else{
cout<<"Case "<<d<<": Scalene"<<endl;
}
}
}


 else if(a==b==c){
cout<<"Case "<<d<<": Equilateral"<<endl;
}

這樣寫並不等價於數學裡的邏輯式,「a = b = c」喔。在像C++等程式語言裡,a == b == c 的意思是:先判斷 a == b 之結果,傳回一個布林值(true 或 false);然後再判斷這個布林值是否 == c 的值,而通常是不會相等的。

但是這樣的邏輯表達式,python等等地語言是可以判讀的。

 
#15410: Re:我卡題了


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
d980. 11479 - Is this the easiest problem? -- UVa11479 | From: [114.42.208.118] | 發表日期 : 2018-10-04 21:32

#include
using namespace std;
int main(int argc, char** argv){
long long int a,b,c,e;
cin>>e;
for(int d=1;d<e;d++){
cin>>a>>b>>c;
if(a+b<c){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(a+c<b){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(c+b<a){
cout<<"Case "<<d<<": Invalid"<<endl;
}
else if(a==b==c){
cout<<"Case "<<d<<": Equilateral"<<endl;
}
else if(a==b){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else if(a==c){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else if(c==b){
cout<<"Case "<<d<<": Isosceles"<<endl;
}
else{
cout<<"Case "<<d<<": Scalene"<<endl;
}
}
}


 else if(a==b==c){
cout<<"Case "<<d<<": Equilateral"<<endl;
}

這樣寫並不等價於數學裡的邏輯式,「a = b = c」喔。在像C++等程式語言裡,a == b == c 的意思是:先判斷 a == b 之結果,傳回一個布林值(true 或 false);然後再判斷這個布林值是否 == c 的值,而通常是不會相等的。

但是這樣的邏輯表達式,python等等地語言是可以判讀的。

#include <iostream>

using namespace std;

int main(int argc, char** argv){

long long int a,b,c,e;

cin>>e;

for(int d=1;d<e;d++){

cin>>a>>b>>c;

if(a+b<c){

cout<<"Case "<<d<<": Invalid"<<endl;

}

else if(a+c<b){

cout<<"Case "<<d<<": Invalid"<<endl;

}

else if(c+b<a){

cout<<"Case "<<d<<": Invalid"<<endl;

}

else if(a==b&&b==c){

cout<<"Case "<<d<<": Equilateral"<<endl;

}

else if(a==b){

cout<<"Case "<<d<<": Isosceles"<<endl;

}

else if(a==c){

cout<<"Case "<<d<<": Isosceles"<<endl;

}

else if(c==b){

cout<<"Case "<<d<<": Isosceles"<<endl;

}

else{

cout<<"Case "<<d<<": Scalene"<<endl;

}

}

}

還是不行

 
#15417: Re:我卡題了


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
d980. 11479 - Is this the easiest problem? -- UVa11479 | From: [140.122.136.52] | 發表日期 : 2018-10-05 11:51

你的程式主要有4個問題:

 

1. 關於 a == b == c 的問題, 這個樓上已經有人幫你解答了。

2. 你的迴圈並不會執行 T 次, 而是只會執行 T-1 次, 這個應該是利用「測試執行」就能找到的bug才對。

3. 三角形的判別有誤, 當三邊為 1 1 2 時應該為"Invalid", 但你的程式會判斷成"Isosceles"。

4. 注意測資輸入範圍, 輸入的範圍包含了0和負數。

 

以上就是目前大致看到的問題, 另外就是建議可以自行測試程式, 訓練自己debug的能力對將來會很有幫助的~~~  OwO

 
#15432: Re:我卡題了


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
d980. 11479 - Is this the easiest problem? -- UVa11479 | From: [114.42.208.118] | 發表日期 : 2018-10-05 21:51

你的程式主要有4個問題:

 

1. 關於 a == b == c 的問題, 這個樓上已經有人幫你解答了。

2. 你的迴圈並不會執行 T 次, 而是只會執行 T-1 次, 這個應該是利用「測試執行」就能找到的bug才對。

3. 三角形的判別有誤, 當三邊為 1 1 2 時應該為"Invalid", 但你的程式會判斷成"Isosceles"。

4. 注意測資輸入範圍, 輸入的範圍包含了0和負數。

 

以上就是目前大致看到的問題, 另外就是建議可以自行測試程式, 訓練自己debug的能力對將來會很有幫助的~~~  OwO


謝大大們指點AC了

 
ZeroJudge Forum