Другие языки программирования и технологии

Нужен цыкл С++

Нужен цыкл на С++ который ищет слова состоящие из букв которые неповторяются.
void ParseString(const char *pString)
{
if (pString)
{
const char *pWord; // начало слова
int ch[256]; // счетчики букв в слове
int f; // флажки

for (f = 0; *pString; pString++)
{
switch (*pString)
{
case '\t': // разделители слов
case '\r':
case '\n':
case ' ':
case ',':
case '.':
case '!':
case '?':
case '/':
case ':':
case '(':
case ')':
if (f == 1) // первый разделитель после слова с неповторяющимися буквами
{
while (pWord < pString)
{
std::cout << *pWord++;
}
std::cout << '\n';
}
f = 0;
break;

default: // все что считаем символами слов
if (!f) // первый символ после разделителей
{
pWord = pString;
memset(ch, 0, sizeof(ch));
f = 1;
}

if (++ch[(unsigned char)*pString] > 1) // если буква уже встречалась, то баним слово
{
f |= 2;
}
break;
}
}

if (f == 1) // последнее слово
{
while (pWord < pString)
{
std::cout << *pWord++;
}
std::cout << '\n';
}
}
}
Matvey Vasiliev
Matvey Vasiliev
21 360
Лучший ответ
Поподробнее пожалуйста. Что на входе программы, как она должна читать исходные данные и откуда? Всмысле бувы повторяться? В слове несколько одинаковых подрядидущих букв или как?
Денис Ляшенко
Денис Ляшенко
1 942
ФУНКЦИЯ ПРОВЕРКИ СЛОВА НА ПОВТОРЫ!
bool test_povtor(char *slovo);
{
int flag, i;
for(i=0;*(slovo+i)!=0 && flag==0;i++)
{
for(j=i+1;*(slovo+j)!=0 && flag==0;j++)
if(*(slovo+i)==*(slovo+j))
flag=1;
}
if(flag==1)
return true;
else
return false;
}

ФУНКЦИЯ сканирование строки на слова с печатью неповторяющихся

void scan_str(char *str)
{
char *buf;
int i,j;
buf=new char[strlen(str)];
for(i=0;*(str+i)!=0;i++)
{
switch(*(str+i))
{
case ' ':
case '.':
case ',':
case '!':
case '?':
if(fl==1)
{
*(buf+j)=0;
if(!test_povtor(buf))
printf("%s",buf);
}
j=0;
fl=0;
break;
default:
*(buf+j)=*(str+i);
j++; fl=1;
}
}
delete[] buf;
}