Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8

удаление пробелов между словами и буквами

02.01.2011, 16:00. Показов 3153. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток, не могли бы вы мне помочь в создании программы которая удаляет удвоенные согласные в любом предложении, но чтоб удаляла а не заменяла на пробелк примеру чтоб было слово "удвоенное" вот так "удвоеая" а не "удвое ая",

вот пример программы которую я показал учителю он утверждает что эта программа не удаляет а просто не видит эти символы:
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
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
    int i=0,n;
    char s[50];
    cout<<"Vvedite tekst\n";
    gets(s);            // Ввод строки
    while (s[i]!='\0')
    {   
        n=i;
        i++;
    }
    n++;
 
    for(i=0;i<n;i++)
        {   
            if(s[i]==s[i+1])
                if(s[i]!='e' || s[i]!='u' || s[i]!='i' || s[i]!='o' ||                  s[i]!='a' || s[i]!='y')
                {
                    i=i+2;
                }
                cout<<s[i];
        }
        
      getchar();
}
ЗАРАНЕЕ СПАСИБО!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.01.2011, 16:00
Ответы с готовыми решениями:

Вывести количество пробелов между словами в строке
:help:Помогите с программой:пользователь вводит строчку,а программа выводит кол-во пробелов между словами в строке. #include...

Увеличить в два раза количество пробелов между словами
увеличить в два раза количество пробелов между словами

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

18
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
02.01.2011, 16:23
xellboy8,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::string str;
    const std::string byk("BbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvXxZz");
    std::cout << "\n\nString -> ";
    getline(std::cin, str);
 
    for(std::string::size_type i = 0; i < str.length() - 1; ++i)
        if(byk.find(str[i]) != std::string::npos &&  str[i] == str[i + 1])
            str.erase(i, 2);
 
    std::cout << str << std::endl;
    return 0;
}
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:30
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <functional>
 
typedef std::string T_str;
 
int main()
{
    T_str str;
    std::cout<<"Enter string: ";
    std::getline(std::cin, str);
    for(size_t i=0; i<str.size()-1; ++i)
        if(str[i] == str[i+1])
           str.erase(i, 2);
    std::cout<<str<<'\n';
    return 0;
}
Добавлено через 1 минуту
Оу. Про согласные не увидел. Тогда солидарен с asics.
1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 16:33  [ТС]
у меня показывает 2 ошибки
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:34
xellboy8, Ошибки в студию...
1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 16:36  [ТС]
в программе которую прислал asics
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:37
xellboy8, Сами ошибки сюда скиньте оО
1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 16:38  [ТС]
------ Построение начато: проект: dmitriy, Конфигурация: Debug Win32 ------
Компиляция...
laba.cpp
c:\users\user\documents\visual studio 2008\projects\dmitriy\dmitriy\laba.cpp(1 0) : error C3861: getline: идентификатор не найден
c:\users\user\documents\visual studio 2008\projects\dmitriy\dmitriy\laba.cpp(1 6) : error C2679: бинарный '<<': не найден оператор, принимающий правый операнд типа 'std::string' (или приемлемое преобразование отсутствует)
d:\program files\microsoft visual studio 9.0\vc\include\ostream(653): может быть 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::bas ic_ostream<_Elem,_Traits> &,const char *)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(700): или 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::bas ic_ostream<_Elem,_Traits> &,char)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(738): или 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_os tream<_Elem,_Traits> &,const char *)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(785): или 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_os tream<_Elem,_Traits> &,char)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(909): или 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_os tream<_Elem,_Traits> &,const signed char *)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(916): или 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_os tream<_Elem,_Traits> &,signed char)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(923): или 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_os tream<_Elem,_Traits> &,const unsigned char *)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(930): или 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_os tream<_Elem,_Traits> &,unsigned char)' [найдено при поиске с зависимостью от аргументов]
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(170): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(176): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(183): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(std::ios_base &(__cdecl *)(std::ios_base &))'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(190): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(std::_Bool)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(210): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(short)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(243): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(unsigned short)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(263): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(__w64 int)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(288): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(__w64 unsigned int)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(308): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(long)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(328): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(__w64 unsigned long)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(349): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(__int64)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(369): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(unsigned __int64)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(390): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(float)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(410): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(double)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(430): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(long double)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(450): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(const void *)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
d:\program files\microsoft visual studio 9.0\vc\include\ostream(470): или 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::oper ator <<(std::basic_streambuf<_Elem,_Traits> *)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
при попытке сопоставить список аргументов '(std::ostream, std::string)'
Журнал построения был сохранен в "file://c:\Users\user\Documents\Visual Studio 2008\Projects\dmitriy\dmitriy\Debug\Buil dLog.htm"
dmitriy - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:51
xellboy8, #include <string> добавьте в начале кода.
1
02.01.2011, 16:55

Не по теме:

Мда, вроде копировал код на форум з #include <string>, хз где он делся :scratch:

