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

В строке символов заменить каждый второй символ s на f - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
*mk*
Сообщений: n/a
01.12.2011, 20:13     В строке символов заменить каждый второй символ s на f #1
Подскажите,пожалуйста,как в строке символов заменить каждый второй символ s на f
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 20:13     В строке символов заменить каждый второй символ s на f
Посмотрите здесь:

C++ Найти в строке string наиболее часто встречающуюся пару символов и заменить на один новый символ
Из первой заданной строки удалить каждый символ, принадлежащий второй C++
C++ Написать и протестировать функцию, которая в строке, передаваемой ей в качестве параметра, заменяет каждый второй элемент на заданный символ.
C++ Считать каждый второй символ из файла
Строки: заменить каждый символ '/' на пару символов ':' C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
01.12.2011, 21:06     В строке символов заменить каждый второй символ s на f #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
int main()
{
   std::string s = "abscdsefsghsijs";
   bool i = false;
   for(auto& a : s)
   {
      if(a=='s')
      {
         i = !i;
         if(!i)
            a = 'p';
      }
   }
   std::cout << s << std::endl;
}
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
01.12.2011, 21:35     В строке символов заменить каждый второй символ s на f #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
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
 
int main()
{
setlocale(LC_ALL,"russian");
 
char ch;
int a=0,b;
cout<<"Enter string:";
 
while(cin.get(ch))
{
if(ch!='\0')
{
    if(ch=='s')
    {
        a=a+1;
        b=a%2;
        if(b==0)
        cin.putback('f');
        else
        cout<<ch;
    }
    else
        cout<<ch;   
}
else
break;
}
system("pause");
return 0;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
01.12.2011, 21:35     В строке символов заменить каждый второй символ s на f #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std; 
 
int main(void)
{
   string str = "(ss) o-sssss, ss";
   size_t id, pos;
 
   for(id = pos = 0u; (pos = str.find('s', pos)) != string::npos; pos++) {
        if(id)
           str[pos] = 'f';
        id ^= 1u;
   }
   cout << str << endl;
   return 0;
}
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
01.12.2011, 21:36     В строке символов заменить каждый второй символ s на f #5
gooseim
у меня твой код не работает, выдает ошибки.
Расшифруй код. У тебя так компактно получилось.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
01.12.2011, 21:45     В строке символов заменить каждый второй символ s на f #6
тогда уж лучше replace_if с предикатом
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.12.2011, 21:50     В строке символов заменить каждый второй символ s на f #7
вот так еще можно
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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
 
class cEachSecond: public unary_function<char, bool>
{
public:
    bool operator()(char ch)
    {
        if (ch == 's')
            ++cnt;
 
        if (cnt == 2)
        {
            cnt = 0;
            return true;
        }
        else return false;
    }
 
private:
    int cnt;
};
 
 
int main()
{
 
    std::string str = "12sssssss89";
 
    replace_if(str.begin(), str.end(), cEachSecond(), 'f');
 
    cout << str;
 
 
 
    return 0;
}
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
01.12.2011, 22:26     В строке символов заменить каждый второй символ s на f #8
hoot, у тебя не работает, потому что код написан под стандарт c++ 11, не все компиляторы пока поддерживают. Можно потестить здесь: http://liveworkspace.org
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
02.12.2011, 01:32     В строке символов заменить каждый второй символ s на f #9
gooseim,
Слушай, можешь подкинуть парочку различных задач для проверки знания по с++.
Желательно что задачки четко разделялись по темам.
Если не трудно. Буду очень благодарен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 12:28     В строке символов заменить каждый второй символ s на f
Еще ссылки по теме:

C++ Удалить из первой последовательности каждый символ, принадлежащий и второй
C++ Вывести каждый второй символ строки
C++ Из первой заданной строки удаляется каждый символ, принадлежащий второй заданной строке

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

Или воспользуйтесь поиском по форуму:
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
02.12.2011, 12:28     В строке символов заменить каждый второй символ s на f #10
hoot, Не имею таких задач. Могу посоветовать пройти онлайн тестирование. Например, http://certifications.ru/.
Yandex
Объявления
02.12.2011, 12:28     В строке символов заменить каждый второй символ s на f
Ответ Создать тему
Опции темы

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