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

Удалить все слова из заданной строки длинной более k символов

13.01.2013, 21:50. Показов 2641. Ответов 5
Метки нет (Все метки)

Написать программу, которая удаляет все слова из заданной строки длинной более k символов.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2013, 21:50
Ответы с готовыми решениями:

Из заданной строки символов удалить слова, длина которых меньше указанной пользователем
Из заданной строки символов удалить слова, длина которых меньше указанной пользователем int n,...

Удалить из строки все слова длиннее к символов
Написать программу, которая удаляет все слова из заданной строки длинной более k ...

Удалить из введенной с клавиатуры строки слова, содержащие не более 2ух символов "а"
Помогите, пожалуйста, написать программу

Написать функцию, которая выводит на экран все слова заданной строки, в которой заданная буква входит N или более раз
Написать функцию, которая выводит на экран все слова заданной строки, в которой заданная буква...

5
101 / 92 / 53
Регистрация: 22.03.2011
Сообщений: 226
15.01.2013, 02:03 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
31
32
33
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <locale.h>
/*которая удаляет все слова из заданной строки длинной более k символов.*/
int main()
{
 
    char buf[100],*p,buf1[30];
    int k=0,i=0;
    setlocale(LC_ALL,"Russian");
 
    printf("Введите строку:\n>>");
    fgets(buf,100,stdin);
    do
    {
        printf("Введите k:\n");
        scanf("%d",&k);
    }while(k<0);
    p=buf;
    while (p && *p!='\0' && *p!=10)
    {
        while (isspace(*p))p++;
        sscanf(p,"%s",buf1);
        if(strlen(buf1)>k)
        {
            memmove(p,p+strlen(buf1)+1,strlen(buf)+2);
        }
        else p+=strlen(buf1);
    }
    printf("Результат: %s",buf);
    return 0;
}
Миниатюры
Удалить все слова из заданной строки длинной более k символов  
Изображения
  
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11178 / 7110 / 1680
Регистрация: 25.07.2009
Сообщений: 13,003
23.01.2013, 02:36 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* ANSI C 99
    Use "gcc -std=c99", Luke! */
#include <string.h>
char * cut_long_words(char * str, const char * word_breaks, const size_t max_length) {
    char buf[strlen(str) + 2], * ptr;
    *buf = '\0';
 
    for ( ptr = strtok(str, word_breaks); ptr; ptr = strtok(NULL, word_breaks) ) {
        if ( strlen(ptr) <= max_length ) {
            strcat(buf, ptr);
            strcat(buf, " ");
        }
    }
 
    if ( *buf )
        buf[strlen(buf) - 1] = '\0';
    return strcpy(str, buf);
}
0
101 / 92 / 53
Регистрация: 22.03.2011
Сообщений: 226
23.01.2013, 02:48 4
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
strtok
Ненавижу strtok.
1)Два раза по массиву не пройдешь.
2)После обработки массива невозможно вывести все сразу: puts(mass) например, - выведет только первое слово. Ибо как я
C
1
printf("Результат: %s",buf);
Или я не прав? И есть гениальное решение таких проблем?
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
23.01.2013, 09:29 5
Цитата Сообщение от CVB Посмотреть сообщение
Или я не прав? И есть гениальное решение таких проблем?
Нет, strtok изменяет исходный массив. А зачем он вам еще раз? Вы даже у себя его второй раз не выводите, да и у пользователя то, что он ввел не потирается перед выводом результата.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11178 / 7110 / 1680
Регистрация: 25.07.2009
Сообщений: 13,003
23.01.2013, 09:36 6
CVB, не нужно ненавидеть функции, лучше научиться ими пользоваться
C
1
2
3
4
/*...*/
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
    printf("Result: %s\n", cut_long_words(str, " \t\n", 4)); /* выведет слова не длиннее 4 букв */
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2013, 09:36
Помогаю со студенческими работами здесь

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

В символьной строке удалить все слова, состоящие более чем из N букв
Привет. Нужна помощь. Условие-В символьной строке удалить все слова, состоящие более чем из N...

Дана строка символов. Найти и вывести все слова, содержащие более двух букв «a»
Задание-&gt; Дана строка символов. Найти и вывести все слова, содержащие более двух букв «a»....

Напечатать все строки файла, которые содержат более 10 символов
Дано текстовый файл.напечатать все его строки, содержат более 10 символов...


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

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

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