строка1="папа у Васи силен в математике учится"
строка2="папа за Васю весь год где это видано где это слыхано"
1) "папа у Васи силен в математике учится видано где это слыхано"
2) "папа у Васи силен в математике учится видано где это слыхано"
3) "папа у Васи силен в математике учитсявиданогдеэтослыхано"
#include <stdio.h>
#include <stdlib.h>
int main()
{
enum {str_len=80};
enum {false, true};
int words; /* число слов */
int i, j;
int in_word;
char s1[str_len+1]; /* первая строка */
char s2[str_len+1]; /* вторая строка */
/* читаем первую строку */
printf("s1=");
for (i=0; i<str_len && (s1[i]=getchar())!=EOF && s1[i]!='\n'; i++)
;
s1[i]='\0';
/* читаем вторую строку */
printf("s2=");
for (i=0; i<str_len && (s2[i]=getchar())!=EOF && s2[i]!='\n'; i++)
;
s2[i]='\0';
/* считаем длину и количество слов в первой строке */
words = 0;
i=0;
in_word = 0;
while (s1[i])
{
if (in_word && s1[i]==' ')
{
in_word = false;
words++;
}
else if (!in_word && s1[i]!=' ')
in_word = true;
i++;
}
if (in_word)
words++;
/* пропускаем words слов во второй строке */
j=0;
in_word = 0;
while (s2[j] && words>0)
{
if (in_word && s2[j]==' ')
{
in_word = false;
words--;
}
else if (s2[j]!=' ')
in_word = true;
j++;
}
/* если первая строка заканчивается не пробелом, вставим его */
if (s1[i-1]!=' ')
s1[i++]=' ';
while (s2[j])
{
if (s2[j]!=' ')
{ /* вставляем непробельный символ */
in_word = true;
s1[i++]=s2[j];
}
else if (in_word)
{ /* вставляем только первый из серии пробелов */
in_word = false;
s1[i++]=s2[j];
}
j++;
} s1[i]='\0';
printf("s1=%s\n",s1);
system("pause");
return 0;
}
enum {false, true};
const int false=0;
const int true=1;
#define str_len 80
#define false 0
#define true 1
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.