- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
/*
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных
латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка.
Напечатать те слова последовательности, которые отличны от первого слова и
удовлетворяют следующему свойству: в слове нет повторяющихся букв.
*/
#include <iostream>
#include <cstring>
using namespace std;
void strComparsion(const char *str1, const char *str2, const int beginStr2, const int endStr2);
int main()
{
char arrWord[50*8+50+1] = "spros na java programmistov"
" rastet i v etom vinovat chertov android.";
int counterSpace = 0; //Счетчик пробелов
char strOneBuffer[9]; //Массив для первого слова
cout << "Na vhode: \n" << arrWord << endl;
cout << "Na vyhode: \n";
//Копируем первое слов в отдельный массив
for(int i = 0; arrWord[i-2] != ' ';i++)
{
strOneBuffer[i] = arrWord[i];
if(arrWord[i] == ' ')
{
strOneBuffer[i] = '\0';
counterSpace = i;
}
}
for(int i = counterSpace + 1, j = counterSpace + 1; arrWord[i] != '\0' ; i++)
if(arrWord[i] == ' ' || arrWord[i] =='.')
{
strComparsion(strOneBuffer, arrWord, j, i);
j = i +1;
}
return 0;
}
void strComparsion(const char *str1, const char *str2, const int beginStr2, const int endStr2)
{
//Флаги
int countSymbol = 0;
int repeatSymbol = 0;
//Сравниваем слова с первым словом
if( strlen(str1) == endStr2 - beginStr2 )
for(int i = 0, j = beginStr2; j < endStr2; i++, j++)
if(str2[j] == str1[i])
countSymbol++;
//Ищем повторяющийся буквы в слове
for(int i = beginStr2; i < endStr2; i++)
for(int j = beginStr2; j < endStr2; j++)
{
if(i == j)
continue;
if(str2[i] == str2[j])
repeatSymbol++;
}
//Выводим слово по требуеиым критериям
if(countSymbol < strlen(str1) && repeatSymbol == 0)
for(int i = beginStr2; i < endStr2; i++)
{
cout << str2[i];
if(i == endStr2 - 1)
cout << " ";
}
}