近日,一些热门网站遭受黑客入侵,这些网站的账号、密码及 email 的数据惨遭泄露。你在这些网站上注册若干账号(使用的用户名不一定相同),但是注册时使用了相同的 email。你此时拿到了那份泄露的数据,希望尽快将自己的密码更改。策略如下:根据 email 找到你的用户名和密码,然后更改密码。更改的规则为:小写和大写交换,非字母字符保持不变。
输入格式
第一行为你的 email 地址,长度不超过 50 个字符且只包含字母、数字和 ‘@’ 符号。
第二行为账号数 N,N(0 < N < 10000)。
接下来 N 行,每行表示一个账号,格式为:
用户名 密码 email
它们之间用单个空格分开。用户名、密码、email 均不含空格,且长度不超过 50 个字符。
输出格式
有若干行,每行为你的一个账号,包括:你的账号,修改后的密码(之间用单个空格分隔)。
如果没有你的账号,则输出"empty"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入1
abc@pku.edu.cn
5
helloKitty iLoveCats abc@pku.edu.cn
2012 maya2012 cplusplus@exam.com
KittyCat 5iKitty abc@pku.edu.cn
program password teacher@exam.com
whoAmi Feb.29$ abc@pku.edu.cn
样例输出1
helloKitty IlOVEcATS
KittyCat 5IkITTY
whoAmi fEB.29$
样例输入2
abc@pku.edu.cn
1
2012 maya2012 cplusplus@exam.com
样例输出2
empty
1、定义头文件
#include <iostream>
#include <string>
2、定义数据
- my是我的邮箱
- zh是账号
- mi是密码
- yo是邮箱
string my, zh, mi, yo;
int n, t = 0;
3、输入数据
cin >> my;
cin >> n;
4、一边输入,一边处理
不需要都记录下来再处理
for (int i = 0; i < n; ++i) {
cin >> zh >> mi >> yo;
}
5、在3中处理
直接输出账号
for (int i = 0; i < n; ++i) {
cin >> zh >> mi >> yo;
if (yo == my){
t++;
cout << zh << " ";
}
}
6、在3中处理
处理密码后输出
for (int i = 0; i < n; ++i) {
cin >> zh >> mi >> yo;
if (yo == my){
t++;
cout << zh << " ";
for (int j = 0; j < mi.length(); ++j) {
if (isupper(mi[j]))
mi[j] = tolower(mi[j]);
else if (islower(mi[j]))
mi[j] = toupper(mi[j]);
}
cout << mi << endl;
}
}
7、如果没有匹配则输出空
if (t == 0)
cout << "empty";
8、return 0
return 0;
完整代码
#include <iostream>
#include <string>
using namespace std;
string my, zh, mi, yo;
int main(){
int n, t = 0;
cin >> my;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> zh >> mi >> yo;
if (yo == my){
t++;
cout << zh << " ";
for (int j = 0; j < mi.length(); ++j) {
if (isupper(mi[j]))
mi[j] = tolower(mi[j]);
else if (islower(mi[j]))
mi[j] = toupper(mi[j]);
}
cout << mi << endl;
}
}
if (t == 0)
cout << "empty";
return 0;
}