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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.81
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
#1

В каждом слове текста замените "а" на букву "е" - C++

07.03.2012, 15:56. Просмотров 3418. Ответов 33
Метки нет (Все метки)

В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву "б" на сочетание "ак", если "б" стоит на нечетном месте.
Помогите, пожалуйста)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2012, 15:56     В каждом слове текста замените "а" на букву "е"
Посмотрите здесь:
Замените в слове "му" на "а", а букву "ы" на "ца". C++
C++ Замените буквы "а" и "о" в слове на "А" и "О".
Написать программу, которая заменяет в указанном слове все буквы "b" на сочетание "ky" C++
C++ Заменитье буквы "a" и "o" в слове на "A" и "O".
C++ Вычисление суммы позиций на которых в слове Х стоят буквы "в" и "п"
C++ Ввести с клавиатуры строку, заменить в ней все буква "а" на букву "b"
C++ Удалять в словах, которые заканчиваются на букву "А" все другие буквы "А"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2012, 22:18     В каждом слове текста замените "а" на букву "е" #16
Цитата Сообщение от aidoqa Посмотреть сообщение
получается при его добавлении можно смело убирать везде std?
Да. Убирай
C++
1
std::
В принципе можно и без boost обойтись. Как, Вам уже объяснили.
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 22:19  [ТС]     В каждом слове текста замените "а" на букву "е" #17
Цитата Сообщение от go Посмотреть сообщение
В принципе можно и без boost обойтись. Как, Вам уже объяснили.
просто получается его убрать и все.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2012, 22:21     В каждом слове текста замените "а" на букву "е" #18
Цитата Сообщение от aidoqa Посмотреть сообщение
просто получается его убрать и все.
Заменить на
Цитата Сообщение от Nameless One Посмотреть сообщение
выделения токенов (stringstream в С++
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 22:24  [ТС]     В каждом слове текста замените "а" на букву "е" #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
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>//его объязательно?
#include <iterator>//для чего он 
using namespace std;
 
 
int main()
{
streamstring s("a abaHello worldaa a b");
   vector<string> v;
   
   split(v, s, is_any_of(" "));
   
   for_each(begin(v), end(v), [] (string& s) 
   {
      for ( int i = s.length() - 1 ; i >= 0  ; --i )
         if ( s[i] == 'a' && !(i & 1) )
            s[i] = 'e';
         else 
            if ( s[i] == 'b' && i & 1 )
            {
               s.erase(i, 1);
               s.insert(i, "ak");
            }
    });            
   
   copy(v.begin(), v.end(), ostream_iterator<string>(cout, " "));
 
   cout << endl;
 
   return 0;
}
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
08.03.2012, 07:15     В каждом слове текста замените "а" на букву "е" #20
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
# include <iostream>
 
void insertFun(char*text, int pos, char sym)
 
{
    for ( int i = strlen(text); i >= pos; i--)
 
                text [i + 1] = text[i];
 
                text[pos] = sym;
 
}
 
int main()
{
    char sym_e = 'e';
    char sym_a = 'a';
    char sym_k = 'k';
    char sym_b = 'b';
 
    int i = 0;
 
    char charray[100] = "handle board about ball basket";
 
    std::cout << charray << std::endl;
 
while(charray[i]){
 
    if(charray[i] == sym_a && i % 2 != 0){
 
            charray[i] = sym_e;}
 
    else if(charray[i] == sym_b && i % 2 != 0){
 
        charray[i] = sym_a;
 
    insertFun (charray,i + 1,sym_k);
    
     }
    i++;
}
    std::cout << charray;
 
system("pause");
}
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
08.03.2012, 20:06  [ТС]     В каждом слове текста замените "а" на букву "е" #21
можно вопрос, здесь не обязательно подключать библиотеку строки?(ине могли бы вы добавить коментарий)
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
08.03.2012, 20:17     В каждом слове текста замените "а" на букву "е" #22
Цитата Сообщение от aidoqa Посмотреть сообщение
здесь не обязательно подключать библиотеку строки?
Если используете std::string, то подключать хидер string обязательно.
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
09.03.2012, 07:46  [ТС]     В каждом слове текста замените "а" на букву "е" #23
получается код в 24 посту сделан без испльзования строк?(как его переделать чтоб были строки?)можете переделать эту программу под хидер string?
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.03.2012, 15:27     В каждом слове текста замените "а" на букву "е" #24

Не по теме:

Цитата Сообщение от go Посмотреть сообщение
Для выделения слов лучше использовать boost::split
Да вы только директивами include с boost новичка напугаете, а ещё хотите чтобы он использовал split



Добавлено через 36 минут
Хотел было написать свой велосипед, но возникла куча вопросов:
позиция чётная/не чётная должна быть в строке вообще или в каждом отдельном слове? И нужно ли учитывать старую позицию при замене "б" на "ак" так как в этом же случае мы заменяем один символ на два и все символы что после этой замены раньше были чётные станут не чётными и наоборот.
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
09.03.2012, 16:18  [ТС]     В каждом слове текста замените "а" на букву "е" #25
Цитата Сообщение от Gepar Посмотреть сообщение
позиция чётная/не чётная
должна быть
Цитата Сообщение от Gepar Посмотреть сообщение
в каждом отдельном слове
Цитата Сообщение от Gepar Посмотреть сообщение
нужно ли учитывать старую позицию при замене "б" на "ак"
нужно)
Цитата Сообщение от Gepar Посмотреть сообщение
после этой замены раньше были чётные станут не чётными и наоборот.
наверное так и будет)
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.03.2012, 17:20     В каждом слове текста замените "а" на букву "е" #26
Вот без boost
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
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <iterator>
 
