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