2012年4月4日 星期三

d098: Stringstream運用練習(C++)

內容 :
    小明為了要保證資料傳輸的隱密性,為檔案設置了一個加密金鑰,並且將金鑰藏進了一個檔案裡。收到檔案的小風得知要解譯出他所使用的加密金鑰,必須將檔案裡所有不含非數字的單字找出,加起來就是加密金鑰。可是,要求出這個金鑰,如果自己慢慢加實在是太慢了,所以請你寫一個程式來幫助他吧!

輸入說明 :
    每組測資有一行,內含多個單字,每個單字之間會以空格作分隔(每一行的前後都有可能有空格,且分隔單字的空格可能不只一個)。

輸出說明 :
    請求出所有僅含數字的單字,並且加總後輸出。這些數字的總和不會超過2的16次方。

範例輸入 :
zerojudge萬歲
1a6f 6 65afd 15s 1sa 12 115

範例輸出 :
0
133

程式碼 :
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void isword(char word[], int *sum)
{
    int i,len;
    
    len = strlen(word);
    
    for(i=0; i<len; i++)
        if('0' > word[i] || word[i] > '9')
            break;
    if(i == len)
        *sum += atoi(word);
}

int main()
{
    int i, j, k, sum = 0, len, len_word;
    char s[5000], check, word[1000];
    
    while(gets(s) != NULL)
    {
        len = strlen(s);
        
        for(i=k=0; i<len; i++)
        {
            if(s[i] == ' ')
            {
                word[k] = '\0';
                isword(word, &sum);
                k = 0;
            }
            else
                word[k++] = s[i];
        }
        
        word[k] = '\0';
        isword(word, &sum);
                
        printf("%d\n",sum);
        sum = 0;
    }
    
    return 0;
}



http://zerojudge.tw/ShowProblem?problemid=d098

沒有留言:

張貼留言