#include <iostream>
#include <sstream>
using namespace std;
int main ()
{
string s;
while (getline(cin,s))
{
stringstream ss(s),ss2;
string a,b,c;
int g,pos,num1,y=1;
double num2,w=0,all_1=0,all_2=0;
while (ss>>a)
{
pos=a.find(":");
b=a.substr(0,pos);
c=a.substr(pos+1,a.length());
ss2 << b;
ss2 >> num1;
ss2.clear();
ss2.str("");
ss2 << c;
ss2 >> num2;
if (num%2==0)
{
all_1+=num2;
}
else if (num%2!=0)
{
all_2+=num2;
}
}
cout << all_2-all_1 << endl;
}
}
#include
#include
using namespace std;
int main ()
{
string s;
while (getline(cin,s))
{
stringstream ss(s),ss2;
string a,b,c;
int g,pos,num1,y=1;
double num2,w=0,all_1=0,all_2=0;
while (ss>>a)
{
pos=a.find(":");
b=a.substr(0,pos);
c=a.substr(pos+1,a.length());
ss2 << b;
ss2 >> num1;
ss2.clear();
ss2.str("");
ss2 << c;
ss2 >> num2;
if (num%2==0)
{
all_1+=num2;
}
else if (num%2!=0)
{
all_2+=num2;
}
}
cout << all_2-all_1 << endl;
}
}
在更深入了解您的程式碼之前,先問個:
您的 if (num%2==0) 是否應為 if (num1%2==0) ?
在更深入了解您的程式碼之前,先問個:
您的 if (num%2==0) 是否應為 if (num1%2==0) ?
沒錯 ~~ 剛剛複製錯了 所以要怎麼解決呢
那麼實際測試時,會出現什麼錯呢?因為乍看之下,似乎沒有什麼語法上的錯誤。
#include <iostream>
#include <sstream>
using namespace std;
int main ()
{
string s;
while (getline(cin,s))
{
stringstream ss(s),ss2;
string a,b,c;
int g,pos,num1,y=1;
double num2,w=0,all_1=0,all_2=0;
while (ss>>a)
{
pos=a.find(":");
b=a.substr(0,pos);
c=a.substr(pos+1,a.length());
ss2 << b;
ss2 >> num1;
ss2.clear();
ss2.str("");
ss2 << c;
ss2 >> num2;
if (b[0]%2==0)
{
all_1+=num2;
}
else if (b[0]%2!=0)
{
all_2+=num2;
}
}
cout << all_2-all_1 << endl;
}
}
目前程式碼做了一些更改 現在他給的測資都可以解答出來 但是 上傳題目答案 的測資 line5 WA 好像不能 他說 答案是10000 我的是30000
那麼實際測試時,會出現什麼錯呢?因為乍看之下,似乎沒有什麼語法上的錯誤。
#include
#include
using namespace std;
int main ()
{
string s;
while (getline(cin,s))
{
stringstream ss(s),ss2;
string a,b,c;
int g,pos,num1,y=1;
double num2,w=0,all_1=0,all_2=0;
while (ss>>a)
{
pos=a.find(":");
b=a.substr(0,pos);
c=a.substr(pos+1,a.length());
ss2 << b;
ss2 >> num1;
ss2.clear();
ss2.str("");
ss2 << c;
ss2 >> num2;
if (b[0]%2==0)
{
all_1+=num2;
}
else if (b[0]%2!=0)
{
all_2+=num2;
}
}
cout << all_2-all_1 << endl;
}
}
目前程式碼做了一些更改 現在他給的測資都可以解答出來 但是 上傳題目答案 的測資 line5 WA 好像不能 他說 答案是10000 我的是30000
為何是 if(b[0] % 2 != 0) 而非一開始的 if(num1 % 2 != 0) 呢?使用後者,會有什麼錯誤訊息嗎?
那麼實際測試時,會出現什麼錯呢?因為乍看之下,似乎沒有什麼語法上的錯誤。
#include
#include
using namespace std;
int main ()
{
string s;
while (getline(cin,s))
{
stringstream ss(s),ss2;
string a,b,c;
int g,pos,num1,y=1;
double num2,w=0,all_1=0,all_2=0;
while (ss>>a)
{
pos=a.find(":");
b=a.substr(0,pos);
c=a.substr(pos+1,a.length());
ss2 << b;
ss2 >> num1;
ss2.clear();
ss2.str("");
ss2 << c;
ss2 >> num2;
if (b[0]%2==0)
{
all_1+=num2;
}
else if (b[0]%2!=0)
{
all_2+=num2;
}
}
cout << all_2-all_1 << endl;
}
}
目前程式碼做了一些更改 現在他給的測資都可以解答出來 但是 上傳題目答案 的測資 line5 WA 好像不能 他說 答案是10000 我的是30000
為何是 if(b[0] % 2 != 0) 而非一開始的 if(num1 % 2 != 0) 呢?使用後者,會有什麼錯誤訊息嗎
因為題目要求 要 {奇數編號項目總和} 減掉 {偶數編號項目總和} 所以我設定b[0] <<<< 這個是每一項的編號