英语到莫尔斯转换器
English to Morse Converter
我一直在研究一个应该将英语转换为莫尔斯电码的程序。我很难处理琴弦。例如,我不知道为什么我可以让莫尔斯字母表在 [30] 处有一定数量的位置,但我不能对拉丁字母做同样的事情。总的来说,我不知道我应该如何翻译这些单词。
我的想法是查看字母表中的哪个字符出现在要翻译的短语的第一个位置,然后打印莫尔斯字母的相应字母位置,然后移动到短语中的第二个位置,但是我弄乱了 for 循环只是以我收到关于 for 循环的错误变得太大和内存错误或只是给我一个空白而告终。
以我现在所拥有的,每当我输入要翻译的短语时,它都会因下标范围错误而停止,我以前的一些摆弄让它返回乱码(内存位置?我希望这句话说得对,有人可以帮助我,因为过去四个小时的互联网搜索并没有真正帮助我,说实话,在这一点上,我怀疑我写的任何东西是否有任何用处。
#include <iostream>
#include <string>
int main()
{
int operatingMode = 0;
using namespace std;
std::string latinPhrase;
std::string morsePhrase;
std::string latinAlphabet = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '.', ',' };
std::string morseAlphabet[30] = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".-.-.-", "--..--" };
std::string translatedMorsePhrase;
int wordSearch = 0;
std::cout << "Please select a mode of operation. " << endl;
std::cout << "Input 1 for English to Morse and 2 for Morse to English. " << endl;
std::cin >> operatingMode;
std::cout << "Your mode of operation is " << operatingMode << endl;
if (operatingMode == 1)
{
std::cout << "You have selected English to Morse." << endl;
std::cout << "Please enter the phrase you would like translated." << endl;
std::cin.ignore();
std::getline(std::cin, latinPhrase);
}
for (int counter = 0; counter < 30; counter++)
{
for (unsigned i = 0; i<latinPhrase.length(); ++i)
{
if (latinPhrase.at(i) == latinAlphabet[i])
{
cout << morseAlphabet[i];
}
}
std::cout << "The translated phrase is: " << translatedMorsePhrase << " stop" << endl;
return 0;
}
当前代码中的错误是错误地使用了i
,而你的意思是counter
和不正确的迭代顺序。这应该可以解决问题:
for (unsigned i = 0; i<latinPhrase.length(); ++i)
{
for (int counter = 0; counter < 30; counter++)
{
if (latinPhrase.at(i) == latinAlphabet[counter])
{
cout << morseAlphabet[counter];
break;
}
}
}
为了回答您关于声明和初始化std::string latinAlphabet[30]
的问题,您正在尝试使用char
s {'A', 'B', ...}
的大括号初始化列表来初始化一个 std::string
数组。要么将其更改为{"A", "B", ...}
,要么将latinAlphabet
类型更改为char[30]
,您就可以说将其初始化为数组。
#include<iostream>
#include<stdio.h>
#include<string.h>
#include <windows.h>
#include<fstream>
using namespace std;
int main()
{
// Beep(523,700);
// Beep(0,400);
// Beep(523,200);
// Beep(523,200);
// Beep(523,200);
char string[1000];
cout << "Enter string : ";
gets(string);
int len;
len=strlen(string);
ofstream out("output.txt");
ifstream in;
for(int i=0; i<len; i++)
{
switch(string[i])
{
case 'a' :
case 'A' :
{
out << ".- ";
break;
}
case 'b' :
case 'B' :
{
out << "-... ";
break;
}
case 'c' :
case 'C' :
{
out << "-.-. ";
break;
}
case 'd' :
case 'D' :
{
out << "-.. ";
break;
}
case 'e' :
case 'E' :
{
out << ". ";
break;
}
case 'f' :
case 'F' :
{
out << "..-. ";
break;
}
case 'g' :
case 'G' :
{
out << "--. ";
break;
}
case 'h' :
case 'H' :
{
out << ".... ";
break;
}
case 'i' :
case 'I' :
{
out << ".. ";
break;
}
case 'j' :
case 'J' :
{
out << ".--- ";
break;
}
case 'k' :
case 'K' :
{
out << "-.- ";
break;
}
case 'l' :
case 'L' :
{
out << ".-.. ";
break;
}
case 'm' :
case 'M' :
{
out << "-- ";
break;
}
case 'n' :
case 'N' :
{
out << "-. ";
break;
}
case 'o' :
case 'O' :
{
out << "--- ";
break;
}
case 'p' :
case 'P' :
{
out << ".--. ";
break;
}
case 'q' :
case 'Q' :
{
out << "--.- ";
break;
}
case 'r' :
case 'R' :
{
out << ".-. ";
break;
}
case 's' :
case 'S' :
{
out << "... ";
break;
}
case 't' :
case 'T' :
{
out << "- ";
break;
}
case 'u' :
case 'U' :
{
out << "..- ";
break;
}
case 'v' :
case 'V' :
{
out << "...- ";
break;
}
case 'w' :
case 'W' :
{
out << ".-- ";
break;
}
case 'x' :
case 'X' :
{
out << "-..- ";
break;
}
case 'y' :
case 'Y' :
{
out << "-.-- ";
break;
}
case 'z' :
case 'Z' :
{
out << "--.. ";
break;
}
case ' ' :
{
out << " / ";
break;
}
case '0' :
{
out << "----- ";
break;
}
case '1' :
{
out << ".---- ";
break;
}
case '2' :
{
out << "..--- ";
break;
}
case '3' :
{
out << "...-- ";
break;
}
case '4' :
{
out << "....- ";
break;
}
case '5' :
{
out << "..... ";
break;
}
case '6' :
{
out << "-.... ";
break;
}
case '7' :
{
out << "--... ";
break;
}
case '8' :
{
out << "---.. ";
break;
}
case '9' :
{
out << "----. ";
break;
}
}
}
out.close();
char ch;
in.open("output.txt");
while(!in.eof())
{
in>>ch;
if(ch=='.')
{
Beep(523,200);
}
else if(ch=='-')
{
Beep(523,700);
}
else if(ch==' ')
{
Beep(0,100);
}
else if(ch == '/')
{
Beep(0,400);
}
}
in.close();
}
相关文章:
- 转换器练习:跳过 if 语句和 if 语句
- 使用转换器提升 Python 问题 - 静态链接
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 十进制到二进制转换器 c++
- 用于 boost::p roperty_tree 的通用枚举转换器
- 为什么我的C++基转换器中出现分段错误?
- 将字节数组转换为对象C++ |C++中的 C# 位转换器
- 英语到摩尔斯电码转换器
- 我用c++做了一个转换器,把英里转换成公里,把公里转换成英里,把赛尔修斯转换成法赫伦海特,把法赫伦海特转换成赛尔修斯
- 将非 ASCII 字符转换为英语对应字符C++
- 使用 Json 转换器反序列化 WCF 服务中的C++字符串
- 十进制,包括负到 32 位二进制转换器
- 标准::映射转换器模板
- 英里到千克转换器练习的小语法错误
- 句子转换器在存在新行的情况下不起作用
- 在C Windows程序中获取A/D转换器示例程序
- ROS中未定义的参考误差到OpenCV图像转换器
- 表达式到C++类类型转换器/类型转换
- 这里怎么了?单位转换器
- 英语到莫尔斯转换器