На входе: вводится с консоли предложение (набор слов, разделенных одним и только одним пробелом, заканчивающийся точкой).
В процессе выполнения на консоль выводится сформированный массив - отдельные слова. Идет запрос, какие из них убрать: если нечетные - жмем 1, если четные - 2.
На выходе: оставшиеся слова через пробел, в конце - точка.
#include<iostream>
#include <cstring>
using namespace std;
int main()
{
char str[80];
char word[40][80];
int space_pos[40];
int i,j,k;
cout<<"The sentence:\n";
cin.getline(str,80);
int n=0;
while(str[n]!='.') n++;
int m=0;
for(i=0;i<n;i++)
if(str==' ')
{space_pos[m]=i;//позиция пробела
m++;}
space_pos[m]=n;//позиция точки
m++;
//----------формирование массива слов
int begin=0;
int end=space_pos[0];
for(j=0;j<m;j++)
{
for(i=0,k=begin;k<end;k++,i++)
word[j]=str[k];
word[j]='\0';
begin=end+1;
end=space_pos[j+1];
}
for(j=0;j<m;j++)
cout<<word[j]<<endl;
//--------удаление слов по запросу (чет/нечет)
int not_wanted; // 2- для удаления четных слов, 1 - нечетных
char res[80]; //получившееся предложение
char rw[20][80]; //оставшиеся слова
cout<<"\nDelete odd (input 1) or even (input 2) words? ";
cin>>not_wanted;
k=0;
if(not_wanted==2) //оставляем нечетные
{for(j=0;j<m;j++)
if(j%2==0)
{strcpy_s(rw[k],word[j]);
k++;}
}
else if(not_wanted==1)
{for(j=0;j<m;j++) //оставляем четные
if(j%2)
{strcpy_s(rw[k],word[j]);
k++;}
}
strcpy_s(res,rw[0]);
for(i=1;i<k;i++)
{strcat_s(res," ");
strcat_s(res,rw);
}
strcat_s(res,".");
cout<<"\nThe result:\n"<<res<<endl;
return 0;
}