Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 15:27   #1
TambowsWolf
Новичок
Джуниор
 
Регистрация: 07.06.2011
Сообщений: 1
Сообщение Встретился ли в строке str1 какой-нибудь символ из строки str2.

Вообщем не могу сделать задачу. Решите пожалуйта. Буду очень благодарен.

Задача. Написать и протестировать функцию STRS(str1, str2), которая определяет, встретился ли в строке str1 какой-нибудь символ из строки str2.
TambowsWolf вне форума Ответить с цитированием
Старый 10.07.2011, 15:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Давай показывай что смог сделать. Ато в Си строки разные бывают, и способы тоже разные.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.07.2011, 16:00   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

ну как-то так
Код:
#include <iostream>

using namespace std;

int main()
{
    string a , b;
    cin >> a;
    cin >> b;
    for (unsigned long i = 0;i<a.length();i++)
    {
       if (a.find(b[i]) != string::npos)
       {
          flag = true;
          break;
       }
     }
     if (flag) cout << "Да";
     else cout << "нет";
     cin.get();
     return 0;
}
Правда, не знаю, будет ли работать.
_-Re@l-_ вне форума Ответить с цитированием
Старый 10.07.2011, 16:16   #4
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от TambowsWolf Посмотреть сообщение
Вообщем не могу сделать задачу. Решите пожалуйта. Буду очень благодарен.

Задача. Написать и протестировать функцию STRS(str1, str2), которая определяет, встретился ли в строке str1 какой-нибудь символ из строки str2.
В языке С есть соответсвующая стандартная функция strtok, которая выполняет эту задачу

#include <string.h>
char *strpbrk(const char *str1, const char *str2);

В С++ есть функция чден шаблонного класса str::string find_first_of, которая выполняет ту же самую задачу, то есть находит первый символ в строке, совпадающий с одним из символов во второй строке.

Скорей всего вам надо самостоятельно написать такую функцию на языке С.

Прототип вашей функции в соответсвии с тем, как вы ее назвали, будет выглядеть следующим образом

char * STRS( const char *str1, const char *str2 );

Вот примерный код

Код:
char * STRS( const char *str1, const char *str2 )
{
   const char *p1 = str1;

   for ( ; *p1; ++p1 )
   {
      const char *p2 = str2;
      for ( ; *p2; ++p2 ) if ( *p1 == *p2 ) return ( (char * ) p1 );
   }

return ( NULL );
}
Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
ну как-то так
Код:
#include <iostream>

using namespace std;

int main()
{
    string a , b;
    cin >> a;
    cin >> b;
    for (unsigned long i = 0;i<a.length();i++)
    {
       if (a.find(b[i]) != string::npos)
       {
          flag = true;
          break;
       }
     }
     if (flag) cout << "Да";
     else cout << "нет";
     cin.get();
     return 0;
}
Правда, не знаю, будет ли работать.
Очевидно, что у вас работать не будет, так как вы забыли включить заголовок <string>. П самое главное - совершенно не понятноо, почему вы считаете допустимым использовать алгоритм find, причем несколько раз в цикле, и не считаете допустимым использовать алгоритм find_first_of, который выполняет эту задачу всего лишь за один вызов?
Со мной можно встретиться на www.clipper.borda.ru

Последний раз редактировалось Stilet; 10.07.2011 в 18:29.
Сыроежка вне форума Ответить с цитированием
Старый 11.07.2011, 19:22   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Очевидно, что у вас работать не будет, так как вы забыли включить заголовок <string>.
Сколько я помню(да и насколько Википедия помнит), string.h это
Цитата:
string.h — заголовочный файл стандартной библиотеке языка Си, содержащий функции для работы с нуль-терминированными строками
А класс string никак не назовёшь нуль-термированной строкой. Для работы с контейнером string достаточно

Код:
#include <iostream>

using namespace std;
Потому как он находится в пространстве имён std.

Цитата:
П самое главное - совершенно не понятноо, почему вы считаете допустимым использовать алгоритм find, причем несколько раз в цикле, и не считаете допустимым использовать алгоритм find_first_of, который выполняет эту задачу всего лишь за один вызов?
Да только потому, что я пока что не очень знаком с алгоритмами STL, и об find_first_of слышу впервые. Всего лишь так.
_-Re@l-_ вне форума Ответить с цитированием
Старый 11.07.2011, 21:48   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

string и string.h это очень разные вещи.
<string> там находится класс string и wstring.
а <string.h> или как правильно в С++ <cstring> это функции языка С.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.07.2011, 21:50   #7
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Сколько я помню(да и насколько Википедия помнит), string.h это
Вот и нет, <string> и <string.h> - совершенно разные библиотеки.

UPD: Пепел Феникса, опередил :)
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
первый и последний символ в строке AndreyF Общие вопросы Delphi 10 03.08.2016 12:09
удвоить символ в строке Alexander1205 Общие вопросы C/C++ 1 01.04.2011 00:56
Удвоить каждый символ в строке мария2507 Microsoft Office Excel 7 22.12.2009 13:40
заменить символ в строке felmor Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2008 18:38