#39201: OLE 多一個0


n12603579table@gmail.com (施智皓)

學校 : 不指定學校
編號 : 145648
來源 : [36.234.171.196]
最後登入時間 :
2024-04-04 21:19:31
c060. 00392 - Polynomial Showdown -- UVa392 | From: [36.234.149.47] | 發表日期 : 2024-01-22 12:59

這是我的程式碼:

#include<iostream>
using namespace std;

int main(){

    int arr[9]={0};


    while(true){
        if(cin.eof()) break;

        for(int i=0;i<9;i++) cin>>arr[i];

        int power=8;
        int leadingTerm = true;
        for(int i=0;i<8;i++){
            if(arr[i]==0);
            else if(arr[i]==1 && !leadingTerm){
                cout<<" + ";
                cout<<"x";
                if(power != 1) cout<<"^"<<power;
                leadingTerm = false;
            }
            else if(arr[i]==1 && leadingTerm){
                cout<<"x";
                if(power != 1) cout<<"^"<<power;
                leadingTerm = false;
            }
            else if(arr[i]==-1 && !leadingTerm ){
                cout<<" - ";
                cout<<"x";
                if(power != 1) cout<<"^"<<power;
                leadingTerm = false;
            }
            else if(arr[i]==-1 && leadingTerm ){
                cout<<"-x";
                if(power != 1) cout<<"^"<<power;
                leadingTerm = false;
            }
            else if(!leadingTerm && arr[i]>0){
                cout<<" + ";
                cout<<arr[i]<<"x";
                if(power != 1) cout<<"^"<<power;
                leadingTerm = false;
            }
            else if(!leadingTerm && arr[i]<0){
                cout<<" - ";
                cout<<-arr[i]<<"x";
                if(power != 1) cout<<"^"<<power;
                leadingTerm = false;
            }
            else if(leadingTerm){
                cout<<arr[i]<<"x";
                if(power != 1) cout<<"^"<<power;
                leadingTerm=false;
            }

            power--;
        }
        if(arr[8]>0 && !leadingTerm){
            cout<<" + "<<arr[8];
            leadingTerm=false;
        }
        else if(arr[8]>0 && leadingTerm){
            cout<<arr[8];
            leadingTerm=false;
        }
        else if(arr[8]<0 && leadingTerm){
            cout<<arr[8];
            leadingTerm=false;
        }
        else if(arr[8]<0 && !leadingTerm){
            cout<<" - "<<-arr[8];
            leadingTerm=false;
        }

        if(leadingTerm) cout<<"0";

        cout<<endl;
    }

    return 0;
}

 

我用測試的資料都是AC,但是真正在跑的時候一直說我多一個0。

不曉得可能哪裡出問題,希望有大神幫我指出一下..

 
#39202: Re: OLE 多一個0


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [210.71.71.103]
最後登入時間 :
2024-05-17 09:42:48
c060. 00392 - Polynomial Showdown -- UVa392 | From: [118.150.177.13] | 發表日期 : 2024-01-22 13:29

測資結尾有一個換行,導致你的程式會把最後一筆測資多列印一次

cin我不太會用,只能提供這個很蠢的改法

include<iostream>
using namespace std;
int main() {
    int arr[9] = {0};
    while(cin>>arr[0]) {    // 把第一個數入放進判斷條件
        for(int i=1; i<9; i++) cin>>arr[i];

 

看來你寫的 cin.eof() 並沒有發揮你要的作用,在這邊該怎麼使用還得求助C++大神

 

 
#39203: Re: OLE 多一個0


n12603579table@gmail.com (施智皓)

學校 : 不指定學校
編號 : 145648
來源 : [36.234.171.196]
最後登入時間 :
2024-04-04 21:19:31
c060. 00392 - Polynomial Showdown -- UVa392 | From: [36.234.149.47] | 發表日期 : 2024-01-22 14:10

測資結尾有一個換行,導致你的程式會把最後一筆測資多列印一次

cin我不太會用,只能提供這個很蠢的改法

include
using namespace std;
int main() {
    int arr[9] = {0};
    while(cin>>arr[0]) {    // 把第一個數入放進判斷條件
        for(int i=1; i<9; i++) cin>>arr[i];

 

看來你寫的 cin.eof() 並沒有發揮你要的作用,在這邊該怎麼使用還得求助C++大神

 

用了你的改法就AC了,

感謝大神的幫忙,你拯救了我的一天!!!

原來是cin的問題,一直以為是if else邏輯的問題,所以都沒有注意到...

btw 我也是第一天使用cin.eof() 所以很多東西要學習...

謝謝你!!!

 
ZeroJudge Forum