Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
iluxa1810
13 / 13 / 5
Регистрация: 03.09.2011
Сообщений: 1,022
#1

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

20.10.2014, 23:48. Просмотров 525. Ответов 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 (СИ)):

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

Удалить из файла все однобуквенные слова и лишние пробелы - C (СИ)
Дан символьный файл f. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть...

Удалить из файла все однобуквенные слова и лишние пробелы - C (СИ)
Дан символьный файл f. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть...

Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся - C (СИ)
Дана строка предложение. Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся. Не могу понять, как удалить все...

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

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

1
Jewbacabra
Эксперт PHP
2817 / 2404 / 904
Регистрация: 24.04.2014
Сообщений: 7,253
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
Привет! Вот еще темы с ответами:

Удалить лишние пробелы - C (СИ)
это небольшой кусочек задачи. В начале задается массив, который заполняется произвольным текстом. Предполагается, что может быть поставлено...

Удалить из файла с текстом все лишние пробелы - C (СИ)
удалить из файла с текстом все лишние пробелы. Оставшееся переписать во второй файл

Удалить символы в строке, стоящие на четных местах; удалить лишние пробелы и знаки табуляции в строке, заменив одним пробелом - C (СИ)
Надо удалить символы в строке, стоящие на четных местах. И удалить лишние пробелы и знаки табуляции в строке, заменив одним пробелом. Есть...

Удалить из файла лишние пробелы, оставив по одному между словами - C (СИ)
Добрый день. Помогите с программой. Заранее спасибо. Дан файл, содержащий некоторый текст. Удалить из этого файла лишние пробелы,...


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

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

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