0 / 0 / 0
Регистрация: 20.12.2017
Сообщений: 15
1

Задан текст. Напечатать все слова, отличные от последнего слова

28.02.2018, 13:08. Показов 1160. Ответов 7
Метки нет (Все метки)

Задан текст. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: удалить из слова первую букву. Использовать функцию
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2018, 13:08
Ответы с готовыми решениями:

Задан текст, напечатать слова этого текста отличные от последнего слова
Задан текст.напечатать слова этого текста отличные от последнего слова удалить в каждом из них...

Функции, обработка текста: Задан текст; напечатать слова, отличные от последнего слова
Здравствуйте, нужна программа работающая через функции. Условие: Задан текст. Напечатать все...

Задан текст; напечатать слова, отличные от последнего слова
Здравствуйте, вопрос такой, я написал программу через функции Её условие заключается в том, что...

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

7
1754 / 1346 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
28.02.2018, 14:10 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
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <iterator>
#include <algorithm>
 
void Print(std::string s) {
    std::string word;
    std::stringstream ss(s);
    std::vector<std::string> words, new_words;
    while (ss >> word) words.push_back(word);
    std::transform(words.begin(), words.end() - 1, words.begin(),
        [&words](std::string w) {return w != words.back() ? w.substr(1, w.size() - 1) : w; });
    std::copy_if(words.begin(), words.end() - 1, std::ostream_iterator<std::string>(std::cout, " "),
        [&words](std::string w) {return w != words.back(); });
}
 
int main()
{
    std::string s;
    std::getline(std::cin, s);
    Print(s);
    system("pause");
    return 0;
}
0
2479 / 1906 / 951
Регистрация: 21.12.2010
Сообщений: 3,473
Записей в блоге: 10
28.02.2018, 14:52 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <regex>
#include <string>
 
void f(std::string const& str)
{
    std::regex reg("\\b[[:alpha:]]+\\b(?=.*(\\b[[:alpha:]]+\\b))");
    for(std::sregex_iterator ib(str.begin(), str.end(), reg), ie; ib != ie; ++ib)
    {
        if(std::string(ib->operator[](0)) != ib->operator[](1))
        {
            std::cout << std::string(ib->operator[](0).first + 1, ib->operator[](0).second) << std::endl;
        }
    }
}
 
int main()
{
    std::string str("d a Uhjbua, andsi.oesro andsi a ");
    f(str);
}
0
0 / 0 / 0
Регистрация: 24.02.2018
Сообщений: 17
02.03.2018, 15:48 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
58
59
60
61
62
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
 
using namespace std;
int main()
{
char txt[512];
 
char znaki[] = " .", word[100];
int n_txt, n_znaki = strlen(znaki)-1;
int s = 0, f = 0, i, j;
 
printf("VVedite text: ", txt);
gets(txt);
n_txt = strlen(txt)-1;
 
for(i = n_txt; i > 0; i--)//цикл обнаружения слов,начиная с конца текста
{
for(j = 0; j < n_znaki; j++) 
if( txt[i] == znaki[j] ) 
 {
if(f != 0)
s = i+1;
break;
}
 
 
if(j == n_znaki){
if( f == 0 )
f = i;
}
else if (s != 0)
break;
}
 
 
char *last_word = new char[f-s+1];//последнее слово
memcpy(last_word, &txt[s], f-s+1);
last_word[f-s+1] = '\0';
printf("Poslednee slovo: %s\nRezultat:\n", last_word);
char * pch = strtok (txt, znaki);
 
 
 
while( pch != NULL )//здесь нужно обращение к самой функции(которой нет :D)
{
if( strcmp(pch, last_word) != 0 )
{strcpy(word, pch);
if(word[0] != '\0')
printf("%s ", word);cout<<endl;
}
pch = strtok (NULL, znaki);
 
}
 
 
system("pause");
delete last_word;
return 0;
}
Заранее благодарен)
P.S.(студент, первый курс )
0
7275 / 6220 / 2833
Регистрация: 14.04.2014
Сообщений: 26,871
02.03.2018, 18:04 5
C++
1
2
3
4
5
6
7
8
9
bool f(char *w)
{
    int c = 0;
 
    for (int i = 1; w[i] != '\0' && c < 2; ++i)
        if (w[i] == w[0]) ++c;
 
    return c == 1;
}
1
2479 / 1906 / 951
Регистрация: 21.12.2010
Сообщений: 3,473
Записей в блоге: 10
02.03.2018, 19:06 6
вариант покороче
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <regex>
 
 
int main() 
{
    std::string str = " asdf d asadf rtrt  fghjf  rtrt. ";
    std::regex reg("\\b(([[:alpha:]])[[:alpha:]]*?\\2[[:alpha:]]*)\\b(?=.*\\b([[:alpha:]]+)\\b)");
    for (std::sregex_iterator ib(str.begin(), str.end(), reg), ie; ib != ie; ++ib)
    {
        if (ib->str(1) != ib->str(3))
        {
            std::cout << ib->str(1) << std::endl;
        }
    }
}
1
0 / 0 / 0
Регистрация: 20.12.2017
Сообщений: 15
03.03.2018, 13:17  [ТС] 7
Друзья я 1 курс можно как то полегче
0
0 / 0 / 0
Регистрация: 24.02.2018
Сообщений: 17
03.03.2018, 14:00 8
nmcf, Спасибо))))

Добавлено через 16 секунд
igorrr37, Спасибо)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2018, 14:00
Помогаю со студенческими работами здесь

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

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru