2 / 2 / 0
Регистрация: 30.11.2012
Сообщений: 22
1

Удалить из строки слова нечетной длины

11.02.2013, 00:11. Показов 5409. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка символов. Удалить из нее все слова нечетной длины. Слова отделяются друг от друга одним пробелом. Подскажите идею, как реализовать.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<string.h>
int main()
{
    char s[50];
    int i=0,k=0,j;
    gets (s);
    for(i=0;i<strlen(s);i++)
{
     k+=i;
     if(s[i]=' '&&k%2==0)
     for(j=i-k;j<i;j++)
          printf("%c",s[i]);
     k=0;
    }
    
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2013, 00:11
Ответы с готовыми решениями:

Удалить из строки все слова нечетной длины
Задание такое: Дана строка символов. Удалить из нее все слова нечетной длины. Слова отделяются друг...

Если слово нечетной длины, то удалить его среднюю букву
Если слово нечетной длины, то удалить его среднюю букву.

Распечатать все слова нечетной длины, имеющие не менее двух букв «а»
Введена строка символов. Распечатать все слова нечетной длины, имеющие не менее двух букв «а». ...

Подсчитать количество слов, нечетной длины, найти частоту вхождения букв и удалить текст в круглых скобках
С клавиатуры вводится строка . Разработать программу , которая реализует указанные действия . а )...

7
1778 / 756 / 153
Регистрация: 03.06.2009
Сообщений: 5,851
11.02.2013, 12:17 2
Не проверял, могут быть ошибки, но идея должна быть понятна.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int i,j,k,l;
i=0;
k=0;
 
while(s[i]!=0)
{
j=i;
for(;s[i]==' '&&s[i]!=0;i++);
l=i;
for(;s[i]!=' '&&s[i]!=0;i++);
if((i-l)&1==0)
{
for(;j<i;j++,k++)s[k]=s[j];
}
}
s[k]=0;
0
2 / 2 / 0
Регистрация: 30.11.2012
Сообщений: 22
11.02.2013, 21:00  [ТС] 3
C
1
2
3
4
if((i-l)&1==0)
{
for(;j<i;j++,k++)s[k]=s[j];
}
за что эти действия отвечают?
0
1778 / 756 / 153
Регистрация: 03.06.2009
Сообщений: 5,851
11.02.2013, 21:03 4
сохраняют слово с четным кол-вом букв, с нечетным кол-вом не сохраняются, т.е. удаляются.
0
2 / 2 / 0
Регистрация: 30.11.2012
Сообщений: 22
11.02.2013, 21:13  [ТС] 5
C
1
if((i-l)&1==0)
почему такое условие?
0
1778 / 756 / 153
Регистрация: 03.06.2009
Сообщений: 5,851
11.02.2013, 21:16 6
i - индекс текущей буквы
l - индекс начала слова
i-l - кол-во букв в слове
остальное - проверка на четность кол-ва букв в слове
0
2 / 2 / 0
Регистрация: 30.11.2012
Сообщений: 22
11.02.2013, 21:24  [ТС] 7
ясно
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
#include<stdio.h>
#include<string.h>
int main()
{
    char s[50];
    int i,j,k,l;
    i=0;
    k=0;
    gets (s);
    while(s[i]!=0)
    {
    j=i;
    for(;s[i]==' '&&s[i]!=0;i++);
    l=i;
    for(;s[i]!=' '&&s[i]!=0;i++);
    if((i-l)&1==0)
    {
    for(;j<i;j++,k++)
    {
        s[k]=s[j];
        printf("%c",s[i]);
    }
    }
    }
    s[k]=0;
    return 0;
}
только после ввода символов, компилятор ничего не выводит
0
1778 / 756 / 153
Регистрация: 03.06.2009
Сообщений: 5,851
12.02.2013, 09:43 8
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

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
#include<stdio.h>
#include<string.h>
int main()
{
    char s[50];
    int i,j,k,l;
    i=0;
    k=0;
    gets (s);
    while(s[i]!=0)
    {
    j=i;
    for(;s[i]==' '&&s[i]!=0;i++);
    l=i;
    for(;s[i]!=' '&&s[i]!=0;i++);
    if(((i-l)&1)==0)
    {
    for(;j<i;j++,k++)
    {
        s[k]=s[j];
    printf("%c",s[k]);
    }
    }
    }
    s[k]=0;
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2013, 09:43
Помогаю со студенческими работами здесь

В функции вывести на экран все слова строки длина которых больше длины первого слова
Вывести символьную строку. В функции вывести на экран все слова строки длина которых больше длины...

Удалить из текста слова определенной длины
Удалить из текста все слова короче 4 символов, а слова длиннее 7 символов заменить на указанное...

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

Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами
работа со строками! задача: удалить два последним слова из строки, в которой слова разделяются...


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

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

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