0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 37
1

Замена символа в строке на число соответствующему номеру по порядку вхождения этого символа в строку

15.02.2018, 12:35. Показов 2726. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В заданной строке заменить каждый символ «*» числом, соответствующим номеру по порядку вхождения этого символа в строку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2018, 12:35
Ответы с готовыми решениями:

Ввод строки S и символа С. Результат: число повторений символа С и порядковые позиции вхождения этого символа в строку
Нужно составить программу, в которой пользователь вводит вручную строку S и символ C. Результатом...

В строке заменить каждый символ * числом, соответствующим номеру вхождения этого символа в строку
в заданной строке заменить каждый символ "*" числом, соответствующим номеру по порядку вхождения...

В заданной строке после каждого символа вставить число, соответствующее коду этого символа
В заданной строке после каждого символа вставить число, соответствующее коду этого символа. PS...

[masm32] Поиск и замена первого вхождения символа в строку
Здравствуйте. Господа программисты, есть код написанный мной при помощи masm32 под windows, вот я...

9
2703 / 1955 / 975
Регистрация: 21.12.2010
Сообщений: 3,644
Записей в блоге: 10
15.02.2018, 13:24 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
#include <iostream>
 
int main()
{
    std::string str("*fg*fg*");
    for (int i = 0, ind = 0; (ind = str.find('*', ind)) != std::string::npos; ++i)
    {
        str.replace(ind, 1, std::to_string(i + 1));
    }
    std::cout << str << std::endl;
}
0
792 / 598 / 318
Регистрация: 24.02.2017
Сообщений: 2,128
15.02.2018, 15:51 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
#include <sstream>
#include <iostream>
 
using namespace std;
 
int main()
{
  size_t  i=0;
  stringstream ss;
  string s="*fg*fg* fff fff*gg* ",t;
  while(s[i]!='\0')
   {
     if(s[i]=='*')
       {
        ss<<i+1;
        t+=ss.str();
        ss.str("");
        }
     else
       t+=s[i];
     i++;
     }
  s=t;
  cout<<s<<"\n";
  system("PAUSE");
  return 0;
}
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
18.02.2018, 18:29 4
Ilyasbek, здравствуйте! Вот еще вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    string str;
    cout << "Enter a string. Use symbol \'*\':\n";
    getline(cin, str);
    for (int i = str.size() - 1; i >= 0; i--)
    {
        if (str[i] == '*')
        {
            str.erase(i, 1);
            str.insert(i, to_string(i+1));
        }
    }
    cout << "Target string:" << "\n";
    cout << str << "\n";
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 37
26.02.2018, 13:56  [ТС] 5
Спасибо всем!
объясните пожалуйста эти выражения:
Цитата Сообщение от igorrr37 Посмотреть сообщение
for (int i = 0, ind = 0; (ind = str.find('*', ind)) != std::string::npos; ++i)
* * {
* * * * str.replace(ind, 1, std::to_string(i + 1));
* * }
Цитата Сообщение от повар1 Посмотреть сообщение
size_t *i=0;
* stringstream ss;
Цитата Сообщение от повар1 Посмотреть сообщение
t+=ss.str();
* * * * ss.str("");
Цитата Сообщение от Fixer_84 Посмотреть сообщение
str.erase(i, 1);
* * * * * * str.insert(i, to_string(i+1));
0
792 / 598 / 318
Регистрация: 24.02.2017
Сообщений: 2,128
26.02.2018, 20:16 6
C++
1
2
3
 ss<<i+1;//записываем номер заменяемого символа в поток.
        t+=ss.str();//к строке добавляем значение из потока
        ss.str("");//очищаем поток
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
26.02.2018, 23:41 7
Цитата Сообщение от Ilyasbek Посмотреть сообщение
Сообщение от Fixer_84
str.erase(i, 1);
* * * * * * str.insert(i, to_string(i+1));
C++
1
2
3
4
5
if (str[i] == '*')
{
    str.erase(i, 1); //Если символ - '*' - удаляем его.
    str.insert(i, to_string(i + 1)); //И сразу вставляем на место этого удаленного символа число, соответствующее его номеру в строке.
}
P.S. Двигаемся справа налево, чтобы не думать об изменяемой длине строки.
0
0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 37
27.02.2018, 06:38  [ТС] 8
erase(I, 1); что означает единичка?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
27.02.2018, 18:56 9
Цитата Сообщение от Ilyasbek Посмотреть сообщение
erase(I, 1); что означает единичка?
Здравствуйте! Единичка означает, что, начиная с позиции с индексом i будет удален только один символ (в данном случае '*').
0
0 / 0 / 0
Регистрация: 13.09.2017
Сообщений: 37
27.02.2018, 22:20  [ТС] 10
Понял.
Спасибо большое!

Добавлено через 1 минуту
Кто нибудь помогите пожалуйста с этой задачей
Найти пару слов заданной длины с максимальным расстоянием
0
27.02.2018, 22:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2018, 22:20
Помогаю со студенческими работами здесь

В заданой строке изменить каждый символ ‘*’ числом, которое отвечает номеру за порядком вхождения данного символа строки
В заданой строке изменить каждый символ ‘*’ числом, которое отвечает номеру за порядком вхождения...

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа...

Определить позицию первого символа "a" в тексте и вывести на экран строку, начиная с этого символа
Здравствуйте. Имеется задача: Задан текст. Определить позицию первого символа &quot;a&quot; в тексте и...

Замена символа x в строке на число типа double
У меня есть строка типа string. Я пытаюсь подставить на место x в строке число типа double...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru