Из заданной строки получить новую, заменив в ней все сочетания «abcd» на «abc»

Grafon

Помогите с задачей, кто знает, как сделать проверку? Т.е. чтобы при вводе цифр, пробелов или пустой строки выводилось сообщение об этом и программа возвращалась в первоначальное состояние ввода букв?
#include <string.h>
#include <iostream.h>
#include<stdio.h>
int main()   
{
char st[100], sl[100],s[20][20]={'\0'};
int k=0,i,t=0,j;
cout<<"Vvedite simvoly"<<endl;
cin>>st;
cout<<"Uporyadochennye simvoly"<<endl;
cout<<endl;
t=strlen(st);
i=-1;
do
{++i;
if(st[i]=='a' && st[i+1]=='b' && st[i+2]=='c' && st[i+3]=='d')
{
 for( j=i+3;j<t-1;j++)
 st[j]=st[j+1];
 t--;
}
}
while(st[i]!='\0');       
for( j=0;j<t;j++)          
cout<<st[j];
return 0;
}
1 ответ

Grafon

Не скажу что красиво сделал.
#include <string.h>
#include <iostream.h>
#include<stdio.h>
 
bool check(char st[]){
        if (st[0]=='\0')
                return true;
        for (int i=0;i<strlen(st);i++)   // ïðîâåðêГ* Г*Г* öèôðû
                if ((st[i]<=57&&st[i]>=48)||st[i]==32)
                       return true;
 
        return false;
}
 
int main()
{
char st[100], sl[100],s[20][20]={'\0'};
int k=0,i,t=0,j;
cout<<"Vvedite simvoly"<<endl;
do{
cin>>st;
}while(check(st));
cout<<"Uporyadochennye simvoly"<<endl;
cout<<endl;
t=strlen(st);
i=-1;
/*do
{++i;
if(st[i]=='a' && st[i+1]=='b' && st[i+2]=='c' && st[i+3]=='d')
{
 for( j=i+3;j<t-1;j++)
 st[j]=st[j+1];
 t--;
}
} */
char * pch;
pch = strstr (st,"abcd");
strncpy (pch,"abc ",4);
 
while(st[i]!='\0');
for( j=0;j<t;j++)
cout<<st[j];
 
system("PAUSE");
return 0;
}