Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
валентин777
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45
#1

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

26.08.2011, 19:32. Просмотров 1130. Ответов 13
Метки нет (Все метки)

Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2011, 19:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввести с клавиатуры предложение. Удалить из него все буквы о, стоящие на нечетных местах. (C++):

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

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

Строки: Дано предложение. Удалить из него все буквы «с» - C++
Дано предложение. Удалить из него все буквы «с».

Все элементы исходного массива, стоящие на нечетных местах, возвести в квадрат, на четных местах – в куб - C++
как будет код не знаете? Дано два массива байтов, один заполнен числами. Заполнить второй массив следующим образом: все элементы...

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

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

13
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];
}
1
xAtom
915 / 740 / 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;
}
1
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;        
}
1
Сыроежка
Заблокирован
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);
    }
И более логично было бы объявить у вашего функционала второй параметр, который задает начальный индекс, если требуется иметь дело не с началом строки.
1
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
26.08.2011, 21:38 #6
Цитата Сообщение от Сыроежка Посмотреть сообщение
Оператор-функцию следует объявлять как const
И получить ошибку компилирования??

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

Добавлено через 2 минуты
Цитата Сообщение от Сыроежка Посмотреть сообщение
И более логично было бы объявить у вашего функционала второй параметр, который задает начальный индекс, если требуется иметь дело не с началом строки.
А если я захочу иметь дело не с началом строки я изменю диапазон.
0
villu
203 / 204 / 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 минуту
Цитата Сообщение от Сыроежка Посмотреть сообщение
Это плохой стиль программирования - использовать ведущий знак подчеркивания
аргументы? в смысле, почему это?
1
валентин777
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45
27.08.2011, 16:35  [ТС] #8
А На простом С можно эту же программу ???????????
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.08.2011, 23:29 #9
Цитата Сообщение от Overmind024 Посмотреть сообщение
Загляни в библиотеку stl. И чем же это плохо??
Имена начинающиеся с подчеркивания зарезервированы для использования, поэтому их лучше не использовать. На STL это правило естественно не распространяется.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
29.08.2011, 01:31 #10
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Имена начинающиеся с подчеркивания зарезервированы для использования, поэтому их лучше не использовать. На STL это правило естественно не распространяется.
А что вы посоветуете тогда? Использовать одинаковые имена?
0
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
29.08.2011, 01:49 #11
Цитата Сообщение от Chelioss Посмотреть сообщение
А что вы посоветуете тогда? Использовать одинаковые имена?
Если Вы про параметры методов то нет, т.к. выражений вида this->field = field явно стоит избегать. Можно к примеру поля заканчивать подчеркиванием, а не начинать. Вообщем, как Вам будет удобнее, главное чтоб имена с подчеркивания не начинались.
2
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
29.08.2011, 10:37 #12
Я обычно поля класса начинаю с префикса "m_".
2
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
29.08.2011, 13:05 #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
Я обычно поля класса начинаю с префикса "m_".
Что означает буква m? Просто если я буду так писать, то мне хотелось бы знать, что я пишу.
0
LosAngeles
Заблокирован
29.08.2011, 13:08 #14
member то бишь член
1
29.08.2011, 13:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2011, 13:08
Привет! Вот еще темы с ответами:

Ввести с клавиатуры строку символов,удалить все гласные буквы из строки - C++
Помогите со строками... Ввести с клавиатуры строку символов,удалить все гласные буквы из строки. На примере этого: #include...

Дан символ и предложение. Все его символы, стоящие на четных местах, заменить этим символом - C++
Дан символ и предложение. Все его символы, стоящие на четных местах, заменить этим символом. Например, t(символ), slovo(было),...

С клавиатуры ввести произвольное предложение и исключить из него предпоследнее слово - C++
С клавиатуры ввести произвольное предложение и исключить из него предпоследнее слово, предвратительно напечатанное это слово.

Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму элементов массива, расположенных после минимального...


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

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

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