В качестве домашнего задания я написал программу на C, которая должна принимать текст и переводить его в азбуку Морзе с помощью светодиода. Для справки, я заменил предопределенную продолжительность мигания светодиода на: «Это __». Это работает так, как сейчас, и я получу полный кредит, но мой вопрос в том, есть ли лучший способ сделать это? Я знаю, что должно быть, вместо того, чтобы использовать все эти операторы «если». Но я новичок в C. (Единственный недостаток этого кода в том, что он длинный, и вы не можете вводить пробелы.) В настоящее время он работает следующим образом: он берет строку и разбивает ее на отдельные буквы, а затем в «для» цикл проверяет эти отдельные буквы на соответствие азбуке Морзе. Дайте мне знать, что вы думаете.
// MorseCode_Attempt1.cpp : Defines the entry point for the console application.
//
include<stdio.h>
include<conio.h>
include<string.h>
void main() {
char str[500];
printf("Enter a string you want in Morse Code with underscores as spaces: ");
scanf("%s", &str);
int i;
int stringLength = strlen(str);
for (i = 0; i < stringLength; i++) {
printf("\n[%c]\n", str[i]);
if (str[i] == 'a') {
printf("\nIt is an a.\n");
}
if (str[i] == 'b') {
printf("\nIt is an b.\n");
}
if (str[i] == 'c') {
printf("\nIt is an e.\n");
}
if (str[i] == 'd') {
printf("\nIt is an d.\n");
}
if (str[i] == 'e') {
printf("\nIt is an e.\n");
}
if (str[i] == 'f') {
printf("\nIt is an f.\n");
}
if (str[i] == 'g') {
printf("\nIt is an g.\n");
}
if (str[i] == 'h') {
printf("\nIt is an h.\n");
}
if (str[i] == 'i') {
printf("\nIt is an i.\n");
}
if (str[i] == 'j') {
printf("\nIt is an j.\n");
}
if (str[i] == 'k') {
printf("\nIt is an k.\n");
}
if (str[i] == 'l') {
printf("\nIt is an l.\n");
}
if (str[i] == 'm') {
printf("\nIt is an m.\n");
}
if (str[i] == 'n') {
printf("\nIt is an n.\n");
}
if (str[i] == 'o') {
printf("\nIt is an o.\n");
}
if (str[i] == 'p') {
printf("\nIt is an p.\n");
}
if (str[i] == 'q') {
printf("\nIt is an q.\n");
}
if (str[i] == 'r') {
printf("\nIt is an r.\n");
}
if (str[i] == 's') {
printf("\nIt is an s.\n");
}
if (str[i] == 't') {
printf("\nIt is an t.\n");
}
if (str[i] == 'u') {
printf("\nIt is an u.\n");
}
if (str[i] == 'v') {
printf("\nIt is an v.\n");
}
if (str[i] == 'w') {
printf("\nIt is an w.\n");
}
if (str[i] == 'x') {
printf("\nIt is an x.\n");
}
if (str[i] == 'y') {
printf("\nIt is an y.\n");
}
if (str[i] == 'z') {
printf("\nIt is an z.\n");
}
if (str[i] == '_') {
printf("\nIt is a SPACE.\n");
}
}
return 0;
}
printf("It is a(n) '%c'\n", str[i]);
, не так ли? Такое количество повторений — верный признак того, что что-то серьезно не так. - person Jonathan Leffler   schedule 12.09.2015For now I have substituted the pre-determined lengths of a blink from an LED with: "It is a(n) __."
Ему действительно нужно указывать уникальные данные во всех разных случаях. - person Riddhesh Sanghvi   schedule 12.09.2015if
илиswitch
. Например, массив можно инициализировать для хранения соответствующих уникальных данных. - person Jonathan Leffler   schedule 12.09.2015