C++ 有没有人想过用C+编写一个与旧手机中的消息编写器工作方式相同的程序+;?
程序必须接收整数输入。当使用enter 2时,程序输出字母“A”,如果按2两次,字母“A”将从屏幕上消失,字符“B”将出现,如果按2三次,字母“B”将消失,字母C将出现。要输入“AA”,您必须延迟输入数字“2”两次。延迟必须和移动设备中的延迟一样小 输入如下数字并将其转换为字符串的程序。28444333#如果必须打印“AAA”,程序将输出ATIF,然后输入将为212121#其中1用作分隔符。#将用作输入终止符 我在while循环中使用switch语句制作了一个程序。这是我迄今为止做的最大的一件事C++ 有没有人想过用C+编写一个与旧手机中的消息编写器工作方式相同的程序+;?,c++,C++,程序必须接收整数输入。当使用enter 2时,程序输出字母“A”,如果按2两次,字母“A”将从屏幕上消失,字符“B”将出现,如果按2三次,字母“B”将消失,字母C将出现。要输入“AA”,您必须延迟输入数字“2”两次。延迟必须和移动设备中的延迟一样小 输入如下数字并将其转换为字符串的程序。28444333#如果必须打印“AAA”,程序将输出ATIF,然后输入将为212121#其中1用作分隔符。#将用作输入终止符 我在while循环中使用switch语句制作了一个程序。这是我迄今为止做的最大的一件事
using namespace std;
#include <iostream>
#include <stdlib.h>
#include <conio.h>
int main(){
int x;
while (1){
cin >> x;
switch(x){
case 2:
{
system("CLS");
cout << "A\n";
break;
}
case 22:
{
system("CLS");
cout << "B\n";
break;
}
case 222:
{
system("CLS");
cout << "C\n";
break;
}
case 3:
{
system("CLS");
cout << "D\n";
break;
}
case 33:
{
system("CLS");
cout << "E\n";
break;
}
case 333:
{
system("CLS");
cout << "F\n";
break;
}
case 4:
{
system("CLS");
cout << "G\n";
break;
}
case 44:
{
system("CLS");
cout << "H\n";
break;
}
case 444:
{
system("CLS");
cout << "I\n";
break;
}
case 5:
{
system("CLS");
cout << "J\n";
break;
}
case 55:
{
system("CLS");
cout << "K\n";
break;
}
case 555:
{
system("CLS");
cout << "L\n";
break;
}
case 6:
{
system("CLS");
cout << "M\n";
break;
}
case 66:
{
system("CLS");
cout << "N\n";
break;
}
case 666:
{
system("CLS");
cout << "O\n";
break;
}
case 7:
{
system("CLS");
cout << "P\n";
break;
}
case 77:
{
system("CLS");
cout << "Q\n";
break;
}
case 777:
{
system("CLS");
cout << "R\n";
break;
}
case 7777:
{
system("CLS");
cout << "S\n";
break;
}
case 8:
{
system("CLS");
cout << "T\n";
break;
}
case 88:
{
system("CLS");
cout << "U\n";
break;
}
case 888:
{
system("CLS");
cout << "V\n";
break;
}
case 9:
{
system("CLS");
cout << "W\n";
break;
}
case 99:
{
system("CLS");
cout << "X\n";
break;
}
case 999:
{
system("CLS");
cout << "Y\n";
break;
}
case 9999:
{
system("CLS");
cout << "Z\n";
}
break;
case 0:
{
system("CLS");
cout << " \n";
}
break;
case 1:
{
system("CLS");
cout << ".\n";
}
break;
}
}
return 0;
}
使用名称空间std;
#包括
#包括
#包括
int main(){
int x;
而(1){
cin>>x;
开关(x){
案例2:
{
系统(“CLS”);
cout输入流没有按键之间延迟的概念。为了实现描述中描述的内容,您必须依赖于操作系统相关的API,例如
和计时器。您需要跟踪按键和按键之间的延迟,您可以使用::std::chrono
测量时间间隔
#包括
#包括
...
使用名称空间std;
使用名称空间计时;
int重复_计数{};
decltype(cin.get())last_char{};
decltype(高分辨率时钟::now())最后一次输入时间{};
自动常数最大延迟{200ms};
对于(;;)
{
自动常量c{cin.get()};
自动常量now{high_resolution_clock::now()};
自动常量字符重复{c==最后一个字符};
自动常数延迟足够小{(现在-最后一次输入时间)<最大延迟};
//TODO打印键基于按下的字符并重复计数。。。
如果(字符重复和延迟足够小)
{
++重复_计数;
}
其他的
{
重复_计数=0;
}
最后字符=c;
上次输入时间=现在;
}
我认为您应该切换到libc
调用getc()
/getchar()
,因为流输入需要在每个符号后按Enter键。此外,您需要将switch
语句包装在一个循环中,测量输入之间的时间,并使条件更加复杂(它必须记住上一个键本身、输入的次数和最后一次输入的时间)我真的很欣赏GMichael!但是问题是我几乎是C++新手,这就是为什么你想说的我不太合适。这不是C++初学者应该解决的问题。拿走延迟要求,这是微不足道的,但是一旦你添加了测量按键之间的延迟的欲望,它就不是那么微不足道了。是的,我有一个粗略的想法,但是不知道什么是语法,谢谢你。我知道了。但是我应该如何开始编写程序,处理输入和输出结果。抱歉这些愚蠢的问题,因为我是完全新的C++,不知道极端简单的任务。