Помощь - Поиск - Пользователи - Календарь
Полная версия: C++ работа со строками , нужна помощь
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Жека
Есть два таких задания

1.Дана строка, содержащая текст. Найти слова в тексте, которые можно составить из первого и последнего слова (буквы можно использовать не более одного раза).
2.Дана строка, содержащая текст. Удалить из нее каждое слово нечетной длины.

Как такое сделать ? , выяснил одно, что делается это через функции strtok strncpy strncat
Буду всем весьма благодарен ! помогите пожалуйста !!!
Жека
и никто не поможет даже , обидно =( че нить сам тогда намучаю mad.gif
Жека
Вот что сделал , только первая программа работает с английским алфавитом , может кто знает как на русском сделать что бы работало , число символов в строке int lexicon[26] менял на русский , не помогает sad.gif

 #include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
void main(void)
{
char src[32]; // объявление строки в 32 символов
int lexicon[26] = {0}; // создание целочисленного массива из 26 элементов (англ.алф)
int temp[26] = {0}; // создание целочисленного массива из 26 элементов временного англ.алф.
int i;
char *ptr, *p;
printf("Enter string: "); // вывод строки

cin.get(src,32); // получение строки
/*состовляем словарь символов*/
i = (strlen(src)-1); // присвоение значение равное длине строке -1

while(i >= 0 && src[i] != ' ') // поиск первого слова
{
lexicon[src[i]-'a']++; // добавление в словарь кода символа
src[i] = 0; // обнуление текущего символа
i--; // уменьшение i на единицу
}

ptr = strtok(src, " ,.!?"); // поиск последнего слова
while(*ptr)
{
lexicon[*ptr-'a']++;
ptr++; // переход на следующий символ
}

/*** проверяем слова ***/
while(ptr)
{

if((ptr = strtok(0, " ,.!?"))!=0) // поиск второго и следующих слов,исключая последнее
{
for( i = 0; i < 26; ++i) //обнуление временного словаря
temp[i] = 0;

p = ptr; // присвоение

while(*p)
{
temp[*p-'a']++; // заполнение временного словаря
p++; // переход на следующий символ
}
for(i = 0; i < 26; i++) // проверка слов на символы
if(temp[i] > lexicon[i])
break;
if(i == 26)
printf("%s\n", ptr); // вывод найденных слов
}
}
printf("%s\n","Press any key"); // вывод строки
getch();
}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.