Как кодировать морзе в латинский алфавит переводчик в C - PullRequest
1 голос
/ 21 апреля 2019

Итак, моя домашняя работа - сделать переводчик азбуки морзе-латинского. До сих пор мне удавалось кодировать азбуку морзе на латинском переводчике, но я не могу заставить ее работать наоборот. Вот код:

#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. Это не мое беспокойство на данный момент, я буду работать над этим позже.

Пока что моя самая большая проблема довольно мелкая; программа останавливается сразу после того, как цикл завершает свою последнюю итерацию. Ничто не может быть напечатано, никакая команда не будет иметь место. Понятия не имею почему. Когда это будет исправлено, моей самой большой проблемой будет сам перевод. Как мне отсканировать строку кода Морзе (например, "-. -..- -", что переводится как "ТЕКСТ") и поместить ее в массив? Я полагаю, я не могу использовать массив [MAX] tekst, как я использовал для нескольких символов?

ПРИМЕЧАНИЕ2: хотя любая идея будет полезной, не все из них я смогу понять или реализовать из-за того, как мало я знаю о Си в целом. Заранее спасибо

1 Ответ

0 голосов
/ 21 апреля 2019

Вот код,

#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.Надеюсь, вы получили ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...