#29832: stringstream這邊卡住了


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [49.159.246.211]
最後登入時間 :
2024-10-19 20:13:44
d018. 字串讀取練習 | From: [61.64.1.159] | 發表日期 : 2022-04-04 13:20

#include <iostream>

#include <sstream>

using namespace std ;

int main() {

    stringstream ss ;

    string s ;

    while( getline( cin , s ) ) {

        ss.clear() ;

        ss.str(s) ;

        int odd = 0 , even = 0 ;

        string a ;

        while( ss >> a ) {

            if( ( a[0] - '1' + 1 ) % 2 != 0 ) {                                                     //寫到這邊有點沒頭緒 , 是要先判斷a[0]是基數還是偶數嗎? 後面把string轉float該怎麼轉換

                a.erase( a.begin() , a.begin() + 2 ) ;

                odd += num ;

            }

        }

        cout << odd - even << endl ;

    }

    return 0 ;

}

 

 
#29833: Re:stringstream這邊卡住了


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
d018. 字串讀取練習 | From: [39.9.100.103] | 發表日期 : 2022-04-04 14:05

            if( ( a[0] - '1' + 1 ) % 2 != 0 ) {                                                     //寫到這邊有點沒頭緒 , 是要先判斷a[0]是基數還是偶數嗎? 後面把string轉float該怎麼轉換      


1. 題目沒說序號只有一位數,所以無法用a[0]來判斷奇數偶數(可以用a.find(":")找出位置,再把序號和實數分開)

2. string轉float可以用stof()

 
#29834: Re:stringstream這邊卡住了


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [49.159.246.211]
最後登入時間 :
2024-10-19 20:13:44
d018. 字串讀取練習 | From: [61.64.1.159] | 發表日期 : 2022-04-04 14:08

喔!!!對齁

謝謝提醒

我找找看

 
#29835: Re:stringstream這邊卡住了


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [49.159.246.211]
最後登入時間 :
2024-10-19 20:13:44
d018. 字串讀取練習 | From: [61.64.1.159] | 發表日期 : 2022-04-04 15:12

那請問要怎麼儲存他阿

用一個陣列 把他轉換成序號跟數值嗎?

像是 1:12.5 要怎麼把它分開成  1 跟 12.5 阿。 用find 找出第幾位數再用for跑嗎?(還想請問有辦法把一個空字串中插入東西像是a[0],a[1]這樣嗎)

謝謝~

 
#29838: Re:stringstream這邊卡住了


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
d018. 字串讀取練習 | From: [39.9.100.103] | 發表日期 : 2022-04-04 19:44

那請問要怎麼儲存他阿

用一個陣列 把他轉換成序號跟數值嗎?

像是 1:12.5 要怎麼把它分開成  1 跟 12.5 阿。 用find 找出第幾位數再用for跑嗎?(還想請問有辦法把一個空字串中插入東西像是a[0],a[1]這樣嗎)

謝謝~

 

例如find找出第幾位數放在變數pos:
前面的序號只要知道奇數或偶數,所以只要判斷a[pos-1]就好,後面的實數可以用a.substr(pos+1)來取得。

substr的說明:https://www.cplusplus.com/reference/string/string/substr/

 
#29841: Re:stringstream這邊卡住了


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [49.159.246.211]
最後登入時間 :
2024-10-19 20:13:44
d018. 字串讀取練習 | From: [61.64.1.159] | 發表日期 : 2022-04-04 23:51

真的很感謝欸,老像都是你在回覆我~

為什麼會這麼閒XD

我現在看別人的程式碼還會看到不懂ㄟXDDD

 
#29842: Re:stringstream這邊卡住了


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [49.159.246.211]
最後登入時間 :
2024-10-19 20:13:44
d018. 字串讀取練習 | From: [61.64.1.159] | 發表日期 : 2022-04-05 00:22

我好像有點浪費版面欸XD

WA (line:6)

 

#include <iostream>
#include <sstream>
using namespace std ;
int main() {
    stringstream ss ;
    string s ;
    while( getline( cin , s ) ) {
        ss.clear() ;
        ss.str(s) ;
        float odd = 0 , even = 0 ;
        string a , sss ;
        while( ss >> a ) {
            int num = a.find(':') ;
            sss = a.substr( num + 1 ) ;
            if( a[num-1] % 2 != 0 ) {
                odd += stof(sss) ;
            } else {
                even += stof(sss) ;
            }
        }
        cout << odd - even << endl ;
    }
    return 0 ;
}

 

 
#29843: Re:stringstream這邊卡住了


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [49.159.246.211]
最後登入時間 :
2024-10-19 20:13:44
d018. 字串讀取練習 | From: [61.64.1.159] | 發表日期 : 2022-04-05 00:23

我好像有點浪費版面欸XD

WA (line:6)

 

#include <iostream>
#include <sstream>
using namespace std ;
int main() {
    stringstream ss ;
    string s ;
    while( getline( cin , s ) ) {
        ss.clear() ;
        ss.str(s) ;
        float odd = 0 , even = 0 ;
        string a , sss ;
        while( ss >> a ) {
            int num = a.find(':') ;
            sss = a.substr( num + 1 ) ;
            if( a[num-1] % 2 != 0 ) {
                odd += stof(sss) ;
            } else {
                even += stof(sss) ;
            }
        }
        cout << odd - even << endl ;
    }
    return 0 ;
}

  您的答案為: -351.251

 正確答案為: -351.252
 
#29846: Re:stringstream這邊卡住了


sakinu080712345@gmail.com (喜歡程式的睿)

學校 : 不指定學校
編號 : 146046
來源 : [140.116.130.40]
最後登入時間 :
2024-04-28 21:45:00
d018. 字串讀取練習 | From: [111.242.70.107] | 發表日期 : 2022-04-05 05:11

你試試用double,他的精準度比float高
stof也可以換成stod

 
#29848: Re:stringstream這邊卡住了


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [49.159.246.211]
最後登入時間 :
2024-10-19 20:13:44
d018. 字串讀取練習 | From: [61.64.1.159] | 發表日期 : 2022-04-05 11:55

ww好喔~

太強了吧 已AC

AC (2ms, 360KB) 
 
ZeroJudge Forum