Удалить из текста все двузначные числа - 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;
}