Составить строку из цифр, соответствующих данным буквам - 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().