首页 > 解决方案 > 如何在 C 中将莫尔斯编码为拉丁字母转换器

问题描述

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

#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 的一般知识知之甚少,并不是所有的想法我都能理解或实施。先感谢您

标签: c

解决方案


这是代码,

#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 库。希望你得到答案。


推荐阅读