OJ 1812 Problem G 重载字符的加减法

本文介绍了一个字符类Character的设计,该类通过重载运算符实现了字符的加减操作。文章详细解释了如何使用整数调整字符,并展示了如何在小写字母范围内循环这些操作。

Description

定义一个字符类Character,只有一个char类型的数据成员。

重载它的+、-、<<和>>运算符,其中+、-的第二个操作数是int类型的整数n。
“+”用于返回以当前字符之后的第n个字符为属性值的对象,“-”用于返回当前字符之前的第n个字符为属性值的对象。 如样例所示。

Input

第1行N>0表示测试用例个数。

每个测试用包括1个字符(小写英文字母)和1个int类型的整数。

Output

输出有N行,每行输入对应一行输出,每行输出包括对应输入字符之后的第n个字符,以及该字符之前的第n个字符。
如样例中第2个用例输入字符是“a”,整数是“1”,那么“a”之后的第1个字符是”b“,"a"之前的第1个字符是”z“;
注意:输入的整数可能是负数。

Sample Input

3
a 0
a 1
a -1

Sample Output

a a
b z
z b

Append Code

int main()
{
    int cases, data;
    Character ch;
    cin>>cases;
    for (int i = 0; i < cases; i++)
    {
        cin>>ch;
        cin>>data;
        cout<<(ch + data)<<" "<<(ch - data)<<endl;
    }
}

AC代码

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <string>
using namespace std;

class Character {
private:
    char ch;
public:
    friend char operator + (Character c, int a) {
        int ch = c.ch + a;
        while  (ch > 'z') {ch -= 26;}
        while (ch < 'a') {ch += 26;}
        return ch;
    }
    friend char operator - (Character c, int a) {
        int ch = c.ch - a;
        while  (ch > 'z') {ch -= 26;}
        while (ch < 'a') {ch += 26;}
        return ch;
    }
    friend ostream& operator << (ostream& os, Character &c) {
        os << c.ch;
        return os;
    }
    friend istream& operator >> (istream& is, Character& c) {
        is >> c.ch;
        return is;
    }
};
int main()
{
    int cases, data;
    Character ch;
    cin>>cases;
    for (int i = 0; i < cases; i++)
    {
        cin>>ch;
        cin>>data;
        cout<<(ch + data)<<" "<<(ch - data)<<endl;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值