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

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с C
  2. Устанавливаем локаль на русский язык для корректного вывода символов
  3. Объявляем переменные: — str - указатель на строку символов, сначала указываем на память 0 байт — letter - символ, который считываем с помощью getchar() — counter - счетчик количества считанных символов — i, j - индексы для работы со строкой str
  4. Запрашиваем у пользователя ввод строки символов
  5. В цикле do-while считываем каждый символ, увеличивая счетчик и выделяя память под строку str
  6. Если считанный символ не является символом новой строки '\n', то добавляем его в строку str
  7. Если считанный символ является символом новой строки, то заменяем последний символ в строке str на символ окончания строки '\0'
  8. После окончания ввода строки символов выводим количество символов в строке
  9. В цикле while проходим по каждому симво в строке str
  10. Если символ является буквенным символом (в верхнем или нижнем регистре), то перемещаем все последующие символы в строке на одну позицию вперед
  11. Если символ не является буквенным символом, то увеличиваем индекс на 1
  12. После окончания цикла while выводим преобразованную строку в числовое значение с помощью функции atoi()
  13. Освобождаем память, выделенную под строку str
  14. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы