#3860: 試好多次,到底哪裡錯了??


kelly830118 (嘉嘉)

學校 : 國立臺南女子高級中學
編號 : 11187
來源 : [203.71.96.253]
最後登入時間 :
2010-09-02 16:47:46
d170. 飛蛾撲火(一) -- me | From: [112.105.112.182] | 發表日期 : 2010-06-17 20:15

我試了兩種版本,可是都錯,為什麼?

三點共線,不就是面積為零嗎??

第一種:不考慮火有沒有在起點到中點之間

#include<iostream>
using namespace std;
int main(){
    int x1, y1, x2, y2, x3, y3, k;
    while(cin >> k){
              for(;k>0;k--){                                                        
                            cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
                               if(x1*y2+x2*y3+x3*y1-x2*y1-x3*y2-x1*y3==0)
                               cout << "該死的東西!竟敢想讓我死!" << endl;
                               else 
                               cout << "父親大人!母親大人!我快到了!" << endl;
                             
                            }
                     }
     return 0;
}

 

 

第二種:考慮火有沒有在起點到中點之間

#include<iostream>
using namespace std;
int main(){
    int x1, y1, x2, y2, x3, y3, k;
    while(cin >> k){
              for(;k>0;k--){                                                        
                            cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
                            if(x1>=x3&&x3>=x2&&y1>=y3&&y3>=y2){
                               if(x1*y2+x2*y3+x3*y1-x2*y1-x3*y2-x1*y3==0)
                               cout << "該死的東西!竟敢想讓我死!" << endl;
                               else 
                               cout << "父親大人!母親大人!我快到了!" << endl;
                               }
                            else cout << "父親大人!母親大人!我快到了!" << endl;
                            }
                     }
     return 0;
}

請您幫我看看好嗎?謝謝~

 
#4062: Re:試好多次,到底哪裡錯了??


peng571 (^^)

學校 : 國立斗六高級中學
編號 : 11999
來源 : [118.170.199.52]
最後登入時間 :
2012-07-02 16:00:41
d170. 飛蛾撲火(一) -- me | From: [125.230.120.205] | 發表日期 : 2010-08-06 16:47

我試了兩種版本,可是都錯,為什麼?

三點共線,不就是面積為零嗎??

考慮火有沒有在起點到中點之間

#include
using namespace std;
int main(){
    int x1, y1, x2, y2, x3, y3, k;
    while(cin >> k){
              for(;k>0;k--){                                                        
                            cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
                            if(x1>=x3&&x3>=x2&&y1>=y3&&y3>=y2){
                               if(x1*y2+x2*y3+x3*y1-x2*y1-x3*y2-x1*y3==0)
                               cout << "該死的東西!竟敢想讓我死!" << endl;
                               else 
                               cout << "父親大人!母親大人!我快到了!" << endl;
                               }
                            else cout << "父親大人!母親大人!我快到了!" << endl;
                            }
                     }
     return 0;
}

請您幫我看看好嗎?謝謝~


第一種的公式我都快忘了~哈哈

看到還愣了好久

公式的部分應該沒問題

問題在第二部份考慮火有沒有在起點到中點之間

if(x1>=x3&&x3>=x2&&y1>=y3&&y3>=y2)

有X1>=X3>=X2 或 X2>=X3>=X1兩種可能

y也一樣

 

 
#4063: Re:試好多次,到底哪裡錯了??


peng571 (^^)

學校 : 國立斗六高級中學
編號 : 11999
來源 : [118.170.199.52]
最後登入時間 :
2012-07-02 16:00:41
d170. 飛蛾撲火(一) -- me | From: [125.230.120.205] | 發表日期 : 2010-08-06 16:50

忘了說
還有前面的 while(cin >> k){
這種有給定次數的題目
直接用 cin>>k; for(;k>0;k--){}
就好了
不然後面跳不出回圈 

 
ZeroJudge Forum