typedef std::string T_str;
typedef std::vector<T_str> T_vec;
 
int split_str_to_vec(const T_str s, const T_str DELIM, T_vec &v)
{
   size_t l, r;
 
   for ( l = s.find_first_not_of(DELIM), r = s.find_first_of(DELIM, l) ; 
      l != std::string::npos ; l = s.find_first_not_of(DELIM, r), r = s.find_first_of(DELIM, l) )
      v.push_back(s.substr(l, r - l));
   return v.size();
}
 
 
int main()
{
   T_str s("a abaHello worldaa a b");
   T_vec v;
   
   split_str_to_vec(s, " ", v);
   
   std::for_each(std::begin(v), std::end(v), [] (std::string& s) 
   {
      for ( int i = s.length() - 1 ; i >= 0  ; --i )
         if ( s[i] == 'a' && !(i & 1) )
            s[i] = 'e';
         else 
            if ( s[i] == 'b' && i & 1 )
            {
               s.erase(i, 1);
               s.insert(i, "ak");
            }
    });            
   
   std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, " "));
 
   std::cout << std::endl;
 
   return 0;
}
http://liveworkspace.org/code/012bbb...700397c7ba680c
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
09.03.2012, 17:26  [ТС]     В каждом слове текста замените "а" на букву "е" #27
go, можно вопрос
C++
1
2
3
#include <algorithm>
#include <vector>
#include <iterator>
обязательно ли использовать эти библиотеки?если вас не затруднит не могли бы вы чу чуть добавить коментарий)

Не по теме:

не подскажете где можно прочитать как строить блок схемы?

go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.03.2012, 17:29     В каждом слове текста замените "а" на букву "е" #28
Цитата Сообщение от aidoqa Посмотреть сообщение
бязательно ли использовать эти библиотеки?
Эти хидера - да. Как Вы обойдетесь без вектора, или строки?
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.03.2012, 17:52     В каждом слове текста замените "а" на букву "е" #29
Ну тогда мой велосипед, вроде не скрипит но чтобы ехать нужно 4 педали крутить, в двое больше тоесть, в общем две строки у меня: одна обычная, а вторая результирующая. Если с одной то придётся всё усложнить да флаг хитрый прикрутить чтобы следил за всеми этими переменами с чётной на не чётное при каждой замене б на ак ... в общем там уже будет не велосипед, а мопед, для
aidoqa, как для начинающего по-моему этот мой пример больше подойдёт.
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
#include <iostream>
#include <string>
using namespace std;
 
//весёлая функция, видно из названия
//it сама строка, endIt - конец строки, res - куда писать результат
void fun(string::iterator &it,string::iterator endIt, string &res)
{
    //бегаем циклом пока не закончитсья слово либо сама строка
    for(int i=1;!isspace(*it) && it!=endIt;it++,i++)
    {
        if(!(i%2) && *it=='a')//а на чётной позиции
         res+="b";
        else if(i%2 && *it=='b')//b на не чётной позиции
         res+="ak";
        else
         res+=*it;
    }
}
 
int main()
{
    string str="a baba gala maga";
    string res;
 
    string::iterator it;
    it=str.begin();
 
    while(it!=str.end())
    {
        //сдвинемся на начало слова
        //пока сдвигаемся - копируем мусор также и в результирующую строку
        while(!isalpha(*it))
         res+=*it++;
 
        fun(it,str.end(),res);
    }
 
    cout<<res;
}
Добавлено через 1 минуту
О, да не только я хитрил, ну раз остальные использовали вектор то тогда расходы на мою результирующую строку явно нивелируются
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 18:01     В каждом слове текста замените "а" на букву "е"
Еще ссылки по теме:
Замените все буквы "р" на сочетание "ку" C++
C++ После каждой буквы "о" в слове вставить сочетание "ля"
Нужно в массиве в слове "Pascal" поменять букву c на k C++
C++ Заменить на "-" каждую четную букву в слове
C++ Заменить в тексте все пары "ph" на букву "f"

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

Или воспользуйтесь поиском по форуму:
aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
09.03.2012, 18:01  [ТС]     В каждом слове текста замените "а" на букву "е" #30
Gepar, спасибо за помощь, сейчас буду подробно разбираться!
и всем остальным тоже спасибо)за помощь и подсказки)

Добавлено через 7 минут

Не по теме:

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

Yandex
Объявления
09.03.2012, 18:01     В каждом слове текста замените "а" на букву "е"
Ответ Создать тему
Опции темы

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