#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;
}
}
}
#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
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;
}
}
}
還是不行
你的程式主要有4個問題:
1. 關於 a == b == c 的問題, 這個樓上已經有人幫你解答了。
2. 你的迴圈並不會執行 T 次, 而是只會執行 T-1 次, 這個應該是利用「測試執行」就能找到的bug才對。
3. 三角形的判別有誤, 當三邊為 1 1 2 時應該為"Invalid", 但你的程式會判斷成"Isosceles"。
4. 注意測資輸入範圍, 輸入的範圍包含了0和負數。
以上就是目前大致看到的問題, 另外就是建議可以自行測試程式, 訓練自己debug的能力對將來會很有幫助的~~~ OwO
你的程式主要有4個問題:
1. 關於 a == b == c 的問題, 這個樓上已經有人幫你解答了。
2. 你的迴圈並不會執行 T 次, 而是只會執行 T-1 次, 這個應該是利用「測試執行」就能找到的bug才對。
3. 三角形的判別有誤, 當三邊為 1 1 2 時應該為"Invalid", 但你的程式會判斷成"Isosceles"。
4. 注意測資輸入範圍, 輸入的範圍包含了0和負數。
以上就是目前大致看到的問題, 另外就是建議可以自行測試程式, 訓練自己debug的能力對將來會很有幫助的~~~ OwO
謝大大們指點AC了