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

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

Восстановить пароль Регистрация
 
валентин777
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45
26.08.2011, 19:32     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #1
Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2011, 19:32     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах.
Посмотрите здесь:

C++ Ввести с клавиатуры строку символов,удалить все гласные буквы из строки
дано предложение.Удалить из него все буквы о ,стоящие на нечётных местах C++
[C++] удалить из слова буквы,стоящие на четных местах C++
Выяснить, все ли буквы слова Х, стоящие на нечетных местах, различны C++
Строки: Дано предложение. Удалить из него все буквы «с» C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
26.08.2011, 20:00     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #2
C++
1
2
3
4
5
gets(str);
for (i=0; i<strlen(str); i++)
{
 if ( ( i%2==1 && (str[i]!='o'  || str[i]!='O') ) || i%2==0) cout << str[i];
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
26.08.2011, 20:06     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #3
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>
using namespace std;
 
void delete_chr(char* str, const char ch) {
   char*  a, *b;
   int   len;
   for(len = 1; *str; *str++, len++) {
       if( *str == ch && len % 2) 
            for(a = str, b = str + 1; *a; *a++ = *b++);
   }
}
 
int  main(void) {
   char str[128];
   cout << "in string: ";
   cin  >> str;
 
   delete_chr(str,  'o');
 
   cout << str << endl;
    
   return 0;
}
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
26.08.2011, 21:16     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #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
30
31
32
33
34
35
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
 
using namespace std;
 
class delete_latter
{
    size_t i;
    char latter;
public:
    delete_latter(char _latter)
        :latter(_latter),i(0)
    {
 
    }
 
    bool operator() (char l)
    {
        return (i++ & 1) && (l == latter);
    }
};
 
int main()
{
    string str;
    cin >> str;
    str.erase(remove_if(str.begin(),str.end(),delete_latter('o')),str.end());
    cout << str;
    cin.get();
    cin.get();
 
    return 0;        
}
Сыроежка
Заблокирован
26.08.2011, 21:29     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #5
Цитата Сообщение от Overmind024 Посмотреть сообщение
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 <iostream>
#include <algorithm>
#include <iterator>
#include <string>
 
using namespace std;
 
class delete_latter
{
    size_t i;
    char latter;
public:
    delete_latter(char _latter)
        :latter(_latter),i(0)
    {
 
    }
 
    bool operator() (char l)
    {
        return (i++ & 1) && (l == latter);
    }
};
 
int main()
{
    string str;
    cin >> str;
    str.erase(remove_if(str.begin(),str.end(),delete_latter('o')),str.end());
    cout << str;
    cin.get();
    cin.get();
 
    return 0;        
}
Это плохой стиль программирования - использовать ведущий знак подчеркивания у идентификаторв. Никто вам не мешает написать проще

C++
1
2
3
4
5
    delete_latter(char latter)
        :latter(latter),i(0)
    {
 
    }
убрав у параметра знак подчеркивания.
Оператор-функцию следует объявлять как const

C++
1
2
3
4
    bool operator() (char l) const
    {
        return (i++ & 1) && (l == latter);
    }
И более логично было бы объявить у вашего функционала второй параметр, который задает начальный индекс, если требуется иметь дело не с началом строки.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
26.08.2011, 21:38     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #6
Цитата Сообщение от Сыроежка Посмотреть сообщение
Оператор-функцию следует объявлять как const
И получить ошибку компилирования??

Добавлено через 1 минуту
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это плохой стиль программирования - использовать ведущий знак подчеркивания у идентификаторв
Загляни в библиотеку stl. И чем же это плохо??

Добавлено через 2 минуты
Цитата Сообщение от Сыроежка Посмотреть сообщение
И более логично было бы объявить у вашего функционала второй параметр, который задает начальный индекс, если требуется иметь дело не с началом строки.
А если я захочу иметь дело не с началом строки я изменю диапазон.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
27.08.2011, 00:05     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
void remove_char( char *buf, char ch ) {
    unsigned int r;
    unsigned int i;
    char *p;
    for(p=buf, i=1, r=0; *p; p++, i++) {
        if((i & 1) && (*p == ch)) {
            r++;
        } else {
            *(p-r) = *p;
        }
    }
    *(p-r) = 0;
}
C++
1
2
3
4
5
        char buf[] = "o1o2o3o4o5o6o7o8o9o0";
        cout << buf << "\n";
        remove_char(buf, 'o');
        cout << buf << "\n";
        return 0;
o1o2o3o4o5o6o7o8o9o0
1234567890

Добавлено через 21 минуту
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это плохой стиль программирования - использовать ведущий знак подчеркивания
аргументы? в смысле, почему это?
валентин777
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45
27.08.2011, 16:35  [ТС]     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #8
А На простом С можно эту же программу ???????????
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.08.2011, 23:29     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #9
Цитата Сообщение от Overmind024 Посмотреть сообщение
Загляни в библиотеку stl. И чем же это плохо??
Имена начинающиеся с подчеркивания зарезервированы для использования, поэтому их лучше не использовать. На STL это правило естественно не распространяется.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
29.08.2011, 01:31     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #10
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Имена начинающиеся с подчеркивания зарезервированы для использования, поэтому их лучше не использовать. На STL это правило естественно не распространяется.
А что вы посоветуете тогда? Использовать одинаковые имена?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
29.08.2011, 01:49     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #11
Цитата Сообщение от Chelioss Посмотреть сообщение
А что вы посоветуете тогда? Использовать одинаковые имена?
Если Вы про параметры методов то нет, т.к. выражений вида this->field = field явно стоит избегать. Можно к примеру поля заканчивать подчеркиванием, а не начинать. Вообщем, как Вам будет удобнее, главное чтоб имена с подчеркивания не начинались.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
29.08.2011, 10:37     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #12
Я обычно поля класса начинаю с префикса "m_".
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
29.08.2011, 13:05     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
Я обычно поля класса начинаю с префикса "m_".
Что означает буква m? Просто если я буду так писать, то мне хотелось бы знать, что я пишу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2011, 13:08     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах.
Еще ссылки по теме:

Массивы. Заменить все отрицательные элементы, стоящие на четных местах, максимальным его элементом, а на нечетных местах - минимальным C++
Дан символ и предложение. Все его символы, стоящие на четных местах, заменить этим символом C++
C++ С клавиатуры ввести произвольное предложение и исключить из него предпоследнее слово

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

Или воспользуйтесь поиском по форуму:
LosAngeles
Заблокирован
29.08.2011, 13:08     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. #14
member то бишь член
Yandex
Объявления
29.08.2011, 13:08     Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах.
Ответ Создать тему
Опции темы

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