2014-02-28 63 views
0

我有以下問題:用字母表示爲2位數字,轉換大量成字

a到z由編號10表示的字母 - 35例如a = 10,b = 11 ... z = 35

給定一個整數如果將數字的每個2位數字代表一個字母,將如何將其轉換爲單詞/句子? (該整數是解密過程的輸出,因此將始終適用於轉換)。

如31232612 --->「字」

我認爲要做到這一點,最好的辦法是使用%,並使用日誌確定的數量大小的整數分裂成2位數據塊到基地10?我不確定這將如何工作,我真的很感興趣的是其他人如何解決這個問題。

我不確定是否要上傳我已經存在的任何代碼,或者是否保留空白,以防萬一任何人希望從乾淨的石板上得到它,所以請讓我知道。

感謝您的任何反饋! (我的第一印象是,凡是微不足道的東西都被認爲是家庭作業,所以我認爲我會說這不是,我只是這樣做,因爲我試圖改善,我覺得這種事情很有趣,以爲我會分享)。

+1

我想你應該有你的方法繼續進行。您可以使用%運算符查找2位數字,然後使用ascii通過簡單地添加常量將其轉換爲字符。你可以繼續推入堆棧,然後彈出它們來獲取這個詞。 – Wajahat

+0

我可以將一個2位數的數字轉換爲一個字母,我只是將'拆分'成兩個字母的塊。 – MichaelRad

+0

你是什麼意思分裂?你的意思是把大整數分成兩個更小的數字部分? – Wajahat

回答

1

你將不得不做這樣的事情:

int main() 
{ 
    int numb=31231712; 
    std::stack<char> mystack; 
    int mod; 
    while ((mod=numb%100)!=numb){ 
     char c=mod+88; 
     mystack.push(c); 
     numb=numb/100; 
    } 
    char c=mod+88; 
    mystack.push(c); 
    while (!mystack.empty()) 
    { 
     cout << mystack.top(); 
     mystack.pop(); 
    } 
    cout << '\n'; 
} 

它會反向打印的話,我不知道88是正確的選擇,但是這是一個可調節的參數使用ASCII表。爲了照顧相反的情況,只需將所有字符推入堆棧。之後,彈出堆棧直到空白,以便正確使用該單詞。

+0

Btw 31231712 -/- >「單詞」, 它是31232612 – Wajahat

+0

我認爲這是87,我會用「單詞」修復錯誤。我會放棄這一點,讓你知道,非常感謝! – MichaelRad

+0

你對88正確,我將如何去扭轉它,使其以正確的順序出現? – MichaelRad

0

我寫了這個代碼,我認爲它可以幫助你:)

#include <iostream> 
#include <string> 
#include <algorithm> 

using namespace std; 

int main() { 

    string word = ""; 
    string integer; 
    cin >> integer; 

    for (int i = integer.size() - 1; i >= 0; i -= 2) { 

      int temp = integer[i] - '0'; 
     if (i) 
     temp += 10 * (integer[i - 1] - '0'); 

     word += (char)('a' + (temp - 10) + 1); 
    } 

    reverse(word.begin(), word.end()); 
    cout << word << endl; 

    return 0; 
} 
+0

我沒有投票,因爲我沒有15的聲望,並得到一個消息說:「你必須有15聲望投票「,也是當我運行這個對我來說不起作用,我不知道爲什麼,我只是得到一個空白的輸出。 – MichaelRad