2回目の編集変更コードで追加された詳細
単語OR文が入力されたときに出力したい文字列の配列に、アルファベットに相当する数値コードがあります。これがそのための私のC++コードです。モールス符号のように、ユーザー入力を取得し、すべてのアルファベットのすべての数字に対して同等の時間ビープ音を出力します。基本的に、組み込みアプリケーションにはこれが必要ですが、まず典型的な C で動作させたいので、組み込みに移動します。
現在、たとえば、アルファベット「i」には数値コード 24 があり、実行時に「i」が入力として与えられると、最初にビープ音が 2 回鳴り、その間に INNER_LOOP のスリープ時間、つまり 450 が鳴ります。次に、OUTER_LOOP、つまり 700 の間スリープし、次にINNER_LOOP スリープ時間でビープ音が 4 回鳴ります。したがって、ビープ音が 2 回鳴り、待ってから 4 回ビープ音が鳴ることを認識することができます。つまり、「i」のコードである「24」を送信します。「ii」を 2 回入力すると、同じことが行われます。つまり、INNER_LOOP スリープ時間の後に 2 番目の「i」のビープ音が開始されるため、コードは 2424 のように表示されます。長い間待って 24 をもう一度 raed するよりも、ユーザーは 2 つのアルファベット、つまり「ii」またはその他の組み合わせのコードを認識できます。
各アルファベットコードを個別に読み取ることができるように、同じ単語の任意の 2 つのアルファベット間で発生する THIRD_SLEEP 時間を導入したいのです。現在は同じアルファベットの数字コード間のみです。
これまでの私のコードは次のとおりです。
#include <iostream>
#include <string>
#include <sstream>
#include <windows.h>
using namespace std;
string texttopattern(char c)
{
//Hello world again
//125-15-123-123-135 1346-135-1235-123-145 1-1245-1-24-1345
string alphabet = "abcdefghijklmnopqrstuvwqyz"; //osv
string code[] = {"1","12","14","145", "15", "124", "1245",
"125", "24", "245", "13", "123", "134",
"1345", "135", "1234", "12345", "1235", "234", "2345",
"136", "1236", "1346", "13456", "1356", "12346"};
int index = alphabet.find(c);
if(index!=-1)
return code[index];
else
return " ";
}
int main()
{
const int OUTER_SLEEP = 700,
INNER_SLEEP = 450;
int n;
string ord;
getline(cin, ord);
string code="";
for(int i=0; i<ord.length(); i++)
{
code += texttopattern(ord[i]);
}
for(int i = 0; i<code.length(); i++)
{
n = code[i] - '0';
for(int j=0; j<n; j++)
{
cout<<'\a';
Sleep(INNER_SLEEP);
}
Sleep(OUTER_SLEEP);
}
return 0;
}