#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Функция для транслитерации одного символа
const char* transliterate_char(char c) {
switch (c) {
case 'a': case 'A': return "а";
case 'b': case 'B': return "б";
case 'c': case 'C': return "к";
case 'd': case 'D': return "д";
case 'e': case 'E': return "е";
case 'f': case 'F': return "ф";
case 'g': case 'G': return "г";
case 'h': case 'H': return "х";
case 'i': case 'I': return "и";
case 'j': case 'J': return "й";
case 'k': case 'K': return "к";
case 'l': case 'L': return "л";
case 'm': case 'M': return "м";
case 'n': case 'N': return "Н";
case 'o': case 'O': return "О";
case 'p': case 'P': return "П";
case 'q': case 'Q': return "К";
case 'r': case 'R': return "Р";
case 's': case 'S': return "С";
case 't': case 'T': return "Т";
case 'u': case 'U': return "У";
case 'v': case 'V': return "В";
case 'w': case 'W': return "В";
case 'x': case 'X': return "КС";
case 'y': case 'Y': return "И";
case 'z': case 'Z': return "З";
default: {
// Для всех остальных символов (пробелы, знаки препинания) возвращаем исходный символ
static char result[2];
result[0] = c;
result[1] = '\0';
return result;
}
}
}
// Функция для транслитерации всей строки
char* transliterate_string(const char* input) {
// Выделяем буфер с запасом (результат может быть длиннее исходного, например, "x" -> "кс")
result[0] = '\0'; // Начинаем с пустой строки
// Проходим по каждому символу входной строки
for (int i
= 0; i
< strlen(input
); i
++) { // Получаем транслитерированный вариант символа
const char* transliterated_char = transliterate_char(input[i]);
// Добавляем его к результирующей строке
strcat(result
, transliterated_char
); }
return result;
}
int main() {
// Исходная фраза на латинице
const char* latin_phrase = "Hello World";
// Транслитерируем её
char* transliterated_phrase = transliterate_string(latin_phrase);
// Выводим результат
printf("Исходная фраза: %s\n", latin_phrase
); printf("Результат транслитерации: %s\n", transliterated_phrase
);
// Освобождаем память, выделенную под результат
free(transliterated_phrase
);
return 0;
}