Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
4 / 4 / 1
Регистрация: 28.04.2013
Сообщений: 64
1

Строки. Распечатать предложение, удалив из него те слова , которые встретились там более одного раза

28.04.2013, 11:57. Просмотров 1869. Ответов 1
Метки нет (Все метки)

Ввести предложение , слова в котором разделены пробелами и запятыми . Распечатать это предложение , удалив из него те слова , которые встретились там более одного раза .
вот такая задача, сделать вообще не получается, подскажите пожалуйста как лучше сделать
вот последнее что пробовал сделать по ней:


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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <conio.h> 
#include <iostream> 
#include <string> 
#include <string.h> 
#include <math.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
 
 
void main(){
string str;
int UpBorder=0, DownBorder=0, buf, check=0, j=0;
cout << "Type string: ";
getline(cin, str);
cout << endl;
cout << str.length() << endl;
for(int i=0; i < (str.length());i++)
{
if((str[i] == 32) && (str[i+1] > 65))  //если встретился пробел, а след. символ - буква
{
DownBorder = i+1; //нижней границе присваеваем первую букву в слове
buf = DownBorder;
check = 1;
while (check == 1) //ищем верхнюю границу слова (до запятой или пробела или конца строки)
    {
    if((str[buf] == 32) || (str[buf] == 44) || (buf == str.length()))  //если встретится запятая, пробел или конец строки, то поменять чек на ноль
    check = 0;
    else
    buf++;
    }   
UpBorder = buf-1; //верхняя граница
check = 0;
for(int k=0; k<i; k++)  //поиск первой совпадающей буквы
    {
    if((str[DownBorder] == str[k])) //если встретится совпадающая буква ((а предыдущей будет или начало строки или пробел))
        {
        buf = k;
        while (str[buf] > 65) //
            {
            if (str[buf] != str[DownBorder+j]) 
                check = 1;
            j++;
            buf++;
            }
        }
    }
 
j=0;
if(check == 0)
    {
for(int k=DownBorder; k<=UpBorder; k++)
cout << str[k];
cout << "  ";
    }
 
 
}
 
 
 
 
}
 
 
getch();}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 11:57
Ответы с готовыми решениями:

Убрать слова, которые встретились в тексте более одного раза
Дано предложение, составленное из слов и групп цифр (считать тоже словами), определяющих целые...

Удалить из предложения слова, которые встретились в нем более одного раза
Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать это предложение,...

Распечатать введенное предложение, удалив из него слова, которые состоят менее чем из n букв
Задание: Распечатать введенное предложение, удалив из него слова, которые состоят менее чем из n...

Распечатать введенное предложение, удалив из него слова, которые состоят менее, чем из трех букв
помогите составить программу: Распечатать введенное предложение, удалив с него слова, котоорые...

1
1450 / 787 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
28.04.2013, 14:35 2
Сделал на основе unordered_set дабы сохранять правильный порядок слов в предложении. Как то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <sstream>
#include <iterator>
#include <vector>
#include <unordered_set>
 
int main()
{
    std::string s;
    std::cout<<"Enter text: "; std::getline(std::cin, s); 
    std::istringstream iss(s);
    std::vector<std::string> v{std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>()};
    std::unordered_set<std::string> words{v.rbegin(), v.rend()};
    for (const auto& i : words) std::cout<<i<<" ";
    std::cout<<"\n";
    
    return 0;
}
Попутно вопрос, как вывести элементы unordered_set в обратном порядке?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 14:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Распечатать введенное предложение, удалив из него слова, которые состоят менее чем из трех букв
Распечатать введенное предложение , удалив из него слова , которые состоят менее чем из трех букв .

Распечатать введенное предложение, удалив из него слова, которые состоят менее чем из трех букв
набросков нет не знаю что написать

Распечатать введенное предложение, удалив из него слова, которые состоят менее чем из трех букв
#include&lt;conio.h&gt; #include &lt;vcl.h&gt; #pragma hdrstop #pragma argsused void main () {char...

Распечатать(вывести на экран) введенное предложение, удалив из него слова, которые состоят менее чем из трех букв
Задание 1.Распечатать(вывести на экран) введенное предложение, удалив из него слова, которые...


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

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

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