1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 17:00  [ТС]
а могли бы вы расписать по шагово как работает эта программа а то учитель замонает вопросами...я ему уже раз 7 пойду сдавать это задание....последний зачет осталось получить
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
02.01.2011, 17:05
xellboy8, Да тут вроде и шагов не так много, просто проходимся в цыкле по сторке и ищем согласную букву, если нашли то проверяем букву идущую за ней и если эта буква равняется предедущей, то удаляем эти две буквы.
1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 17:08  [ТС]
а еще одна просьба как будет выглядеть алгоритм к этой программе
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
02.01.2011, 17:10
xellboy8, Я же написал алгоритм.
1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 18:31  [ТС]
блок-схема, прошу прощения, как будет выглядеть

Добавлено через 1 час 19 минут
я когда в этой программе ввожу к примеру ffddog у меня выводит ddog то есть символ dd не удаляеться
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
02.01.2011, 23:13
Цитата Сообщение от xellboy8 Посмотреть сообщение
я когда в этой программе ввожу к примеру ffddog у меня выводит ddog то есть символ dd не удаляеться
Тогда так попробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
 
int main()
{
    std::string str;
    const std::string byk("BbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvXxZz");
    std::cout << "\n\nString -> ";
    getline(std::cin, str);
 
    int k;
    for(std::string::size_type i = 0; i < str.length() - 1; ++i)
        if(byk.find(str[i]) != std::string::npos &&  str[i] == str[i + 1])
        {
            str.erase(i, 2);
            --i;
        }
 
    std::cout << str << std::endl;
    return 0;
}
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
03.01.2011, 00:19
Давно для себя писал:
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
char teststroka []= "BbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvXxZz";
 
bool f (char* simvol) {
 if (strchr(teststroka, *simvol))
  if (((*(simvol-1))==*simvol)||((*(simvol+1))==*simvol))
   return false;
  if (islower(*simvol))
   if (*(simvol-1)==(toupper)(*simvol)||*(simvol+1)==(toupper)(*simvol))
    return false;
  if (isupper(*simvol))
   if (*(simvol-1)==(tolower)(*simvol)||*(simvol+1)==(tolower)(*simvol))
    return false;
  return true;  
}
 
//+++++++++++++++++++++++++++++++++++++=
char* copystrok1 (char *t, char *s) {
 char* c= t;
 while (*s!= '\0') {
  if (f(s)) {
   *t++= *s++;
  }
  else {
   s++;
  }
 }
 *t= '\0';
 return c;
 getchar ();
};
 
//+++++++++++++++++++++++++++++++++++++=
int main() {
  char stroka_1 [55]= "asdf  gg jk tt  uu erb hh kj o kk kjkj  jjjj jj rerre";
  char stroka_2 [55];
  copystrok1 (stroka_2, stroka_1);
  printf ("%s\n", stroka_2);
  getchar ();
}
Тут разработана функция copystrok1, которая посимвольно копирует строку t в строку s при соблюдении некторого условия.
За соблюдение или несоблюдение условия отвечает функция f. Если она возвращает истину- происходит копирование, иначе нет. Можно использовать в других проектах, только функцию f меняй как я щас и всё.

Тестируй.
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
03.01.2011, 01:58
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
//////////////////////////////////////////////////////////////////////////////////////
//Программа, которая удаляет удвоенные согласные в любом предложении.
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////////////
void  remove_dual_consonants(T_str&  s)
{
    struct  T_is_eq_cons
    {
        T_str  consonants_;
        T_is_eq_cons() : consonants_("bcdfghklmnpqrstvwxz")
        {}
        //-----------------------------------------------------------------------------
        bool operator() (T_str::value_type  symb_A, T_str::value_type  symb_B)
        {
            return    tolower(symb_A) == tolower(symb_B)
                   && consonants_.find(tolower(symb_A)) != T_str::npos;
        }    
    };
 
    for(T_str::iterator  start_it = s.begin();;)
    {
        start_it = std::adjacent_find(start_it, s.end(), T_is_eq_cons());
        if(start_it == s.end()) break;
        s.erase(start_it, start_it + 2);         
    }
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите строку латиницей с двойными согласными:"
              << std::endl;
 
    T_str  s;
    getline(std::cin, s);
    remove_dual_consonants(s);
    std::cout << "Строка с удаленными двойными согласными:"
              << std::endl
              << s
              << std::endl;
}
1
03.01.2011, 02:00

Не по теме:

Кстати, чё за название у темы?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2011, 02:00
Помогаю со студенческими работами здесь

Отредактировать текст, удаляя лишние символы пробелов между словами
Отредактировать текст,удаляя лишние символы пробелов между словами;по нажатию произвольной клавиши выделить первое предложение текста.

Функция, сравнивающая две строки, игнорируя количество пробелов между словами
Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами (использовать функции работы со строками). ...

Отсортировать слова по алфавиту в массиве char. Между словами по несколько пробелов
Задачка такая: есть строка - вводится юзером. Нужно в этой строке упорядочить слова по алфавиту. Проблема в том, что не знаю з чего начать....

Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами.
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Помогите пожалуйста Разработать функцию, которая сравнивает две строки,...

Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами
Имеется такое задание: Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами. Можете объяснить...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru