Форум программистов, компьютерный форум CyberForum.ru

найти слово минимальной длины, которое есть в обеих строках - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
vadimburlov
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 25
03.05.2011, 21:47     найти слово минимальной длины, которое есть в обеих строках #1
Кто-нибудь может написать програмку на С++ в которой вводятся 2 строки и нужно найти слово минимальной длины, которое есть в обеих строках?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2011, 21:47     найти слово минимальной длины, которое есть в обеих строках
Посмотрите здесь:

найти самое длинное слово в тексте которое состоит из цифр C++
Если в обеих векторах есть элементы, кратные 4, то сформировать вектор С из положительных элементов обеих векторов C++
C++ Слово максимальной длины заменить на слово минимальной длины
C++ найти слово в строке которое содержит заданный символ
C++ Поменять местами слово максимальной и минимальной длины.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:25     найти слово минимальной длины, которое есть в обеих строках #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <string>
 
std::string Delete_Blanks(std::string Str)
{
    std::string S = Str;
    while (S.find("  ") < S.length())
        S.erase(S.find("  "), 1);
    return S;
}
 
void Common_Short_Word (std::string Str1, std::string Str2)
{
    Str1 = Delete_Blanks(Str1);
    Str2 = Delete_Blanks(Str2);
    std::string S = Str1 + " ";
    std::string Word;
    std::string MinWord;
    short int MinLength = Str1.length() + Str2.length();
 
    while (!S.empty())
    {
        Word.append (S, 0, S.find(" "));
        if ((Str2.find(" " + Word + " ") < Str2.length()) && (Word.length() < MinLength))
        {
            MinLength = Word.length();
            MinWord = Word;
        }
        S.erase(0, S.find(" ") + 1);
        Word.clear();       
    }
 
    (MinWord != "") ? std::cout << MinWord : std::cout << "Not found!";
}
 
int main()
{
    std::string FirstString, SecondString;
    std::cout << "Enter the first line [> ";
    std::getline(std::cin, FirstString);
 
    std::cout << "Enter the second line [> ";
    std::getline(std::cin, SecondString);
 
    Common_Short_Word (FirstString, SecondString);
    std::cin.get();
    return 0;
}
vadimburlov
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 25
03.05.2011, 22:34  [ТС]     найти слово минимальной длины, которое есть в обеих строках #3
А на С++ можно, а то как-то не всё понятно...
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:36     найти слово минимальной длины, которое есть в обеих строках #4
Это и есть С++, самый что ни на есть! =)
vadimburlov
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 25
03.05.2011, 22:41  [ТС]     найти слово минимальной длины, которое есть в обеих строках #5
т.е. если я Ваш код в консоли проверю в Borlande, то он должен работать?
std::string - я такого синтаксиса чего-то не воспринимаю....
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:43     найти слово минимальной длины, которое есть в обеих строках #6
Писал в Visual Studio 2010.

используйте пространство имен
C++
1
using namespace std;
и можете везде убрать std::
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:46     найти слово минимальной длины, которое есть в обеих строках #7
Вот скрин:
Миниатюры
найти слово минимальной длины, которое есть в обеих строках  
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:48     найти слово минимальной длины, которое есть в обеих строках #8
так лучше будет:
C++
1
2
Str1 = " " + Delete_Blanks(Str1) + " ";
Str2 = " " + Delete_Blanks(Str2) + " ";
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 23:05     найти слово минимальной длины, которое есть в обеих строках
Еще ссылки по теме:

Создать третью строку, которая должна содержать символы, присутствующие одновременно в обеих исходных строках C++
Найти в строках максимальную серию последовательности одинаковых элементов с минимальной длиной C++
Работа с классами. Определить слово минимальной длины C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
03.05.2011, 23:05     найти слово минимальной длины, которое есть в обеих строках #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <string>
#include <algorithm>
#include <set>
#include <sstream>
#include <iterator>
#include <vector>
 
struct StrLenCmp
{
    bool operator()(const std::string& a, const std::string& b) const
    {
        return a.length() < b.length();
    }
};
 
int main()
{
    typedef std::istream_iterator<std::string> StringInIter;
 
    std::cout << "s1: ";
    std::string s1;
    std::getline(std::cin, s1);
 
    std::cout << "s2: ";
    std::string s2;
    std::getline(std::cin, s2);
 
    std::istringstream stream(s1);
    std::set<std::string> set1((StringInIter(stream)), StringInIter());
 
    stream.clear();
    stream.str(s2);
 
    std::set<std::string> set2((StringInIter(stream)), StringInIter());
 
    std::vector<std::string> v;
    std::set_intersection(set1.begin(), set1.end(),
                          set2.begin(), set2.end(),
                          std::back_inserter(v));
 
    std::cout << *std::min_element(v.begin(), v.end(), StrLenCmp()) << '\n';
 
    return 0;
}
Yandex
Объявления
03.05.2011, 23:05     найти слово минимальной длины, которое есть в обеих строках
Ответ Создать тему
Опции темы

Текущее время: 23:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru