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

С++ объединение строк в тексте - C++

Восстановить пароль Регистрация
 
UpluggedMU
2 / 2 / 0
Регистрация: 02.11.2013
Сообщений: 36
04.04.2014, 19:50     С++ объединение строк в тексте #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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int Length_Word(int n);
int Position_Begin(int n);
char Copy_Word(int n);
void Delete_Word(int n);
char Text[255];
int TextLength ;
 
struct Word{
       char WordReturn[20]; // ввожу структуру чтобы вывести ей в функции Copy_Word
       };
 
void Delete_Word(int n){
int g = Position_Begin(n);
     do{Text[g] = '';
        g++; }
      while (!(Text[g] == 32));
      
     }
 
char Copy_Word(int n){
     Word Word1;
     int y;
     for (int i = (Position_Begin(n)+1), y = 0; i<= (Position_Begin(n)+Length_Word(n)), y <= Length_Word(n); i++, y++){
     Word1.WordReturn[y] = Text[i];
     }
     return Word1; // но вот только ничего не получается :/
     }
 
int Length_Word(int n){
int i, result;
int count = 1;
result = 0;
for (i=0;i<TextLength;++i){
    if (Text[i] == 32){
    
    i++;
        if (count==n){
                      int ;
        do{
        result++;
        ++u;}
        while (!(Text[u] == ' '));
        break;
        }
        count++;
    }
}
return result;
}
 
int Position_Begin(int no){
int i, count;
count = 1;
    for(i=1;i<TextLength;++i){
    if (Text[i] == 32){
    
        if (count == no){
        return i;       
        }
       }
       ++count;
    }
}
 
int main(){
int c = 1;
int m = 0;
string str;
Word ji;
char word[20];
gets(Text);
TextLength = strlen(Text);
for (int i = 0; i<TextLength;++i){
    if (Text[i] == 32){
         
         if (Text[i-1] == Text[i+1]){
                    ji = Copy_Word(c);
                     Delete_Word(c);
                     str = (string) Text;
                     str.insert(Position_Begin(c), ji.WordReturn, 0, strlen(ji.WordReturn));  //делает строку текста string -овой. вставляет word и.. 
                     Text = (char) str;   // ..приравнивает текст этой строке,   здесть ошибка
                       } 
                       else {     
              m++; }
              c++;        
                }   
}
int max = Length_Word(1);
cout << max; // не завершил, ибо верхняя часть не работает
 
system("pause");
 
return 0;   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 19:50     С++ объединение строк в тексте
Посмотрите здесь:

Объединение строк, конвертация данных C++
C++ В тексте слова, стоящие на четных местах, переписать задом наперед. В тексте несколько строк.
C++ Объединение строк как массивов
Объединение строк C++
как правильно произвести объединение строк? C++
Объединение строк и запись в файл C++
C++ Объединение строк в строковом классе
Выполнить объединение двух строк с помощью перегрузки оператора (*) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
05.04.2014, 17:50     С++ объединение строк в тексте #2
Как то всё сделано мудрёно очень.
Имхо надо делать всё проще до такой степени, чтоб школьники понимали. К примеру:

И так есть вводимый текст, предположим что знак разделения слов только пробел.(нет ни точек, ни запятых..)
Ввели, и допустим весь текст поместился в char buf[1000]. Теперь нужна матрица числовая, которая бы содержала в себе вид: №символа в основном массиве(т.е. начальная буква слова) и №символа окончания(либо кол-во символов слова).
С помощью проверки на символ пробела(и окончание /n) перебираете массив и ищети кол-во слов. Создаёте динамически матрицу, заполняя её уже числами. Потом просто после последней итерации берёте весь числовой массив и сравниваете символы с помощью него символы слов(начальный и конечный), грубо говоря if(buf[bi[k]] == buf[bi[k+1]]...
UpluggedMU
2 / 2 / 0
Регистрация: 02.11.2013
Сообщений: 36
07.04.2014, 16:52  [ТС]     С++ объединение строк в тексте #3
затратно, но спасибо, Izual.
Yandex
Объявления
07.04.2014, 16:52     С++ объединение строк в тексте
Ответ Создать тему
Опции темы

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