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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
*mk*
#1

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

01.12.2011, 20:13. Просмотров 1442. Ответов 9
Метки нет (Все метки)

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

Заменить каждый второй элемент строки на заданный символ - C++
1. Написать и протестировать функцию, которая в строке, передаваемой ей в качестве параметра, заменяет каждый второй элемент на заданный...

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

В строке скопировать каждый второй символ в конец строки - C++
есть задача: в строке s скопировать каждый 2й символ в конец строки. я не могу понять в чем ошибка, либо просто не понял условие ...

Строки: заменить каждый символ '/' на пару символов ':' - C++
Подсчитать количество пар '23' и '45' по отдельности и заменить каждый символ '/' на пару символов ': '. С использование библиотеки...

В строке каждый символ заменить на соответствующий ему код - C++
Помогите решить:) В строке каждый символ заменить на соответствующий ему код. С++

Написать и протестировать функцию, которая в строке, передаваемой ей в качестве параметра, заменяет каждый второй элемент на заданный символ. - C++
помогите ребят!!! вот препод задал мне задачи для зачетной недели, фактически все сделал,кроме этой: "Написать и протестировать функцию,...

9
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
01.12.2011, 21:06 #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;
}
0
hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 195
01.12.2011, 21:35 #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;
}
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
01.12.2011, 21:35 #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;
}
0
hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 195
01.12.2011, 21:36 #5
gooseim
у меня твой код не работает, выдает ошибки.
Расшифруй код. У тебя так компактно получилось.
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
01.12.2011, 21:45 #6
тогда уж лучше replace_if с предикатом
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.12.2011, 21:50 #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;
}
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
01.12.2011, 22:26 #8
hoot, у тебя не работает, потому что код написан под стандарт c++ 11, не все компиляторы пока поддерживают. Можно потестить здесь: http://liveworkspace.org
0
hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 195
02.12.2011, 01:32 #9
gooseim,
Слушай, можешь подкинуть парочку различных задач для проверки знания по с++.
Желательно что задачки четко разделялись по темам.
Если не трудно. Буду очень благодарен.
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.12.2011, 12:28 #10
hoot, Не имею таких задач. Могу посоветовать пройти онлайн тестирование. Например, http://certifications.ru/.
1
02.12.2011, 12:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 12:28
Привет! Вот еще темы с ответами:

В строке заменить каждый символ * числом, соответствующим номеру вхождения этого символа в строку - C++
в заданной строке заменить каждый символ &quot;*&quot; числом, соответствующим номеру по порядку вхождения этого символа в строку #include...

Из первой заданной строки удаляется каждый символ, принадлежащий второй заданной строке - C++
Составить процедуру, в результате обращения к которой из первой заданной строки удаляется каждый символ, принадлежащий второй заданной...

Найти в строке string наиболее часто встречающуюся пару символов и заменить на один новый символ - C++
нужно найти в строке пару символов, которые повторяются чаще всех и заменить их на один новый символ например acfghhachfjiac &quot;ac&quot; заменить...

Выводить строку, сокращая каждый раз на 1 символ, пока в строке не останется 1 символ - C++
' Напишите программу, которая вводит строку и выводит её, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 символ....


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

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

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