С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 17.12.2017
Сообщений: 116
1

Функция замены символов

31.01.2019, 21:40. Показов 825. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Определить функцию, которая в данной строке меняет один заданный символ на другой, при этом в случае последовательности одинаковых символов изымает повторяющиеся (например, строка - "abbc", заменяемый символ - "b", символ, на который меняют, - "d", результат - "adc").
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2019, 21:40
Ответы с готовыми решениями:

Функция замены символов
Определить функцию, которая в данной строке меняет один заданный символ на другой, при этом в...

Функция замены Builder 6
На практику в одном из пунктов задания (нужно написать текстовый редактор) нужно выполнить...

Ошибка замены символов в массиве
Здраствуйте, хочу написать простую консольную игру крестики-нолики. Столкнулся с проблемой,...

Функция для замены символов в строке
Есть ли в Access 97 функция для замены символов в строке?

9
Мозгоправ
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
01.02.2019, 02:04 2
Вообще-то Маше Нестеренко уже ответили лет несколько назад.

Вот ещё вариант на C++11:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <regex>
 
using namespace std;
 
void replaser(string & str, char from, char to) {
    string pattern("( +)");
    pattern[1] = from;
    string subst(1, to);
    regex re(pattern, regex_constants::ECMAScript);
    str = regex_replace(str, re, subst, regex_constants::match_any);
}
 
int main() {
 
    string s("abbc -abc- -abbbc-");
    replaser(s, 'b', 'd');
    cout << s << endl;
    return 0;
}
1
Yetty
01.02.2019, 02:43
  #3

Не по теме:

Цитата Сообщение от L0M Посмотреть сообщение
Вообще-то Маше Нестеренко уже ответили лет несколько назад.
по ссылке код не под условие задачи :)

0
Мозгоправ
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
01.02.2019, 03:40 4
Цитата Сообщение от Yetty Посмотреть сообщение
по ссылке код не под условие задачи
М-да?...

Условие задачи совпадает один в один.
Решение zss полностью удовлетворяет условию.

А вот то, что задача сформулирована некорректно, - это другой вопрос.
Цитата Сообщение от Rina16 Посмотреть сообщение
при этом в случае последовательности одинаковых символов изымает повторяющиеся
при этом в случае последовательности одинаковых символов, совпадающих с заданным, изымает повторяющиеся

Я написал решение по второй формулировке, что, на самом деле, формально не корректно.
0
Мозгоправ
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
01.02.2019, 03:48 5
--- удалено
Сайт подвисает ((
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
01.02.2019, 04:40 6
L0M, меняем 'b' на 'd'. в случае ввода строки abbchhhh она должна преобразоваться в adchhhh, а код zss удаляет ВСЕ повторы и выдаёт adch - в условии указано "при этом", а не "затем"
0
Мозгоправ
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
01.02.2019, 05:01 7
Цитата Сообщение от Yetty Посмотреть сообщение
код zss удаляет ВСЕ повторы
Да, я видел.

И более корректную, по моему мнению, формулировку этого предложения см. выше.

Даже если ваше объяснение настолько ясно, что исключает всякое ложное толкование, все равно найдется человек, который поймет вас неправильно.

Первое следствие Третьего закона Чизхолма
0
844 / 647 / 323
Регистрация: 24.02.2017
Сообщений: 2,288
01.02.2019, 10:17 8
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
#include <iostream>
using namespace std;
 
void replaser(string  & s,char a, char b) {
   string t;
   size_t i=0,count=0;
 
   while(s[i]!='\0'){
      if(s[i]!=a){
          count=0;
          t+=s[i];
        }
      if(s[i]==a && count==0){
          count++;
          t+='d';
       }
      i++;
    }
    s=t;
 }
 
int main()
{
  string str("abbc -abchhhh- -abbbc-");
  replaser(str,'b','d');
  cout<<str;
  system("pause");
  return 0;
}
0
2 / 2 / 0
Регистрация: 17.12.2017
Сообщений: 116
01.02.2019, 23:10  [ТС] 9
повар1, можете объяснить код?
0
844 / 647 / 323
Регистрация: 24.02.2017
Сообщений: 2,288
01.02.2019, 23:50 10
Считываем из строки очередной символ. Проверяем первое условие: если символ 's[i]' не равен заменяемому символу 'a' записываем его в строку t при этом счетчик символов count обнуляем. Проверяем второе условие: если симолы будут равны и счетчик символов count= 0 записываем в строку t заменяемый символ и увеличиваем счетчик на единицу. Если следующий символ будет таким же как и предыдущий то условие count= 0 не выполняется и символ в строку t записываться не будет. Таким образом проходим посимвольно всю строку. И равенством s=t заменяем старую строку на новую.
0
01.02.2019, 23:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2019, 23:50
Помогаю со студенческими работами здесь

Строковая функция в Javascript для замены одинаковых символов на другой
Подскажите строковую функцию в Javascript для замены одинаковых символов на другой. Спасибо.

Ввод символов в режиме вставки и замены символов
Нужен элемент управления поддерживающий возможность ввода символов в режиме вставки и замены...

Строки и замены символов
Здравствуйте форумчане, нужно выполнить такое задание, считываю с файла текст, и в нем заменяю...

Функция замены value в input'ах
Здравствуйте. Написал скрипт: function ini() { this.Run = function(fn){ window.onload =...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru