栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

五键键盘(c++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

五键键盘(c++)

题目描述:

有一个特殊的五键键盘,上面有A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A A键在屏幕上输出一个字母A,Ctrl-C将当前所选的字母复制到剪贴板,Ctrl-X将当前选择的字母复制到剪贴板并清空所选择的字母,Ctrl-V将当前剪贴板的字母输出到屏幕,Ctrl-A选择当前屏幕中所有字母



条件如下:

  • 剪贴板初始为空
  • 新的内容复制到剪贴板会覆盖原有内容
  • 当屏幕中没有字母时,Ctrl-A无效
  • 当没有选择字母时Ctrl-C、Ctrl-X无效
  • 当有字母被选择时A和Ctrl-V这两个输出功能的键,会先清空所选的字母再进行输出
  • 给定一系列键盘输入,输出最终屏幕上字母的数量


输入描述:

  • 输入为一行
  • 为简化解析用数字12345分别代替A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A的输入
  • 数字用空格分割

输出描述:

  • 输出一个数字为屏幕上字母的总数量
  1. 示例一
  • 输入:1 1 1
  • 输出:3
  1. 示例二
  • 输入:1 1 5 1 5 2 4 4
  • 输出:2
#include 
#include 
#include 
using namespace std;
int main()
{
	char c;
	vector v;//记录输入值
	vector v2;//面板
	vector v3;//剪切板
	while (cin.get(c)) {
		if (c == 'n')
			break;
		else if (c == ' ')
			continue;
		v.push_back(c);
	}
	int flagCA = 0;
	for (vector::iterator iter = v.begin(); iter != v.end(); iter++) {
		switch (*iter) {
		case '1': //A
			if (flagCA != 1) {
				v2.push_back('A');
				flagCA = 0;
			}
			else {
				v2.clear();
				v2.push_back('A');
				flagCA = 0;
			}			
			break;
		case '2': //C
			if (v2.size()!= 0&& flagCA!=0) {
				v3 = v2;
			}
			break;
		case '3': //x
			if (v2.size() != 0 && flagCA != 0) {
				v3 = v2;
				v2.clear();
			}
			break;
		case '4': //V
			if ((v3.size()!=0)&&(flagCA != 0)) {
				v2 = v3;
				flagCA = 0;
			}
			else if (v3.size() != 0) {
				v2.insert(v2.end(),v3.begin(), v3.end());
				flagCA = 0;
			}
			break;
		case '5': //A
			flagCA = 1;
			break;
		default:
			break;
		}
	}
	cout << "totolly number is " << v2.size();
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875636.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号