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

Заменить в строках первое слово на другое - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ итерация для просмотра бинарного дерева http://www.cyberforum.ru/cpp-beginners/thread21889.html
typedef struct tree{ int data; struct tree *leftPtr, *rightPtr, *parentPtr; }TREE; TREE *rootPtr, *tempPtr, *tmpPtr; void Print( TREE *sPtr )/*Функция печати элементов дерева*/ { if( sPtr->data != -1 ){
C++ Максимальный элемент массива Дан массив из 7 целых чисел.Написать программу так ,чтобы она высчитывала максимальный элемент массива. {1,2,4,5,-7,8,21} Максимальный элемент 21. http://www.cyberforum.ru/cpp-beginners/thread21876.html
C++ выделение памяти
есть класс множество. необходимо создать класс "правило", одним из методов которого является добавление множества к соответствующему списку множеств. struct Node { Mnojestvo data; Node* prev; }; Node* push(Node* top, Mnojestvo d)
C++ Удаляем из строки слова перевёртыши...не понять в чём дело
программа должна удаляит из строки все слова которые читаются одинаково в дыух напралениях. #include <stdio.h> #include <stdlib.h> int main () { char mass="abba dolce ammo"; int i,j,m,k=0,fl1=0,fl2=0,v=0,p=0; for (i=0;i<50;i++){ if (mass==' ' || mass=='NULL'){
C++ Подключение к беспроводной сети http://www.cyberforum.ru/cpp-beginners/thread21803.html
Люди кто-нибудь знает как программно можно подключиться к беспроводной сети через логин и пароль, если подключение удалось вывести "connect", а если нет "disconnect"?
C++ Выделение памяти scanf Всем привет #include <windows.h> #include <stdio.h> char * c = (char *)malloc(sizeof(char)); void main() { printf("Input string :\r\n"); scanf("%s",c); подробнее

Показать сообщение отдельно
kluz
0 / 0 / 0
Регистрация: 28.01.2009
Сообщений: 26

Заменить в строках первое слово на другое - C++

28.01.2009, 11:45. Просмотров 1295. Ответов 4
Метки (Все метки)

задание такое:
задан текст, содержащий произвольное кол-во строк, в которых отдельные слова могут разделяться одним или несколькими пробелами и знаками пунктуации(перенос слов не используется). Сформировать новый текст, который является результатом след. преобразования исходного текста:
заменить в строках (содержащих заданное слово) первое слово на другое заданное слово.
попыталась написать программу, но не получается замена слова именно в той строке, где найдено заданное слово (в 5 case).


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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <alloc.h>
#define dlina 30
#define TRUE 1
#define FALSE 0
void getline ( char *line, int n);
void getline2 ( char *line, int n);
int poisk(char *line, char *word);
int strlen (char *s);
int zamena( char *line, char *newline, char *newword);
 
 main(void)
{
int n,i,j,l,flag,flag2;
char **x,**y,c,*p,*line,*word,*newword, *newline,*o,*pline,u,*m ;
flag=0;
flag2=0;
 do
        {  clrscr();
           puts ("\n Viberite punkt iz menu");
           puts ("1-Vvod i vivod ishodnogo teksta");
           puts ("2-vvod slova poisk");
           puts ("3-poisk slova v tekste");
           puts ("4-vvod slova zamena");
           puts ("5-zamena slova v tekste");
           puts ("6-Vihod");
 
           switch (c)
            {
                case '1':
                        printf ("\n vvedite tekst \n");
                            if (line != NULL)
                            free(line); 
                            line = (char *) malloc (dlina * sizeof(char));
                                if (line == NULL)
                                    {
                                        printf ("no free memory");
                                        return 0;
                                    }
 
                       getline (line,dlina);
                       printf("%s",line);
                       puts("\n viberte punkt menu");
 
                       flag=1;
                break;
 
 
 
    
         case '2':
                        printf ("\n vvedite slovo poisk \n");
                            if (word != NULL)
                            free(word); 
                            word = (char *) malloc (dlina*sizeof(char));
                                if (word == NULL)
                                    {
                                        printf ("no free memory");
                                        return 0;
                                    }
                        getline2 (word,dlina);
                        puts("\n viberte punkt menu");
                break;
 
         case '3':       if (!flag)
               printf ("\n Stroka ne vvedena!\n");
             else
               {
                        printf ("\n poisk slova\n");
                        if (poisk(line,word)==TRUE)
                        {
                         puts ("slovo v tekste naideno");
                         flag2=1;
                         }
                        else
                         puts ("ne naideno");
                         puts("\n viberte punkt menu");
                         }
                break;
         case '4':      if (!flag2)
               printf ("\n tekst ne podleshit obrabotke!\n");
             else
               {
                        printf ("\n vvedite slovo, na kotoroe nado zamenit\n");
                            if (newword!= NULL)
                            free(newword); 
                            newword = (char *) malloc (dlina*sizeof(char));
                                if (newword == NULL)
                                    {
                                        printf ("no free memory");
                                        return 0;
                                    }
                        getline2 (newword,dlina);
                        puts("\n viberte punkt menu");
                        }
                        break;
 
         case '5':     if (!flag)
               printf ("\n tekst ne vveden!\n");
             else
               {    if (!flag2)
               printf ("\n tekst ne podleshit obrabotke!\n");
             else
               {
 
                        if (newline!= NULL)
                            free(newline); 
                            newline= (char *) malloc (dlina*sizeof(char));
                                if (newline==NULL)
                                    {
                                        printf ("no free memory");
                                        return 0;
                                    }
                        
                        p=strstr(line,word);
                            printf("\n %s",p);
                        if(p==NULL)
 
                         printf ("\np= %s", newline);
 
                        if(p!=NULL)
                        {
                        u=' ';
 
                        m=strchr(line,u);
                        printf ("\nm= %s", m);
 
                        o=strcat(newword,m);                
                        printf("\no= %s", o);
 
 
                         }
 
                    puts("\n viberte punkt menu");
                  }
               }
 
 
                 break;
 
        case '6':
                break;
        default:
                puts ("\n Takogo punkta net v menu\n");
 
                break;
                };
        c=getche();
    
        }
        while (c!='6');
 
         }
 
 void getline ( char *line, int n)
    {
        int c;
        
         do
         {
        while (--n>0 && (c=getchar())!=EOF && c!='\n\n')
         
           *(line++)=c;
         
        *line = '\0';
               }
               while (strlen(line)!=0);
        }
  void getline2 ( char *line, int n)
    {
        int c;
        
        while (--n>0 && (c=getchar())!=EOF && c!='\n')
 
            *(line++)=c;
 
        *line = '\0';
    }
 
 int poisk(char *line, char *word)
    {
        int A,i,j,g;
 
         j=0;
         A=FALSE;
 
         for (i=0;*(line+i)!='\0' && A==FALSE;i++)
            {  /* poisk sovpadenij pervoi bukvi slova*/
              if (*(line+i)==*(word))
                 {
                   A=TRUE;    /* esli pervaja bukva sovpala*/
                   for (j=1;*(word+j)!='\0' && A==TRUE;j++)
                      {
                        if (*(line+i+j)==*(word+j))
                          A=TRUE; /* esli slovo naideno*/
                        else
                          A=FALSE; /* esli slovo ne naideno*/
                      }
                  }
                    
            }
        return A;
 
        }
 
 
 
   int strlen (char *s)
          {
                char *l=s;
            while (*l!='\0')
                l++;
                return l-s;
          }
 
   int zamena( char *pline, char *newline, char *word)
  
       {       
           puts("\n Zamena \n");
                          while (*(word)!='\0')
                              *(newline++)=*(word++);                       
                          *(newline++)=' ';         
 
                        while (*(pline++)!=' ');
                        /*probel naiden*/                    
                        while (*(pline)!='\0')
                          {
                            *(newline++)=*(pline++);
                            *(newline)='\0';
                           }
 
              }
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru