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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.81
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 15:56     В каждом слове текста замените "а" на букву "е" #1
В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву "б" на сочетание "ак", если "б" стоит на нечетном месте.
Помогите, пожалуйста)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2012, 16:01     В каждом слове текста замените "а" на букву "е" #2
Какой язык?
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
07.03.2012, 16:07     В каждом слове текста замените "а" на букву "е" #3
Ну в цикле for пройдись по всем символам и смотри чётное i или не чётное и при необходимости дописывай в результирующую строку что нужно, задача ведь не сложная.
Ну или покажи хоть наработки свои.

Добавлено через 34 секунды
Ещё у типа string удобно искать и замещать символы, но это не для новичков и это с++ (а не с).
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 18:48  [ТС]     В каждом слове текста замените "а" на букву "е" #4
go, Gepar, прямо скажу я эту тему пропустил((, не могу сделать задание.
Flash_Zero
3 / 3 / 1
Регистрация: 07.03.2012
Сообщений: 5
07.03.2012, 18:50     В каждом слове текста замените "а" на букву "е" #5
aidoqa, ну так перечитай Задание то с одной стороны пустяковое, но с другой стороны - лень. Я всегда сам себе говорю - можешь сам, так сделай. совет спрашивать - крайний случай
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.03.2012, 18:53     В каждом слове текста замените "а" на букву "е" #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
aidoqa, судя по твоим темам, ты вообще по роковым стечениям обстоятельств не cмог попасть ни на одно занятие.

Цитата Сообщение от aidoqa Посмотреть сообщение
не могу сделать задание.
а ты попробуй начать, вдруг получится. Как начнешь — выложи результат сюда, а дальше тебе подскажут
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 19:22  [ТС]     В каждом слове текста замените "а" на букву "е" #7
буду рассуждать подробно)
в начале мне нужно подключить библиотеки
C++
1
2
3
#include <iostream.h>
#include <conio.h>
#include <string.h>
далеее
мне получается надо сравнивать строки
C++
1
strcmp
или возвращать длину строки
C++
1
strlen
и моя самая главная проблема не могу реализовать условия, понять то пойму как ее записать програмным путем у меня не получается.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.03.2012, 19:29     В каждом слове текста замените "а" на букву "е" #8
Тебе нужно выделить в предложении слова. Возьми наиболее простой случай: пусть слово — это последовательность символов латиницей. Разделитель слов в предложении — пробел. Следовательно, тебе нужно как-то выделять слова в предложении: либо через простой конечный автомат (ручной разбор строки), либо через стандартные средства выделения токенов (stringstream в С++, strtok в С). Дальше все тривиально — нужно определить позицию символов отдельных символов в строке, что опять-таки можно сделать вручную (перебором символов слова), либо с помощью стандартных средств (метод find класса string в С++, функция strchr в С)
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 19:46  [ТС]     В каждом слове текста замените "а" на букву "е" #9
вот начинаю делать тело) мне можно как нибудь сделать условие str

Не по теме:

хоть в правильном направлении иду?


C++
1
2
3
4
5
int main (){
string str, pred_lojenie;
cout<<"Vvidite pred_lojenie: =";
getline(cin, pred_lojenie);
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.03.2012, 19:47     В каждом слове текста замените "а" на букву "е" #10
aidoqa, да, но вообще было бы идеально, если бы вместо транслита были бы обычные английские слова
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 20:32  [ТС]     В каждом слове текста замените "а" на букву "е" #11
Цитата Сообщение от Nameless One Посмотреть сообщение
если бы вместо транслита были бы обычные английские слова
это как?чу чуть не понял(
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2012, 22:04     В каждом слове текста замените "а" на букву "е" #12
Цитата Сообщение от Nameless One Посмотреть сообщение
stringstream в С++,
Для выделения слов лучше использовать boost::split

Цитата Сообщение от aidoqa Посмотреть сообщение
это как?чу чуть не понял(
Это для удобства.

Добавлено через 1 час 15 минут
Например так
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 <string>
#include <algorithm>
#include <vector>
#include <iterator>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>
 
 
int main()
{
   std::string s("a abaHello worldaa a b");
   std::vector<std::string> v;
   
   boost::split(v, s, boost::is_any_of(" "));
   
   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/12f2ed...ebe023fb573e9e
Код
e eakeHello worldae e b
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 22:08  [ТС]     В каждом слове текста замените "а" на букву "е" #13
go, чтобы сделать программу без std нужно добавить using name space std?
и почемуто он ругаеться на boost, у меня dev c++
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2012, 22:15     В каждом слове текста замените "а" на букву "е" #14
C++
1
using namespace std;
Цитата Сообщение от aidoqa Посмотреть сообщение
и почемуто он ругаеться на boost, у меня dev c++
Установи boost.
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 22:17  [ТС]     В каждом слове текста замените "а" на букву "е" #15
Цитата Сообщение от go Посмотреть сообщение
using namespace std;
получается при его добавлении можно смело убирать везде std?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2012, 22:18     В каждом слове текста замените "а" на букву "е" #16
Цитата Сообщение от aidoqa Посмотреть сообщение
получается при его добавлении можно смело убирать везде std?
Да. Убирай
C++
1
std::
В принципе можно и без boost обойтись. Как, Вам уже объяснили.
aidoqa
 Аватар для aidoqa
586 / 99 / 2
Регистрация: 08.02.2011
Сообщений: 839
07.03.2012, 22:19  [ТС]     В каждом слове текста замените "а" на букву "е" #17
Цитата Сообщение от go Посмотреть сообщение
В принципе можно и без boost обойтись. Как, Вам уже объяснили.
просто получается его убрать и все.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.03.2012, 22:21     В каждом слове текста замените "а" на букву "е" #18
Цитата Сообщение от aidoqa Посмотреть сообщение
просто получается его убрать и все.
Заменить на
Цитата Сообщение от Nameless One Посмотреть сообщение
выделения токенов (stringstream в С++
aidoqa
 Аватар для 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2012, 07:15     В каждом слове текста замените "а" на букву "е"
Еще ссылки по теме:

C++ я задал произвольный текст длинной 5 строк, и допустим что я ввел 5 раз букву "П" , какой цикл нужно создать чтобы пометять букву "П" на букву "Р" ?
C++ Удалять в словах, которые заканчиваются на букву "А" все другие буквы "А"
Написать программу, которая заменяет в указанном слове все буквы "b" на сочетание "ky" C++

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

Или воспользуйтесь поиском по форуму:
MrCold
851 / 749 / 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");
}
Yandex
Объявления
08.03.2012, 07:15     В каждом слове текста замените "а" на букву "е"
Ответ Создать тему
Опции темы

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