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

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

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

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

вот пример программы которую я показал учителю он утверждает что эта программа не удаляет а просто не видит эти символы:
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2011, 16:00
Ответы с готовыми решениями:

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

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

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

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

18
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
02.01.2011, 16:23 2
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
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:30 3
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  [ТС] 4
у меня показывает 2 ошибки
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:34 5
xellboy8, Ошибки в студию...
1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 16:36  [ТС] 6
в программе которую прислал asics
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:37 7
xellboy8, Сами ошибки сюда скиньте оО
1
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 8
02.01.2011, 16:38  [ТС] 8
------ Построение начато: проект: dmitriy, Конфигурация: Debug Win32 ------
Компиляция...
laba.cpp
c:\users\user\documents\visual studio 2008\projects\dmitriy\dmitriy\laba.cpp(10) : error C3861: getline: идентификатор не найден
c:\users\user\documents\visual studio 2008\projects\dmitriy\dmitriy\laba.cpp(16) : 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::basic_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::basic_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_ostream<_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_ostream<_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_ostream<_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_ostream<_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_ostream<_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_ostream<_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>::operator <<(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>::operator <<(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>::operator <<(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>::operator <<(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>::operator <<(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>::operator <<(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>::operator <<(__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>::operator <<(__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>::operator <<(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>::operator <<(__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>::operator <<(__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>::operator <<(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>::operator <<(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>::operator <<(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>::operator <<(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>::operator <<(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>::operator <<(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\BuildLog.htm"
dmitriy - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.01.2011, 16:51 9
xellboy8, #include <string> добавьте в начале кода.
1
asics
02.01.2011, 16:55
  #10

Не по теме:

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

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

Добавлено через 1 час 19 минут
я когда в этой программе ввожу к примеру ffddog у меня выводит ddog то есть символ dd не удаляеться
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
02.01.2011, 23:13 16
Цитата Сообщение от 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
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
03.01.2011, 00:19 17
Давно для себя писал:
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
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
03.01.2011, 01:58 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
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
kravam
03.01.2011, 02:00     удаление пробелов между словами и буквами
  #19

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2011, 02:00

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru