Удалить из строки каждое третье слово - C (СИ)
Формулировка задачи:
Здравствуйте! Нужна помощь в выполнении задания. Задание : необходимо так изменить введенную строку, чтобы каждое 3 слово в ней не входило в выходную строку(=удалялось). Все остальные пробелы и слова остаются на своих местах.
Самостоятельно, долго пытался решить задачу но в итоге не получается. После запуска на исполнение (codebloks) итоговая строка(выходная ) не отличается от введенной. Вот мои наработки
Наверняка ошибка в фрагменте ниже
Здесь я просматриваю все символы введенной строки , и если имеется сочетание (пробел)(непробел) то счетчик "слово" увеличиваю на 1. Если слово становится равным трем, то значит что я нашел начало удаляемого слова "s" , а потом ищу его конец(если он существует) ( первый пробел)- "l".
В фрагменте ниже присваиваю элементы входной строки посимвольно элементам выходной, до "s" , то есть до начала третьего (удаляемого слова), а потом с конца (если есть) третьего (удаляемого слова) слова до конца входной строки.
И как писал выше обе строки одинаковы, слово не удаляется, Помогите пожалуйста!!!!!. Заранее огромное спасибо!
#include <stdio.h>
#include <stdlib.h>
int main() {
char is[200];
char os[200];
printf("Vhodnaja stroka =");
gets(is);
printf("Vhodnaja stroka =%s \n", is);
int i,j,k,slovo,l,s,z;
for(i=-1,k=0;is[i]!=0;i++,k++){
if(((is[i]==' ') && (is[i+1]!=' '))) {
for(slovo=0;slovo<4;slovo++){};
if(slovo==3) {
s=k;
for(i=k,z=k;is[i]!=0; i++,z++) {
if(is[i]==' ') { l=0;
l=l+z; break;
}
}
}
}
}
for(i=0,j=0;i!=s;i++,j++){
os[j]=is[i];
}
if (l!=0) {
for(i=l,j=l;is[i]!=0;i++,j++) {
os[j]=is[i];
}
}
os[j]=0;
printf("Vihodnaja stroka =%s \n", os);
}for(i=-1,k=0;is[i]!=0;i++,k++){
if(((is[i]==' ') && (is[i+1]!=' '))) {
for(slovo=0;slovo<4;slovo++){};
if(slovo==3) {
s=k;
for(i=k,z=k;is[i]!=0; i++,z++) {
if(is[i]==' ') { l=0;
l=l+z; break;for(i=0,j=0;i!=s;i++,j++){
os[j]=is[i];
}
if (l!=0) {
for(i=l,j=l;is[i]!=0;i++,j++) {
os[j]=is[i];
}
}
os[j]=0;Решение задачи: «Удалить из строки каждое третье слово»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char is[200];
char os[200], *ops = os, *ps = is;
printf("Vhodnaja stroka = ");
gets(is);
size_t slovo = 1, cut = 0;
while(*ps){
if(!cut)
{
*(ops++) = *ps;
}
if(isalpha(*ps) && !isalpha(*(ps + 1)))
{
cut = 0; slovo++;
}
if(slovo % 3 == 0)
if(isalpha(*(ps + 1)))
{
cut = 1;
}
ps++;
}
*ops = '\0';
printf("Vihodnaja stroka = %s \n", os);
system("pause");
}