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