返回列表 發帖

態度之重要的證明

今天我們如果將a=1,b=2,c=3....以此類推下去
將單字裏的每個文字依照上面規則轉換成數字再相加起來的話。
知識(KNOWLEDGE)只有96分,
努力(HARDWORK)只有98分,
但態度(ATTITUDE)卻是100分。

風台高中的Norton看到了上面的文章後並不相信,
他想把它們真的加起來看看,
以找到一個字可以反駁這個「態度最重要」的理論
但卻討厭換來換去的過程,
請幫他寫個程式方便他去做運算
輸入說明
輸入英文單字,大小寫不限,當輸入0的時候就結束程式。
長度最長為200個字。
請參照Sample Input。
輸出說明
輸出將英文單字依照題目的規則轉換成數字後相加的結果,如果中間參雜怪異的符號,請輸出Fail;但是英文字母的大小寫並不會影響結果,也就是說A和a所代表的值是相同
的。請參照Sample Output。

範例輸入 #1
hardwork
KNOWLEDGE
aTtitUdE
C++
0
範例輸出 #1
98
96
100
Fail

本帖隱藏的內容需要回復才可以瀏覽

  1. #include<bits/stdc++.h>
  2. using namespace std;

  3. vector<string> v;

  4. int main()
  5. {
  6.     cin.tie(0);//65-90
  7.     cin.sync_with_stdio(0);//97-122
  8.     string a="";
  9.     while(a!="0")
  10.     {
  11.         cin>>a;
  12.         int sum=0;
  13.         if(a[0]=='0')
  14.             break;
  15.         for(int i=0;i<a.size();i++)
  16.         {
  17.             if(a[i]<'A' or (a[i]>'Z' and a[i]<'a') or a[i]>'z')
  18.             {
  19. //                cout<<"Fail"<<endl;
  20. //                cout<<v.size()<<endl;
  21.                 v.push_back("Fail");
  22.                 sum=0;
  23.                 break;
  24.             }
  25.             else
  26.             {
  27.                 if(a[i]>'Z')
  28.                 {
  29.                     sum+=int(a[i]-32-64);
  30.                 }
  31.                 else
  32.                 {
  33.                     sum+=int(a[i]-64);
  34.                 }
  35.             }
  36.         }
  37.         if(sum!=0)
  38.         {
  39. //            cout<<sum<<endl;
  40.             string s=to_string(sum);
  41. //            cout<<v.size()<<endl;
  42.             v.push_back(string(s));
  43.         }

  44.     }
  45. //    v.push_back("321");
  46.     for(int i=0;i<v.size();i++)
  47.     {
  48.         cout<<v[i]<<endl;
  49.     }
  50.     return 0;
  51. }
複製代碼

TOP

返回列表