【问题标题】:How to code morse to latin alphabet translator in C如何在 C 中将莫尔斯编码为拉丁字母转换器
【发布时间】:2019-04-21 22:41:23
【问题描述】:

所以,我的作业是做莫尔斯拉丁字母翻译。到目前为止,我已经设法将莫尔斯语编码为拉丁语翻译器,但我无法让它以其他方式工作。 代码如下:

#include<stdio.h>
#define MAX 1000

int main(){
    int i, j;
    char alfabet[26]={'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'};
    char* morse[27]={".-", "-..", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
    char tekst[MAX];
    printf("Podaj tekst pisany wielkimi literami: ");
    scanf("%[^\n]c", tekst);
    for(i=0;i<27;i++){
        for(j=0;j<30;j++){
            if(tekst[i]==alfabet[j]){
            printf("%s ", morse[j]);
            }


        }

    }

}

注意:我的 C 编程水平非常基础。我知道这可能是实现所需结果的最差方法,而且代码本身远非漂亮或有效,尤其是 for 循环。这不是我现在担心的问题,我会在以后处理它。

到目前为止,我最大的问题是相当琐碎的;程序在循环完成最后一次迭代后立即停止。无法打印任何内容,也不会执行任何命令。我不知道为什么。 当它修复后,我最大的问题将是翻译本身。如何扫描莫尔斯电码字符串(例如“- . -..- -”,翻译为“TEXT”)并将其放入数组中?我想我不能像处理多个字符那样使用 tekst[MAX] 数组?

注意2:尽管任何想法都会有所帮助,但并不是所有的想法我都能理解或实施,因为我对 C 的了解很少。提前谢谢你

【问题讨论】:

  • printf 通常不会打印,除非有 \n 字符,请尝试将其添加到程序的末尾。
  • "%[^\n]c" 中的c 是什么意思?请注意for(j=0;j&lt;30;j++) 会破坏数组char alfabet[26],所以它应该是for(j=0;j&lt;26;j++)
  • 不知道,只是发现它是一种扫描直到进入的方式,删除“c”并且程序运行相同。不包括它重要吗?谢谢你,将 for 循环更改为 j
  • 注意:B的代码应该是-...,而不是-..(即D)
  • 关于从摩尔斯电码翻译的问题,可以使用类似的代码,但使用strcmp将代码与表格进行比较。

标签: c


【解决方案1】:

这是代码,

#include<stdio.h>
#include <string.h>
#define MAX 1000

int main(){
    int i, j;
    char alfabet[26]={'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'};
    char* morse[27]={".-", "-..", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
    char tekst[MAX];

    printf("Podaj tekst pisany wielkimi literami: ");
    scanf("%s", &tekst);

    int length = (unsigned)strlen(tekst);

    for(i=0; i<length; i++){
        for(j=0; j<26; j++){
            if(tekst[i]==alfabet[j]){
                printf("%s ", morse[j]);
            }
        }

    }

}

获取作为字符串输入的单词,您需要拥有 string.h 库。希望你能得到答案。

【讨论】:

    猜你喜欢
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2017-02-07
    • 2013-04-27
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多