您的位置:首页 > 其它

昨天写的使用<cctype>的一个例子

2012-11-01 11:12 357 查看
题目:将二十六个英文字母按照字母序分为前后两组(各含13个字母),将原发字母转换为同组内对称位置的另一个字母,10个数字分为一组,将原发数字按照0-9,1-8....的对称法转换为另一个数字输入的字母和数字要求最多不超过20个,滤除其他的字符输出转换后的字母、数字字符串。

答案:

#include <iostream>

#include <string>

#include <cctype>

int main(int argc, char * argv[])

{

std::string input_str;

std::getline(std::cin,input_str);

std::string::size_type str_size=input_str.size();

int sentinel(0);

for(std::string::size_type i=0;i!=str_size;++i)

{

++sentinel;

if(sentinel<=20)

{

if(::isdigit(input_str[i])) //105 is the sum of '0' and '9'

input_str[i]=105-input_str[i];

else if(::ispunct(input_str[i])) //punctuation ,transfer to *

input_str[i]='*';

else if(::isalpha(input_str[i]))

{

input_str[i]=::tolower(input_str[i]);//only considering the lower alphabet

if(input_str[i]<=109)

input_str[i]=206-input_str[i];

else

input_str[i]=232-input_str[i];

}

else

input_str[i]='\0';

}

else input_str[i]='\0';

}

std::cout<<" uncoding sequence:\n"<<input_str<<std::endl;

int temp;

std::cin>>temp;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