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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
vadimburlov
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 25
#1

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

03.05.2011, 21:47. Просмотров 1173. Ответов 8
Метки нет (Все метки)

Кто-нибудь может написать програмку на С++ в которой вводятся 2 строки и нужно найти слово минимальной длины, которое есть в обеих строках?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2011, 21:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти слово минимальной длины, которое есть в обеих строках (C++):

В каждой строке найти слово минимальной длины - C++
у меня дан код программы не могу его дописать на С задача такова даны строки в каждой строке нужно найти минимальное слово длиной и...

Найти самое длинное слово, которое встречаеться в двух строках - C++
Помогите пожалуйста! Задание : дано две строки. Найти самое длинное слово, которое встречаеться в обоих строках.

Слово максимальной длины заменить на слово минимальной длины - C++
Задача: Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы...

Поменять местами слово максимальной и минимальной длины. - C++
Поменять местами слово максимальной и минимальной длины. строки char*. Как это можно сделать? Слова в строке разделены пробелом или...

Работа с классами. Определить слово минимальной длины - C++
Создать класс, содержащий поля данных, реализовать методы их загрузки, обработки и выгрузки. Хранение данных в файле. ЗАДАНИЕ:В строке...

Если в обеих векторах есть элементы, кратные 4, то сформировать вектор С из положительных элементов обеих векторов - C++
Помогите пожалуйста с программой на С. ((( Даны вектор А и B. Если в обеих векторах есть элементы, кратные 4, то сформировать вектор С...

8
Mиxaил
533 / 438 / 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;
}
1
vadimburlov
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 25
03.05.2011, 22:34  [ТС] #3
А на С++ можно, а то как-то не всё понятно...
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:36 #4
Это и есть С++, самый что ни на есть! =)
0
vadimburlov
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 25
03.05.2011, 22:41  [ТС] #5
т.е. если я Ваш код в консоли проверю в Borlande, то он должен работать?
std::string - я такого синтаксиса чего-то не воспринимаю....
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:43 #6
Писал в Visual Studio 2010.

используйте пространство имен
C++
1
using namespace std;
и можете везде убрать std::
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:46 #7
Вот скрин:
1
Миниатюры
Найти слово минимальной длины, которое есть в обеих строках  
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 22:48 #8
так лучше будет:
C++
1
2
Str1 = " " + Delete_Blanks(Str1) + " ";
Str2 = " " + Delete_Blanks(Str2) + " ";
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
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;
}
0
03.05.2011, 23:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 23:05
Привет! Вот еще темы с ответами:

Найти в строках максимальную серию последовательности одинаковых элементов с минимальной длиной - C++
Как найти в строках максимальную серию последовательности одинаковых элементов с минимальной длиной?

В тексте найти слова минимальной длины и записать их в файл - C++
Закончить программу, которая будет определять и печатать СЛОВА минимальной длины из текста в файл (в C++). А то она выводит лишь одно...

Найти самое длиное общее слово в строках - C++
Дано две строки. Нужно найти самое длиное общее слово в строках Например, - Привет, меня зовут Настя - Привет, меня зовут Иван ...

Даны две строки. Составить третью строку из слов, имеющихся в обеих данных строках - C++
Здравствуйте! Нуждаюсь в помощи. Есть следующее задание: даны две строки. Составить третью строку из слов, имеющихся в обеих данных...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru