Составить строку из цифр, соответствующих данным буквам - 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().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д