Из заданной строки символов изъять все буквенные символы, оставшиеся цифры преобразовать в число - C (СИ)
Формулировка задачи:
Нужно с заданного ряда символов, изъять все буквенные символы, а цифровые символы что остались превратить в число.
Решение задачи: «Из заданной строки символов изъять все буквенные символы, оставшиеся цифры преобразовать в число»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main(){ setlocale(LC_ALL, "RUSSIAN"); char *str=(char*)malloc(0), letter; int counter=0, i, j; printf("Введите строку символов: "); do{ letter=getchar(); counter++; str=(char*)realloc(str, counter*sizeof(char)); if(letter!='\n'){ str[counter-1]=letter; }else{ str[counter-1]='\0'; } }while(letter!='\n'); i=0; while(i<counter){ if(((str[i]>64) && (str[i]<91)) || ((str[i]>96) && (str[i]<123))){ for(j=i+1; j<counter; j++){ str[j-1]=str[j]; } counter--; str=(char*)realloc(str, counter*sizeof(char)); }else{ i++; } } printf("%i", atoi(str)); free(str); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с C
- Устанавливаем локаль на русский язык для корректного вывода символов
- Объявляем переменные: — str - указатель на строку символов, сначала указываем на память 0 байт — letter - символ, который считываем с помощью getchar() — counter - счетчик количества считанных символов — i, j - индексы для работы со строкой str
- Запрашиваем у пользователя ввод строки символов
- В цикле do-while считываем каждый символ, увеличивая счетчик и выделяя память под строку str
- Если считанный символ не является символом новой строки '\n', то добавляем его в строку str
- Если считанный символ является символом новой строки, то заменяем последний символ в строке str на символ окончания строки '\0'
- После окончания ввода строки символов выводим количество символов в строке
- В цикле while проходим по каждому симво в строке str
- Если символ является буквенным символом (в верхнем или нижнем регистре), то перемещаем все последующие символы в строке на одну позицию вперед
- Если символ не является буквенным символом, то увеличиваем индекс на 1
- После окончания цикла while выводим преобразованную строку в числовое значение с помощью функции atoi()
- Освобождаем память, выделенную под строку str
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д