Форум программистов, компьютерный форум CyberForum.ru

В символьной строке удалить все слова, состоящие из нечетного количества букв. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
dander
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 44
25.10.2011, 12:45     В символьной строке удалить все слова, состоящие из нечетного количества букв. #1
Привет.
Нужна ваша помощь в написании проги на С. Не на С++ =)
Ниже приведено условие:
В символьной строке удалить все слова, состоящие из нечетного количества букв.
Всем "+" за помощь=) Спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 12:45     В символьной строке удалить все слова, состоящие из нечетного количества букв.
Посмотрите здесь:

В символьной строке удалить все лишние подряд идущие пробелы. C++
C++ Написать программу, которая считывает текст с клавиатуры и выводит на экран только слова состоящие из заданного количества букв
C++ Строка: вывести на экран все слова сообщения, состоящие из n букв.
Найти в списке из 7 слов все слова, состоящие из заданного количества букв C++
В символьной строке удалить все слова, состоящие более чем из N - букв C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
27.10.2011, 09:40     В символьной строке удалить все слова, состоящие из нечетного количества букв.
  #21

Не по теме:

Цитата Сообщение от accept Посмотреть сообщение
я просто могу это представить
- нет не можешь, скомпилируй в Release оттестируй а потом пиши...
PS:Есть поговорка - кто старое помянет тому глаз вон...
Устал от тебя и реагировать не хочу, холиворбь сам с собой

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
27.10.2011, 10:04     В символьной строке удалить все слова, состоящие из нечетного количества букв. #22
dander, ниже простая Си реализация твоего алгоритма + готовый проект в архиве, разархивируй папку проекта и открой студией dsw файл, мастер конвертирования сам всё преобразует. Если захочешь без мастера открой срр-ник и выбери меню BuildProject так студия сама всё достроит что надо. Новый проект НЕ ДЕЛАЙ, т.к. есть большая доля вероятности что при создании указываешь или CLI или API или ещё что-то но только не Console Aplication
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
#include <stdio.h> //printf scanf
#include <string.h>//strtok
 
int main()
{
    char chr, str[1024];
    char buf[1026];//Буффер строки str
    char delim[] = " ,.!?";//Возможные разделители между словами
    printf("Enter sentence\n");
    scanf("%[^\n]%c",str,&chr);
    //Выделяем из строки токены (слова)
    //части ограниченные символами из delim
    char * tok = strtok(str,delim);//Выделили 1-е слово
    if(tok)
    {
        buf[0] = '\0';
        while(tok)
        {
            if(strlen(tok) % 2 == 0)
            {
                strcat(buf,tok);//Добавляем в buf слово
                strcat(buf," ");//Добавляем в buf пробел
            }
            //Продолжаем выделять из строки слова
            tok = strtok(NULL,delim);
        }
        printf("String after removing not odd words\n");
        printf("%s\n",strcpy(str,buf));
    }
    else
        printf("String not contain words or empty\n");
    printf("Press any key to continue\n");
    scanf("%c",&chr);
    return 0;
}
Миниатюры
В символьной строке удалить все слова, состоящие из нечетного количества букв.  
Вложения
Тип файла: rar RemNoOdd.proj.rar (1.9 Кб, 12 просмотров)
-=ЮрА=-
Заблокирован
Автор FAQ
27.10.2011, 10:14     В символьной строке удалить все слова, состоящие из нечетного количества букв. #23
В заключение, выкладываю скрин и готовой проект на основе кода из поста 3
дабы глубокоуважаемый мною господин accept, ещё раз убедился в своих заблуждениях
PS:dander, как и в предыдущем посте, привожу уже готовый архив с проектом и скрин, а также лог Release надеюсь, сможешь почувствовать разницу между обрезанием знаков strtok и их наличие после работы по моему алгоритму, на сим для себя считаю топик полностью исчерпанным!

лог Release
--------------------Configuration: RemNoOdd2 - Win32 Release--------------------
Compiling...
RemNoOdd2.cpp
Linking...

RemNoOdd2.exe - 0 error(s), 0 warning(s)
Миниатюры
В символьной строке удалить все слова, состоящие из нечетного количества букв.  
Вложения
Тип файла: rar RemNoOdd2.rar (2.2 Кб, 8 просмотров)
-=ЮрА=-
Заблокирован
Автор FAQ
08.11.2011, 13:21     В символьной строке удалить все слова, состоящие из нечетного количества букв. #24

Не по теме:

dander, ответил в личку - хотите без буффера - используйте 3-й пост
PS:В 22-м посте и так всё прокомменчено - подробней я не умею, как по мне и так всё понятно...



Добавлено через 15 минут
dander, вобщем если у вас слова идут ровно через пробел и нету знаков препинаний, то посмотрите сюда Найти самое короткое из слов в предложении
лишь чуточку доработаете под ваш вариант и всё
-=ЮрА=-
Заблокирован
Автор FAQ
08.11.2011, 14:30     В символьной строке удалить все слова, состоящие из нечетного количества букв. #25
dander, вот Ваш алгоритм в простом исполнении - проще уже никак
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
#include <stdio.h>
#include <conio.h>
 
int main()
{
    long i,j,pos;//pos - позиция в строке начала слова
    long wLen = 0;//Будет содержать в себе длинну текущего слова
    char str[1024] = {0};//исходная строка
    printf("\tEnter input string\n");
    //В Си строку с пробелами по другому думаю и не ввести!
    scanf("%[^\n]",str);//В str то что ввели в chr - '\n' от ввода
    char word[32] = {0};
    printf("\tSee steps of removing\n");
    //Да так бесконечный for - выходим из него здесь
    //if(str[i] == '\0')
    //      break;
    //так надо!
    for(i = 0,pos = 0; /*str[i] != '\0'*/true;i++)
    {
        //Парсим пробел, окончание строки и знаки препинания
        if(str[i] == ' ' || str[i] == '\0' ||
           str[i] == '.' || str[i] == ','  ||
           str[i] == '!' || str[i] == '?'  || 
           str[i] == ';' || str[i] == '-' )
        {
            //Нечётное слово
            if(wLen % 2 != 0)
            {
                  //Удаляем word из str
                  for(j = 0; str[pos + wLen + j] != '\0'; j++)
                      str[pos + j] = str[pos + wLen + j];
                  if(j == 0)//word было последним в str
                      str[pos - 1] = '\0';
                  else
                      str[pos + j] = '\0';
                  printf("%s\n",str);
            }
            wLen = 0;
            pos  = i + 1;
        }
        else
            wLen++;
        //Нужно чтобы алгоритм отрабатывал для последнего слова
        if(str[i] == '\0')
            break;
    }
    printf("String after removing NoOddWords:\n %s\n",str);
    printf("Press any key to continue\n");
    getch();
    return 0;
}
Миниатюры
В символьной строке удалить все слова, состоящие из нечетного количества букв.  
easybudda
08.11.2011, 15:35
  #26

Не по теме:

Берег Темзы, 7 утра, спортивного телосложения англичанин отжимается от скамейки. Подходит полицмен:
- Сэр, простите, что вмешиваюсь, но по-моему ваша дама уже ушла...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2011, 15:43     В символьной строке удалить все слова, состоящие из нечетного количества букв.
Еще ссылки по теме:

Вывести слова, состоящие из заданного количества букв C++
Удалить из текста все слова, которые начинаются с букв, заданных в строке запроса C++
C++ Удалить из текста все слова, состоящие из одной буквы

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
08.11.2011, 15:43     В символьной строке удалить все слова, состоящие из нечетного количества букв. #27

Не по теме:

Гыы да тут конкурс острот
- Вчера набрался смелости и поцеловал Юльку.
- А она мне: "И что бы это значило?"
- А я возьми и ляпни с дуру: "Запрос на авторизацию"
- Сказала, чтоб в субботу приходил к ней логиниться..



Добавлено через 2 минуты

Не по теме:

PS:Оживлением топика послужило
Сегодня, 10:23
dander
юра здравствуйте. это снова я..=) [ в строке удалить слова с нечетным количеством букв]при сдаче лабы препод указал на то что мы не должны использовать дополнительных строк.(я показывалл последний код программы, который в архиве) не могли бы Вы мне снова помочь. пробовал сам сделать, не понял, к сожалению.
Сегодня, 10:56
dander
Сообщение от -=ЮрА=-
Привет - дай ссылку с каким именно кодом работаешь???Что от меня требуется когда буду анализировать код - комментарии???
В символьной строке удалить все слова, состоящие из нечетного количества букв.
архив RemNoOdd.proj.rar да комментарии..

Yandex
Объявления
08.11.2011, 15:43     В символьной строке удалить все слова, состоящие из нечетного количества букв.
Ответ Создать тему
Опции темы

Текущее время: 10:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru