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

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

20.10.2014, 23:48. Просмотров 580. Ответов 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
Ответы с готовыми решениями:

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

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

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

Напечатать те слова, отличные от последнего слова, которые имеют максимальное количество гласных букв
Ребят помогите,горю на сессии,срочно нужно. 1) Напечатать те слова, отличные от последнего слова,...

С каждой строки файла изъять слова которые имеют меньше 4 букв
С каждой строки файла изъять слова которые имеют меньше 4 букв

1
Jewbacabra
Эксперт PHP
3857 / 3177 / 1387
Регистрация: 24.04.2014
Сообщений: 9,659
21.10.2014, 01:23 2
iluxa1810, со 2 по 14 строчку это что такое?
А по остальному коду - как-то все излишне усложнено, куча вложенных непонятных циклов.
удаление лишних пробелов в этой теме есть О передаче массива в функцию, которая заменяет серию пробелов одним пробелом
для слов с четными количеством букв можно так: записывать в буфер по 1 символу из строки пока не будет пробела и увеличивать счетчик символов. Когда встретится пробел посмотреть в счетчике четное или не четное число. И если четное, то добавить в буфер символ конца строки и вывести его. Потом сбросить буфер и счетчик, и повторять пока не дойдет до конца строки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2014, 01:23

Вывести на экран слова, в которых четное количество гласных букв.
Спрсить у пользователя слова через запятую, в конце точка. Вывести на экран слова, в которых четное...

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

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


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

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

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