Другие языки программирования и технологии
Нужен цыкл С++
Нужен цыкл на С++ который ищет слова состоящие из букв которые неповторяются.
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';
}
}
}
{
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';
}
}
}
Поподробнее пожалуйста. Что на входе программы, как она должна читать исходные данные и откуда? Всмысле бувы повторяться? В слове несколько одинаковых подрядидущих букв или как?
ФУНКЦИЯ ПРОВЕРКИ СЛОВА НА ПОВТОРЫ!
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;
}
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;
}
Похожие вопросы
- Как начать с определенной комбинации во вложенном цыкле FOR?
- Для чего нужен Нетбук?
- Почему считают что программисту математика не нужна? Откуда взялся этот миф?
- ПОМОГИТЕ! Нужна формула рассчета рейтинга фотографий! Или объяснение, как его посчитать! Выручайте!
- Несколько вопросов по Делфи. что такое указатели и зачем они нужны, зачем нужна @ ,и что за тип Pointer.
- Нужен бесплатный хостинг для создания сайта через код а не конструктор
- если я установлю service pack 3 то те игры и программы к которым нужен service pack 2 будут также идти или что то измент
- Подскажите мне пожалуиста что такое алгоритм и зачем компьютеру. нужен алгоритм.И что такое прога Паскаль и зачем она
- нужны ли папки i386 и amd64 для работы компьютера,если они находятся не на разделе ОС,а в разделе HDD для хранения данны
- Зачем нужны классы в с++?