Составить строку из цифр, соответствующих данным буквам - C (СИ)
Формулировка задачи:
Пусть цифрам от 1 до 9 соответствуют буквы от А (а) до I(i). С клавиатуры вводится строка. Составьте новую строку из цифр, соответствующих только данным буквам (прописным и строчным), отсортированным по возрастанию.
Допустимые символы - прописные и строчные латинские буквы.
Пример:
Исходная строка: SHiFROVkaOtSHPIonA
Результат: 1168899(выделены буквы: HiFaHIA)
Пожалуйста, помогите с кодом программы или хотя бы напишите примерный алгоритм последовательности действий.и, буду очень благодарна любой помощи!
Решение задачи: «Составить строку из цифр, соответствующих данным буквам»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> #define CHARS_WATCHED (9) int main(void) { char buf[BUFSIZ]; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) { int counters[CHARS_WATCHED] = { 0 }, i, j; char * ptr = buf; for ( ; *ptr; ++ptr ) { char c = toupper(*ptr); if ( c >= 'A' && c < 'A' + CHARS_WATCHED ) counters[c - 'A']++; } printf("Result: "); for ( i = 0; i < CHARS_WATCHED; ++i ) for ( j = 0; j < counters[i]; ++j ) printf("%d", i + 1); printf("\n"); } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек:
и . - Определение количества наблюдаемых символов: #define CHARS_WATCHED (9).
- Объявление переменных:
- buf: буфер для ввода строки, размер которого определяется макросом BUFSIZ.
- counters: массив счетчиков символов, инициализированный нулями.
- i, j: индексы для перебора массива счетчиков и вывода результата.
- Ввод строки с помощью fgets().
- Преобразование символов в верхний регистр с помощью toupper().
- Увеличение счетчика символов в соответствующем массиве.
- Вывод результата:
- Для каждого символа в строке выводится его порядковый номер, увеличенный на 1.
- Ввод символа новой строки с помощью printf() и fgets().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д