Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ C++ работа со строками , нужна помощь

Автор: Жека 19.05.2007 2:32

Есть два таких задания

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

Как такое сделать ? , выяснил одно, что делается это через функции strtok strncpy strncat
Буду всем весьма благодарен ! помогите пожалуйста !!!

Автор: Жека 19.05.2007 21:32

и никто не поможет даже , обидно =( че нить сам тогда намучаю mad.gif

Автор: Жека 24.05.2007 10:03

Вот что сделал , только первая программа работает с английским алфавитом , может кто знает как на русском сделать что бы работало , число символов в строке 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();
}