這是我的程式碼:
#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。
不曉得可能哪裡出問題,希望有大神幫我指出一下..
測資結尾有一個換行,導致你的程式會把最後一筆測資多列印一次
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++大神
測資結尾有一個換行,導致你的程式會把最後一筆測資多列印一次
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() 所以很多東西要學習...
謝謝你!!!