2014-02-28 32 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