#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" -> "кс")
    char* result = malloc(strlen(input) * 2 + 1);
    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;
}