Katiox-xa
1

В символьной строке оставить только слова, начинающиеся и заканчивающиеся на одну и ту же букву

02.10.2008, 09:46. Показов 2818. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Помогите, пожалуйста исправить ошибку в программе, написанную на языке С
В некоторых случаях не работает
Например в строке dshfhjd hjghjg
Выводит hjd


В символьной строке оставить только слова, начинающиеся и заканчивающиеся на одну и ту же букву.(Не использовать встроенных функций обработки строк)


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
#include <stdio.h>
#define MAXLINE 100
 
void main (void)
{
  int f;
  int i, j, k, p, i2, t;
  char c;
  char str1[MAXLINE];
  char str2[MAXLINE]="";
  i2=0;
  i=0;
  while ( (c=getchar())!=EOF && c!='\n')
  {
     str1[i]=c;
     ++i;
  }
  if (c=='\n')
  {
   str1[i]=c;
   ++i;
  }
  str1[i]='\0';
 
  i=p=f=t=0;
  while (str1[i]!='\0')
  {
      if ((str1[i]==' ') || (str1[i]=='.') || (str1[i]=='\n') || (str1[i]==', '))
       {
            i2=i-1;
             if (str1[p]==str1[i2])
                 f=f+1;
             p=i+1;
      }
    if (f!=0)
    {
       for (f=t; f<=(t+i-i2+1); f+=1)
            str2[f]=str1[i2+f-t-2];
          t=f;
       f=0;
       }
    i++;
  }
printf ("%s\n", str2);
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2008, 09:46
Ответы с готовыми решениями:

В символьной строке удалить все слова, начинающиеся и заканчивающиеся на одну и ту же букву
Здраствуйте помогите найти ошибку пожалуйста. Задача такова: в символьной строке удалить все слова,...

В символьной строке удалить все слова, начинающиеся и заканчивающиеся на одну и ту же букву
Люди помогите написать программу на языке C(Cu), в символьной строке удалить все слова,...

Выписать из символьной строки слова, начинающиеся и заканчивающиеся на одну букву
Выписать из символьной строки слова, начинающиеся и заканчивающиеся на одну и ту же букву.

Найти в строке слова, начинающиеся и заканчивающиеся на одну и ту же букву
Выписать из символьной строки слова , начинающиеся и заканчивающиеся на одну и ту же букву.(Pascal...

4
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
02.10.2008, 12:34 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
27
28
29
30
 
#include <stdio.h>
#define MAXLINE 100
void main (void) {
  int i, j, k;
  char c;
  char str1[MAXLINE];
  char str2[MAXLINE]="";
  i=0;
  while ( (c=getchar())!=EOF && c!='\n'){
     str1[i]=c; ++i;
  }
  if (c=='\n'){
   str1[i]=c; ++i;
  }
  str1[i]='\0';
  i=j=k=0;
  while (str1[ i ] != '\0'){
   str2[ k ] = str1[ i ];
   if ( (str2[ k ]==' ') || (str2[ k ]=='.') || (str2[ k ]=='\n') || (str2[ k ]==',') ){
     if ( str2[ k - 1 ] != str2[ j ] ) {
      str2[ j ] = '\0'; k = j;i++;
      continue;
     } else j = k + 1;
   }
   k++;i++;
  }
printf("%s\n",str2);
getchar();
}
0
katiox-xa
02.10.2008, 19:58 3
Эта программа тоже не всегда правильно работает
Например:
строка: hgjhghjgjhghjg jhgjhg hgjgjhh
выводит: hgjgjhh
jhghjg


строка: jghjgjhgjhgjghg gffghg ghg
выводит: gffghg ghg
jghg
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
02.10.2008, 22:15 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
#include <stdio.h>
#define MAXLINE 100
void main (void) 
{
    int i, fir, last;
    char c;
    char str1[MAXLINE];
    i=0;
    while ( (c=getchar())!=EOF && c!='\0')
    {
        str1[i]=c; ++i;
    }
 
    i=fir=last=0;
    bool next = false;
    while (str1[i] != '\0')
    {
        if ( (str1[i]==' ') || (str1[i]=='.') || (str1[i]=='\n') || (str1[i]==',') || (str1[i]=='\0') )
        {
            last = i-1;
            if( str1[fir] == str1[last] )
            {
                for(int j = fir; j <=i ; j++)
                    printf("%c",str1[j]);
            }
            next = true;
        }
        else
        {
            if(next)
            {
                fir = i;
                next = false;
            }
        }
 
        ++i;
    }
    printf("\n");
}
когда ввели текст жмем Ctrl + Z и Ентер.
0
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
03.10.2008, 10:00 5
А так работает?

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
 
#include <stdio.h>
#define MAXLINE 100
void main (void) {
 int i=0, j, k;
 char c, str1[MAXLINE], str2[MAXLINE]="";
 while ( (c=getchar())!=EOF && c!='\n'){
    str1[i]=c; ++i;
 }
 if (c=='\n'){
  str1[i]=c; ++i;
 }
 str1[i]='\0'; i=j=k=0;
 while (str1[ i ] != '\0'){
  str2[ k ] = str1[ i ];
  if ( (str2[ k ]==' ') || (str2[ k ]=='.') || (str2[ k ]=='\n') || (str2[ k ]==',') ){
    if ( str2[ k - 1 ] != str2[ j ] ) {
     str2[ j ] = '\0'; k = j; i++; continue;
    } else j = k + 1;
  }
  k++;i++;
 }
 str2[ k - 1 ]= '\0'; printf("%s\n",str2);
 getchar();
}
0
03.10.2008, 10:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2008, 10:00
Помогаю со студенческими работами здесь

В строке удалить все слова, начинающиеся и заканчивающиеся на одну и ту же букву
В символьной строке удалить все слова, начинающиеся и заканчивающиеся на одну и ту же букву.

Слова, начинающиеся и заканчивающиеся на одну и ту же букву
Дано предложение.Вывести на экран: а)слова,начинающиеся и заканчивающиеся на одну и ту же букву;...

Найти слова заканчивающиеся и начинающиеся на одну букву
Ребят, помогите облегчить код: &quot;В строке найти слова, начинающиеся и заканчивающиеся одной буквой&quot;...

Найти слова, начинающиеся и заканчивающиеся на одну и ту же букву
Товарищи, пожалуйста помогите с решением задач. Выписать из символьной строки слова, начинающиеся...


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

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

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