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

В предложении найти все слова, отличные от последнего - C++

Восстановить пароль Регистрация
 
RamRai
4 / 4 / 0
Регистрация: 03.06.2013
Сообщений: 34
20.06.2013, 14:39     В предложении найти все слова, отличные от последнего #1
Такие дела, дали задание, при этом ничего не объяснили, я хз как тут делать
добрые форумчане, помогите пожалуйста

В предложении найти все слова, отличные от последнего. В каждом найденном слове удалить первую букву. Результат вывести на печать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2013, 14:39     В предложении найти все слова, отличные от последнего
Посмотрите здесь:

Напечатать все слова, отличные от последнего слова C++
C++ Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по заданному правилу
C++ Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
C++ Напечатать все слова отличные от последнего и удовлетворяющие следующему свойству:
C++ Между соседними словами – запятая, за последним словом – точка. Создать новый файл, содержащий все слова, отличные от последнего слова
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
20.06.2013, 14:58     В предложении найти все слова, отличные от последнего #2
Цитата Сообщение от RamRai Посмотреть сообщение
В предложении найти все слова, отличные от последнего.
Подсчитать кол-во?
RamRai
4 / 4 / 0
Регистрация: 03.06.2013
Сообщений: 34
20.06.2013, 15:45  [ТС]     В предложении найти все слова, отличные от последнего #3
Цитата Сообщение от Ezembi Посмотреть сообщение
Подсчитать кол-во?
наверное

Добавлено через 45 минут
Цитата Сообщение от Ezembi Посмотреть сообщение
Подсчитать кол-во?
сможешь помочь?
es_
 Аватар для es_
198 / 198 / 46
Регистрация: 14.01.2013
Сообщений: 446
20.06.2013, 15:58     В предложении найти все слова, отличные от последнего #4
В предложении найти все слова, отличные от последнего. В каждом найденном слове удалить первую букву. Результат вывести на печать.
Тут не количество нужно подсчитать, а вывести конечную строку.
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <math.h>
#include <string>
 
using namespace std;
 
int main()
{
        int i=0,dlina=0,ind=-1,ind1=0,ind2=0,ind3=0;  
        setlocale(LC_ALL,"Russian");
        string str = "съешь ещё ча, rаю этих мягких французских чаю булок, да выпей чаю!",temp, alfavit="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMйцукенгшщзхъёфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ",razdelitel=".!?; ,";
        dlina=str.length();
        //cout <<str[dlina]<<endl;
        for (i=dlina;i>-1;i--)
        {
            if (alfavit.find_first_of(str[i])!=-1 && ind==-1)
            {
                ind=i;
                ind1=1;
            }
            if (ind1==1 &&  (razdelitel.find_first_of(str[i])!=-1 || i==0))
            {
                if (i==0)
                {
                    temp=str.substr(i,ind-i+1);
                }
                else
                {
                 temp=str.substr(i+1,ind-i);
                }
                ind=i;ind1=100;
                break;
            }
        }
        for (i=0;i<ind+1;i++)
        {
            if (alfavit.find_first_of(str[i])!=-1 && ind2==0)
            {
                ind1=1;
                ind2=1;
                ind3=i;
            }
            if (ind1==1 && razdelitel.find_first_of(str[i])!=-1)
            {
                if(str.substr(ind3,i-(ind3))!=temp)
                {
                    str.erase(ind3,1); i--;ind--;
                }
                ind2=0;ind1=0;ind3=0;
            }
        }
        cout <<str<<endl;
        system("PAUSE > void");
        return 0;
}
На скорую руку писал, код грубоват, если сам разберёшься - сможешь лишнее убрать)
RamRai
4 / 4 / 0
Регистрация: 03.06.2013
Сообщений: 34
20.06.2013, 16:05  [ТС]     В предложении найти все слова, отличные от последнего #5
Цитата Сообщение от es_ Посмотреть сообщение
Тут не количество нужно подсчитать, а вывести конечную строку.
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <math.h>
#include <string>
 
using namespace std;
 
int main()
{
        int i=0,dlina=0,ind=-1,ind1=0,ind2=0,ind3=0;  
        setlocale(LC_ALL,"Russian");
        string str = "съешь ещё ча, rаю этих мягких французских чаю булок, да выпей чаю!",temp, alfavit="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMйцукенгшщзхъёфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ",razdelitel=".!?; ,";
        dlina=str.length();
        //cout <<str[dlina]<<endl;
        for (i=dlina;i>-1;i--)
        {
            if (alfavit.find_first_of(str[i])!=-1 && ind==-1)
            {
                ind=i;
                ind1=1;
            }
            if (ind1==1 &&  (razdelitel.find_first_of(str[i])!=-1 || i==0))
            {
                if (i==0)
                {
                    temp=str.substr(i,ind-i+1);
                }
                else
                {
                 temp=str.substr(i+1,ind-i);
                }
                ind=i;ind1=100;
                break;
            }
        }
        for (i=0;i<ind+1;i++)
        {
            if (alfavit.find_first_of(str[i])!=-1 && ind2==0)
            {
                ind1=1;
                ind2=1;
                ind3=i;
            }
            if (ind1==1 && razdelitel.find_first_of(str[i])!=-1)
            {
                if(str.substr(ind3,i-(ind3))!=temp)
                {
                    str.erase(ind3,1); i--;ind--;
                }
                ind2=0;ind1=0;ind3=0;
            }
        }
        cout <<str<<endl;
        system("PAUSE > void");
        return 0;
}
На скорую руку писал, код грубоват, если сам разберёшься - сможешь лишнее убрать)
string str = "съешь ещё ча, rаю этих мягких французских чаю булок, да выпей чаю!" - а вот тут всё правильно?
а то препод придерется, а я не смогу ей объяснить
es_
 Аватар для es_
