#1534: 請問我該怎麼修改呢


crazymomo (smile)

學校 : 不指定學校
編號 : 5407
來源 : [123.192.207.32]
最後登入時間 :
2010-05-31 10:32:24
d098. Stringstream運用練習(C++) -- 說明文件出自C++ Reference | From: [125.232.65.213] | 發表日期 : 2009-03-11 00:26

假如測試資料是:

1  2a  b3 4

我跑出來的結果會是7,因為2a的那一個2都被當成int拿去加了...

以下是我的程式碼..能幫我看看問題嗎

 

#include <iostream>
#include <sstream>
using namespace std;
int main(){
    string Ain;
    while(getline(cin,Ain)){
        istringstream Aaa(Ain);
        int Bbb,Ccc=0;
        while(!Aaa.eof()){
            if(Aaa>>Bbb){
                Ccc+=Bbb;
            }
            else{
                Aaa.clear();
                Aaa>>Ain;
            }
        }
        cout<<Ccc<<endl;
        Ccc=0;
    }
    return 0;
}

 
#3371: Re:請問我該怎麼修改呢


superppp (我都想不到)

學校 : 國立臺南大學
編號 : 7365
來源 : [101.9.201.209]
最後登入時間 :
2021-11-16 23:19:36
d098. Stringstream運用練習(C++) -- 說明文件出自C++ Reference | From: [60.248.124.109] | 發表日期 : 2010-02-04 14:04

 

我借用了你的程式來解這題,我加了一些小修改,又加了一個檢測,才通過,

我覺得你寫的很棒,可以改得比我的更好

 另外我發現我的程式若空格太多,結果會多加1,所以才用一個變數one來控制,我也不知道為什麼空格一多就會多1

 

#include <cstdlib>

#include <iostream>

#include <sstream>

 

using namespace std;

 

int check(string );

 

int main(void)

{

    string Ain, Bbb;

    int Ccc,one;

    

    while(getline(cin,Ain)){

        istringstream Aaa(Ain);

        Ccc=0;

        while(Aaa){

            Aaa>>Bbb;

            one=check(Bbb);

            Ccc+=one;

        }

        cout << Ccc-one << endl;

    }

    system("PAUSE");

    return 0;

}

 

int check(string str){

    int inter;

    istringstream Ddd(str);

 

    for(int i=0; i<str.length(); i++)

        if(str[i]>57 || str[i]<48)   return 0;

    

    Ddd>>inter;

    return inter;

}


 

 
#8702: Re:請問我該怎麼修改呢


crazytim (天邊)

學校 : 臺北市立成功高級中學
編號 : 35518
來源 : [36.229.95.202]
最後登入時間 :
2023-06-26 22:46:23
d098. Stringstream運用練習(C++) -- 說明文件出自C++ Reference | From: [111.240.22.232] | 發表日期 : 2014-03-09 10:33

 

我借用了你的程式來解這題,我加了一些小修改,又加了一個檢測,才通過,

我覺得你寫的很棒,可以改得比我的更好

 另外我發現我的程式若空格太多,結果會多加1,所以才用一個變數one來控制,我也不知道為什麼空格一多就會多1

 

#include

#include

#include

 

using namespace std;

 

int check(string );

 

int main(void)

{

    string Ain, Bbb;

    int Ccc,one;

 

    while(getline(cin,Ain)){

        istringstream Aaa(Ain);

        Ccc=0;

        while(Aaa){

            Aaa>>Bbb;

            one=check(Bbb);

            Ccc+=one;

        }

        cout << Ccc-one << endl;

    }

    system("PAUSE");

    return 0;

}

 

int check(string str){

    int inter;

    istringstream Ddd(str);

 

    for(int i=0; i

        if(str[i]>57 || str[i]<48)   return 0;

 

    Ddd>>inter;

    return inter;

}


 

請問紅色部分的意思是什麼?

為啥可以那樣寫? 

 
ZeroJudge Forum