Удалить из текста все двузначные числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

помогите чем сможете , за все буду благодарен
вот начало программы , дальше не могу сообразить как удалить элементы
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
    int i= 0,n;
    char m[500];
    cout<<"Vvedite text\n";
    gets(m);            
    while (m[i]!='\0')
    {    
        n=i;
        i++;
    }
    n++;
 
    for(i= 0;i<n;i++)
        {    
           if (m[i]==' ')
            if ((m[i+1]=='1')||(m[i+1]=='2')||(m[i+1]=='3')||(m[i+1]=='4')||(m[i+1]=='5')||(m[i+1]=='6')||(m[i+1]=='7')||(m[i+1]=='8')||(m[i+1]=='9'))
                if ((m[i+2]=='0')||(m[i+2]=='1')||(m[i+2]=='2')||(m[i+2]=='3')||(m[i+2]=='4')||(m[i+2]=='5')||(m[i+2]=='6')||(m[i+2]=='7')||(m[i+2]=='8')||(m[i+2]=='9'))
                    if (m[i+3]==' ')
                {

Решение задачи: «Удалить из текста все двузначные числа»

textual
Листинг программы
#include <iostream>
#include <string>
#include <cctype>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    const std::string digits="0123456789";
    size_t idx=0;
    while(1)
    {
        idx=str.find_first_of(digits, idx);
        if(idx == std::string::npos)
            break;
                if(str.size() > 2)
                {
                        if(idx + 2 < str.size())
                        {
                                if(idx != 0 && str[idx] != '0' && !isdigit(str[idx-1]) 
                                    && isdigit(str[idx+1]) && !isdigit(str[idx+2]))
                                {
                                        str.erase(idx, 2);
                                        idx+=2;
                                }
                                else if(idx == 0 && str[idx] != '0' && isdigit(str[idx+1]) 
                                    && !isdigit(str[idx+2]))
                                {
                                        str.erase(idx, 2);
                                        idx+=2;
                                }
                        }
                        else
                        {
                                if(idx != 0 && str[idx] != '0' && !isdigit(str[idx-1]) 
                                    && isdigit(str[idx+1]))
                                        str.erase(idx, 2);
                                else if(idx == 0 && str[idx] != '0' && isdigit(str[idx+1]))
                                        str.erase(idx, 2);
                        }
                        if(str.size() > 3 && str[idx] == '0')
                        {
                            if(idx + 3 < str.size())
                            {
                                if(idx != 0 && !isdigit(str[idx-1])
                                    && isdigit(str[idx+1]) 
                                    && isdigit(str[idx+2]) && !isdigit(str[idx+3]))
                                {
                                    str.erase(idx+1, 2);
                                    idx+=2;
                                }
                                else if(idx == 0 && isdigit(str[idx+1]) &&
                                    isdigit(str[idx+2]) && !isdigit(str[idx+3]))
                                {
                                    str.erase(idx+1, 2);
                                    idx+=2;
                                }
                            }
                            else 
                            {
                                if(idx != 0 && !isdigit(str[idx-1]) && isdigit(str[idx+1])
                                && isdigit(str[idx+2]))
                                    str.erase(idx+1, 2);
                            }
                        }
                        else if(str.size() == 3)
                        {
                            if(isdigit(str[idx+1]) && isdigit(str[idx+2]))
                                str.erase(idx+1, 2);
                        }
                        ++idx;
                }
                else if(str.size() == 2)
                {
                        if(str[idx] != '0' && isdigit(str[idx+1]))
                                str.erase(idx, 2);
                        ++idx;
                }
    }
    std::cout<<str<<'\n';
    return 0;
}

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


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

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

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