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

Функции, обработка текста: Задан текст; напечатать слова, отличные от последнего слова

25.02.2018, 11:29. Показов 1448. Ответов 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
63
64
65
66
67
68
69
70
71
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
 
using namespace std;
char a[10][255],c[10][255],txt[1000],s,tmp[255];
int k,z,i,j,p,n,q,m,h,; 
char tekst(char txt[]);
char slovo(int b[10],int k,char a[10][255]);
char mass(char a[10][255], int k);
 
int main()
{
    setlocale(LC_ALL,"Rus");
    cout<<"Введите текст:\n";//Вводим исходный текст
    gets(txt);
    tekst(txt);
    slovo(b,k,a);
    mass(a,k);
    cout<<endl;
    cout<<"\n\n";
    system("pause");
    return 0;
}
char tekst(char txt[])
    {
        int i;
        k=0;
        z=0;
        i=0;
        p=strlen(txt);//Подсчитываем кол-во символов в строке
        while(i<p)//Создаем массив слов
        {
            if(txt[i]!=' ')
            { a[k][z]=txt[i];
            z++;
            b[k]=z;
            }
            else
            {
                a[k][z]='\0';
                k++;
                z=0;
            }
            i++;
        }
    return a[k][z];
    }
del()// Здесь должна быть функция по переноске буквы
 
 
 
 
 
     return a[k][z];
}
 
char mass(char a[10][255], int k)
    {
            cout<<"\n Результат: \n";
            int i;
            for(i=0; i<k; i++)
              {
                  if(strcmp(a[k],a[i])!=0)
                    {
                        cout<<a[i]<<" ";
                    }
              }
            return a[k][z];
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2018, 11:29
Ответы с готовыми решениями:

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

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

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

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

4
1751 / 1343 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
25.02.2018, 12:29 2
C++
1
s = s[s.size() - 1] + s.substr(0, s.size() - 1);
0
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 11
25.02.2018, 17:56  [ТС] 3
Понял эту строку. Но не понимаю как это реализовать с массивом символов.
C++
1
2
3
4
5
6
7
8
9
10
11
char del(char arr[10][255])// Здесь должна быть функция удаления первой буквы в каждом слове
{
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            arr[i][j] = arr[i][j][arr[i][j].size() - 1] + arr[i][j].substr(0, arr[i][j].size() - 1);
        }
    }
    return arr[n][m];
}
VS ругается. Говорит, что нужен "тип класса".

Добавлено через 18 минут
Цитата Сообщение от Hitoku Посмотреть сообщение
C++
1
s = s[s.size() - 1] + s.substr(0, s.size() - 1);
Hitoku
Понял эту строку. Но не понимаю как это реализовать с массивом символов.
C++
1
2
3
4
5
6
7
8
9
10
11
char del(char arr[10][255])// Здесь должна быть функция удаления первой буквы в каждом слове
{
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            arr[i][j] = arr[i][j][arr[i][j].size() - 1] + arr[i][j].substr(0, arr[i][j].size() - 1);
        }
    }
    return arr[n][m];
}
VS ругается. Говорит, что нужен "тип класса".
0
1751 / 1343 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
25.02.2018, 18:07 4
Лучший ответ Сообщение было отмечено bzeeq как решение

Решение

Наверное лучше будет использовать string (это же не Си)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
 
std::string BackToFront(std::string s) { return s[s.size() - 1] + s.substr(0, s.size() - 1); }
 
int main()
{
    std::string s, word;
    std::vector<std::string> words;
    std::getline(std::cin, s);
    std::stringstream ss(s);
    while (ss >> word) words.push_back(word);
    for (auto &w : words) w = BackToFront(w);
    std::copy_if(words.begin(), words.end() - 1, std::ostream_iterator<std::string>(std::cout, " "),
        [&words](std::string w) {return w != words.back(); });
    system("pause");
    return 0;
}
1
1 / 1 / 0
Регистрация: 25.02.2018
Сообщений: 11
27.02.2018, 18:35  [ТС] 5
Hitoku, а можно все таки написать эту программу через char массив? Я хотел сегодня сдать программу и мне сказали, что классами нельзя пользоваться. И даже не стали смотреть код программы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2018, 18:35
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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