#16947: 請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


asddzxcc1856 (嚕踢)

學校 : 國立中興大學
編號 : 86097
來源 : [61.223.99.184]
最後登入時間 :
2023-08-21 21:25:52
d018. 字串讀取練習 | From: [61.223.96.13] | 發表日期 : 2019-02-24 13:40

#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;
}
}

 
#16948: Re:請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
d018. 字串讀取練習 | From: [49.158.83.43] | 發表日期 : 2019-02-24 14:12

#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) ?

 
#16951: Re:請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


asddzxcc1856 (嚕踢)

學校 : 國立中興大學
編號 : 86097
來源 : [61.223.99.184]
最後登入時間 :
2023-08-21 21:25:52
d018. 字串讀取練習 | From: [61.223.96.13] | 發表日期 : 2019-02-24 15:23

 

在更深入了解您的程式碼之前,先問個:

您的 if (num%2==0) 是否應為 if (num1%2==0) ?

 

 

 

 

沒錯  ~~ 剛剛複製錯了 所以要怎麼解決呢




 
#16958: Re:請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
d018. 字串讀取練習 | From: [49.158.83.43] | 發表日期 : 2019-02-24 16:33

那麼實際測試時,會出現什麼錯呢?因為乍看之下,似乎沒有什麼語法上的錯誤。

 
#16960: Re:請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


asddzxcc1856 (嚕踢)

學校 : 國立中興大學
編號 : 86097
來源 : [61.223.99.184]
最後登入時間 :
2023-08-21 21:25:52
d018. 字串讀取練習 | From: [61.223.96.13] | 發表日期 : 2019-02-24 16:38

那麼實際測試時,會出現什麼錯呢?因為乍看之下,似乎沒有什麼語法上的錯誤。



#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

 
#16961: Re:請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
d018. 字串讀取練習 | From: [49.158.83.43] | 發表日期 : 2019-02-24 17:17

那麼實際測試時,會出現什麼錯呢?因為乍看之下,似乎沒有什麼語法上的錯誤。



#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) 呢?使用後者,會有什麼錯誤訊息嗎?

 
#16962: Re:請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


asddzxcc1856 (嚕踢)

學校 : 國立中興大學
編號 : 86097
來源 : [61.223.99.184]
最後登入時間 :
2023-08-21 21:25:52
d018. 字串讀取練習 | From: [61.223.96.13] | 發表日期 : 2019-02-24 18:18

那麼實際測試時,會出現什麼錯呢?因為乍看之下,似乎沒有什麼語法上的錯誤。



#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] <<<< 這個是每一項的編號 




 
#16963: Re:請問 經過字串串流之後的數字 num1 要怎麼樣處理才能被使用 %2==0 or %2!=0


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
d018. 字串讀取練習 | From: [49.158.83.43] | 發表日期 : 2019-02-24 18:47

可是 b[0] 代表的是數字陣列最左邊的字元,而不是您想檢查的最右邊的字元喔。所以要不是改成 b[b.size() - 1] 就是改回 num1 吧,這樣應該就能解決了。

 
ZeroJudge Forum