198 / 198 / 46
Регистрация: 14.01.2013
Сообщений: 446
20.06.2013, 16:11     В предложении найти все слова, отличные от последнего #6
Да. Сюда:
C++
1
"съешь ещё ча, rаю этих мягких французских чаю булок, да выпей чаю!"
можешь писать что хочешь Это предложение с которым ведётся работа: Поиск слов отличных от последнего слова и удаление в них первых букв.
Ты скопируй код к себе в проект и попробуй)
RamRai
4 / 4 / 0
Регистрация: 03.06.2013
Сообщений: 34
20.06.2013, 16:29  [ТС]     В предложении найти все слова, отличные от последнего #7
Цитата Сообщение от es_ Посмотреть сообщение
Да. Сюда:
C++
1
"съешь ещё ча, rаю этих мягких французских чаю булок, да выпей чаю!"
можешь писать что хочешь Это предложение с которым ведётся работа: Поиск слов отличных от последнего слова и удаление в них первых букв.
Ты скопируй код к себе в проект и попробуй)
воу, спасибо большое!!!
надеюсь прокатит
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
20.06.2013, 20:51     В предложении найти все слова, отличные от последнего #8
Ещё так:
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
#include <iostream>
#include <string>
#include <sstream>
#include <unordered_set>
#include <iterator>
#include <algorithm>
#include <windows.h>
 
std::string last_word(const std::string& s)
{
   auto end_ = s.find_last_not_of(" ");
   auto begin_ = s.find_last_of(" ", end_);
   return s.substr(++begin_, end_ - begin_);
}
 
int main(int argc, char** argv)
{
   SetConsoleCP (1251); SetConsoleOutputCP (1251);
   
   using input = std::istream_iterator<std::string>;
   
   std::string s = "hello cat good begin cat begin little hello soon cat  ";
   std::string last_ = last_word(s);
   std::cout<<"Last word: \""<<last_<<"\"\n\n";
   
   std::istringstream iss(s);
   std::unordered_set<std::string> words{input(iss), input()};
   
   words.erase(last_);
   std::for_each(words.begin(), words.end(), [](std::string s)
   {
      std::cout<<s.erase(0, 1)<<" ";
   });
   
   std::cout<<'\n';
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 22:19     В предложении найти все слова, отличные от последнего
Еще ссылки по теме:

Напечатать все слова, отличные от последнего слова. C++
C++ Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв. Напечатать все слова, отличные от последнего слова
В предложении S1 найти все слова, которые есть в предложении S2 C++

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

Или воспользуйтесь поиском по форуму:
RamRai
4 / 4 / 0
Регистрация: 03.06.2013
Сообщений: 34
20.06.2013, 22:19  [ТС]     В предложении найти все слова, отличные от последнего #9
Цитата Сообщение от DiffEreD Посмотреть сообщение
Ещё так:
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
#include <iostream>
#include <string>
#include <sstream>
#include <unordered_set>
#include <iterator>
#include <algorithm>
#include <windows.h>
 
std::string last_word(const std::string& s)
{
   auto end_ = s.find_last_not_of(" ");
   auto begin_ = s.find_last_of(" ", end_);
   return s.substr(++begin_, end_ - begin_);
}
 
int main(int argc, char** argv)
{
   SetConsoleCP (1251); SetConsoleOutputCP (1251);
   
   using input = std::istream_iterator<std::string>;
   
   std::string s = "hello cat good begin cat begin little hello soon cat  ";
   std::string last_ = last_word(s);
   std::cout<<"Last word: \""<<last_<<"\"\n\n";
   
   std::istringstream iss(s);
   std::unordered_set<std::string> words{input(iss), input()};
   
   words.erase(last_);
   std::for_each(words.begin(), words.end(), [](std::string s)
   {
      std::cout<<s.erase(0, 1)<<" ";
   });
   
   std::cout<<'\n';
   return 0;
}
не запустилась(
Yandex
Объявления
20.06.2013, 22:19     В предложении найти все слова, отличные от последнего
Ответ Создать тему
Опции темы

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