Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
iluxa1810
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
#1

Удалить лишние пробелы из строки, а потом вывести те слова, которые имеют четное количество букв - C (СИ)

20.10.2014, 23:48. Просмотров 550. Ответов 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
#include <stdio.h>
 
void finder(g=0;
 
     }
      if (flag==
            flag=0;
 
     }
      if (flag==
            flag=0;
 
     }
      if (flag==char[],char[]);
void spacedeleter(char[]);
int main()
 {
 char str[100],tmp,out[100];
int i,st=-1,en=-1,word,flag=0;
for (;;)
{ st=-1;en=-1;flag=0;
printf("Введите строку\n");
gets(str);
if (str[0]=='0')
break;
spacedeleter(str);
printf("%s\n",str);
finder(str,out);
printf("%s\n",out);
 
}
return 0;
}
 
void spacedeleter(char a[])
{
int i,j;
int flag=0;
char tmp;
while (flag==0)
{
  flag=1;
  for (i=0;a[i]!='\0';i++)
       {
        if (a[0]==' ')
        {
           for (j=0;a[j]!='\0';j++)
                a[j]=a[j+1];
        flag=0;
        }
        if ((a[i]==' ')&&(a[i+1]==' '))
           {
            for (j=i;a[j]!='\0';j++)
                 a[j]=a[j+1];
            flag=0;
 
     }
      if (flag==1)
           a[i]+='\0';
       }
 
}
void finder(char in[],char out[])
{
int i,j,c=0,cnt=0;
int fst=-1,lst=-1;
for (i=0;in[i]!='\0';i++)
        {
         if ((in[i]!=' ')&&(fst==-1))
           {
             fst=i;
             continue;
           }
         if ((lst==-1)&&(in[i+1]==' '))
            {
                lst=i;
            }
         if ((lst-fst)%2==0)
                {
                if (i++){
                   out['c']=' ';   // В кавычки букву с обромил специально, так как тег глючит
                   c++;
                }
                 for (j=fst;j<=lst;j++,c++)
                    {
                     out['c']=in[j];
                    }
                }
        fst=lst=-1;
        if (in[i+1]=='\0')
           out[c+1]='\0';
        }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2014, 23:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Удалить лишние пробелы из строки, а потом вывести те слова, которые имеют четное количество букв (C (СИ)):

Убрать лишние пробелы и вывести на экран те строки, где первая буква и последняя буква слова одинаковы
Есть вот такой код к заданию: Дана строка с произвольным кол-вом слов и...

Удалить из файла все однобуквенные слова и лишние пробелы
Дан символьный файл f. Группы символов, разделенные пробелами (одним или...

Удалить из файла все однобуквенные слова и лишние пробелы
Дан символьный файл f. Группы символов, разделенные пробелами (одним или...

Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся
Дана строка предложение. Удалить из строки все лишние пробелы: в начале, в...

Отредактировать текст, удаляя те слова, которые имеют больше 3-х гласных букв
Помогите разобраться,вроде программа простенькая,но работает криво.Если слово...

Удалить из текстовой строки все слова в которых есть непарное количество согласных букв
удалить из текстовой строки все слова в которых есть непарное количество...

1
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,202
21.10.2014, 01:23 #2
iluxa1810, со 2 по 14 строчку это что такое?
А по остальному коду - как-то все излишне усложнено, куча вложенных непонятных циклов.
удаление лишних пробелов в этой теме есть http://www.cyberforum.ru/cpp-beginners/thread1278884.html
для слов с четными количеством букв можно так: записывать в буфер по 1 символу из строки пока не будет пробела и увеличивать счетчик символов. Когда встретится пробел посмотреть в счетчике четное или не четное число. И если четное, то добавить в буфер символ конца строки и вывести его. Потом сбросить буфер и счетчик, и повторять пока не дойдет до конца строки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2014, 01:23
Привет! Вот еще темы с решениями:

Найти в строке слова, которые имеют не менее 4 букв и начинаются с заданного символа
Дана строка символов. Найти слова, которые имеют не менее 4 букв и начинаются с...

Из введенной строки удалить все слова, которые начинаются с большой буквы и вывести полученную строку
#include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;math.h&gt; #include...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru