Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
shonya
0 / 0 / 0
Регистрация: 07.05.2011
Сообщений: 34
1

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

24.10.2011, 15:12. Просмотров 1586. Ответов 4
Метки нет (Все метки)

Задача такая: В символьной строке оставить только те слова, в которых встречаются подряд идущие одинаковые буквы
есть уже готовая программа:
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
#include <stdio.h>
#include <string.h>
int main(void)
{
    int i = 0, j = 0;
    int pos = 0;
    char strInput[] = "AA LLUDI 4ASTO SSORYATSYA SSORYATSYA.";
    char strNew[255] = "";
    while (strInput[i] != '\0')
    {
        if (strInput[i] == ' ')
            pos = ++i;
 
        if (strInput[i] == strInput[i+1])
        {
            while ((strInput[pos] != ' ') && (strInput[pos] != '.'))
            {
                strNew[j] = strInput[pos];
                pos++;
                j++;
            }
            strNew[j] = ' ';
            j++;
        }
        i++;
    }
    printf("%s\n", strNew);
    return 0;   
}
Но она работает с использованием вспомогательной строки.
Подскажите, пожалуйста, как можно по другому написать программу (или переделать эту), чтобы она исполняла ту же задачу, но не использовала вспомогательную строку.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2011, 15:12
Ответы с готовыми решениями:

В символьной строке оставить только те слова, в которых есть повторяющиеся буквы
Здравствуйте! Не могли бы вы помочь мне в решении задачи? Я уже третий день работаю,но не...

Определение количества слов, в которых встречаются подряд идущие одинаковые буквы
Здравствуйте! Помогите пожалуйста разобраться с заданием на тему :&quot;функции с переменным числом...

В символьной строке удалить все слова, содержащие две подряд идущие гласные буквы
Здравствуйте, помогите пожалуйста напрсать программу, сам вообще ноль :( Условие: В символьной...

В символьной строке оставить только те слова, которые состоят только из разных букв
Мне дали такое задание В символьной строке оставить только те слова, которые состоят только из...

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

4
xAtom
922 / 747 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.10.2011, 16:00 2
shonya, вот накидал вариант, без вспомогательной строки.
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 <ctype.h>
#include <string.h>
 
char*  str_erase_uch(char* str) {
   int cnt;
   char* iter, *tmp = str;
   while(*str){
         for(; ! isalnum(*str) && *str; *str++);
         for(cnt = 0, iter = str; isalnum(*str) && *str; *str++) {
               if(*str == *(str + 1))  cnt = 1;
         }
         if(! cnt) {
             cnt = iter - tmp; 
             strcpy(tmp + cnt, tmp + (cnt + (str - iter)));
             str = tmp + cnt;
        } 
   }
   return tmp;
}
 
int  main(void) {
  char stri[] = "AA LLUDI 4ASTO, SSORYATSYA UNIVERSAL SSORYATSYA. ORACUL";
  puts( str_erase_uch(stri) );
  getchar();
  return 0;
}
0
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
24.10.2011, 16:44 3
Цитата Сообщение от shonya Посмотреть сообщение
Но она работает с использованием вспомогательной строки.
а где тут вспомогательная строка?
0
shonya
0 / 0 / 0
Регистрация: 07.05.2011
Сообщений: 34
24.10.2011, 16:49  [ТС] 4
xAtom, спасибо!)
Цитата Сообщение от lexflax Посмотреть сообщение
а где тут вспомогательная строка?
lexflax, строка strNew.
0
sandye51
программист С++
837 / 596 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
24.10.2011, 16:52 5
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
#include <string>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <sstream>
#include <conio.h>
 
int main()
{
    std::string s;
    std::cout << "Enter a string" << std::endl;
    std::getline(std::cin, s);
 
    std::istringstream stream(s);
    std::cout << "Result:" << std::endl;
    while (stream)
    {
        stream >> s;
        if (std::adjacent_find(s.begin(), s.end()) != s.end())
            std::cout << s << std::endl;
    }
 
    _getch();
    return EXIT_SUCCESS;
}
0
24.10.2011, 16:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 16:52

В символьной строке удалить все лишние подряд идущие пробелы
Помогите написать программу. Все изменения строки производить в том же массиве. Не допускается...

Удалить одинаковые слова предложения, идущие подряд
Удалить одинаковые слова предложения, идущие подряд. с коментариями пожалуйста

Удалить одинаковые слова предложения, идущие подряд
Здравствуйте! Задание такое: удалить одинаковые слова предложения, идущие подряд. Набросал код, но...


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

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

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