Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
1

Добавить знак доллара после каждой цифры

05.11.2015, 19:18. Просмотров 2129. Ответов 13
Метки нет (Все метки)

Всем привет, такой вопрос после каздой цифри нужно поставить $,
когда текст без цифр все хорошо а когда в тексте есть цифра получаеться без конечний цикл в чем может бить причина?
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
/*(1) Після кожної цифри у рядку вставити знак ‘$’.*/
#include <iostream>
#include <string>
 
using namespace std;
 
void searchLN(string &str);
 
int main ()
{
 
        string str;
        cout << "Enter string:\n:";
        getline(cin, str);
 
        searchLN(str);
 
return 0;
}
 
void searchLN(string &str)
{
        int pos = str.find_first_of("1234567890");
        if (pos != string::npos){
        str.insert(pos++, "$");
        while (pos < str.size())
        {
                pos = str.find_first_of("1234567890");
                if(pos != string::npos)
                str.insert(pos++, "$");
                else
                pos = str.size();
        }
        cout << str << endl;
        }
        else
                cout << str << endl;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2015, 19:18
Ответы с готовыми решениями:

Добавить после каждой цифры 2 нуля
Строки. Добавить после каждой цифры 2 нуля. например: ввели: а1 б2 абв получили: а100 б200 абв...

Добавить воскл знак в конец каждой строки в файле.
С++ но с использованием функций С. Вообщем есть такое задание. Делал давно. Вот что получилось: ...

В строке после каждой буквы q добавить букву u (Pascal -> C++)
В предложении после каждой буквы q добавить букву u. Program lab6; uses crt; Var p: integer;...

Неожиданное поведение программы: почему после каждой выведенной фразы в консоли появляются цифры?
почему после каждой выведенной фразы в консоли появляются цифры? например, Введите значение...

13
Jesus loves me
Эксперт С++
5106 / 3119 / 352
Регистрация: 12.12.2009
Сообщений: 7,888
Записей в блоге: 2
05.11.2015, 19:31 2
Цитата Сообщение от Shonrens Посмотреть сообщение
Всем привет, такой вопрос после каздой цифри нужно поставить $,
когда текст без цифр все хорошо
1
Dimension
579 / 447 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
05.11.2015, 19:32 3
Лучший ответ Сообщение было отмечено Shonrens как решение

Решение

так проще
C++
1
2
3
4
5
6
string a = "asd123dwq2fer6";
    for (int i = 0;i < a.size();i++) {
        if (isdigit(a[i]))
            a.insert(a.begin()+i+1, '$');
    }
    cout << a;
1
33 / 33 / 21
Регистрация: 26.10.2015
Сообщений: 94
05.11.2015, 19:36 4
Shonrens, поиск числа в цикле возвращает указатель на одно и то же место.
1
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
05.11.2015, 19:42  [ТС] 5
a.insert(a.begin()+i+1, '$'); дякую
я читав в одній книзі та радили писати через a.at(i) чи дійсно це так
a.begin вказує на початок масиву?
 Комментарий модератора 
Язык форума русский (или английский)!
0
Модератор
Эксперт С++
9913 / 8436 / 5129
Регистрация: 18.12.2011
Сообщений: 22,581
05.11.2015, 19:44 6
Вот сделал Вам на char
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
/*(1) Після кожної цифри у рядку вставити знак ‘$’.*/
#include <iostream>
#include <cstring>
using namespace std;
 
void searchLN(char* str);
int main ()
{
    char str[100];
    cout << "Enter string:\n:";
    cin.getline(str,100);
 
    searchLN(str);
    cout << str << endl;
    system("pause");
    return 0;
}
void insert(char* p,char c)
{
    int L=strlen(p)+1;
    for(char* pt=p+L;pt>p;pt--)
        *pt=*(pt-1);
    *p=c;
}
void searchLN(char* str)
{
    char* pos = str;
    while(*pos)
    {
        if( *pos>='0' && *pos<='9')
        {
            insert(++pos,'$');
        }
        pos++;
    }
}
1
Jesus loves me
Эксперт С++
5106 / 3119 / 352
Регистрация: 12.12.2009
Сообщений: 7,888
Записей в блоге: 2
05.11.2015, 19:44 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <regex>
 
int main()
{
    std::string str;
    std::cout << "Enter string: ";
    std::getline(std::cin, str);
    
    std::regex digits("\\d");
    std::cout << std::regex_replace(str, digits, "$&$") << std::endl;
 
    return 0;
}
1
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
05.11.2015, 19:46  [ТС] 8
дякую за старання але треба за допомогою саме стрінг
0
33 / 33 / 21
Регистрация: 26.10.2015
Сообщений: 94
05.11.2015, 19:52 9
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
/*(1) Після кожної цифри у рядку вставити знак ‘$’.*/
#include <iostream>
#include <string>
 
using namespace std;
 
void searchLN(string &str);
 
int main ()
{
 
        string str;
        cout << "Enter string:\n";
        getline(cin, str);
        searchLN(str);
 
return 0;
}
 
void searchLN(string &str)
{
 
        std::string::size_type pos = str.find_first_of("1234567890", 0);
        if (pos != string::npos)
        {
            str.insert(pos++, "$");
            while (pos != string::npos)
            {
                pos = str.find_first_of("1234567890", pos + 1);
                if(pos != string::npos)
                    str.insert(pos++, "$");
            }
        }
        cout << str << endl;
}
1
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
05.11.2015, 19:53  [ТС] 10
Ще хотів запитати чому ось так не працює a.insert(i+1, '$');
0
834 / 492 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
05.11.2015, 19:57 11
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include <boost/algorithm/string/regex.hpp>
 
int main()
{
        std::string text;
        std::getline (std::cin, text);
        boost::replace_all_regex (text, boost::regex ("\\d"), std::string("$&$"));
        std::cout << text << std::endl;
}
1
33 / 33 / 21
Регистрация: 26.10.2015
Сообщений: 94
05.11.2015, 20:00 12
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
/*(1) Після кожної цифри у рядку вставити знак ‘$’.*/
#include <iostream>
#include <string>
 
using namespace std;
 
void searchLN(string &str);
 
int main ()
{
 
        string str;
        cout << "Enter string:\n";
        getline(cin, str);
        searchLN(str);
 
return 0;
}
 
void searchLN(string &str)
{
 
        std::string::size_type pos = str.find_first_of("1234567890", 0);
        if (pos != string::npos)
        {
            str.insert(pos + 1, "$");
            while (pos != string::npos)
            {
                pos = str.find_first_of("1234567890", pos + 1);
                if(pos != string::npos)
                    str.insert(pos + 1, "$");
            }
        }
        cout << str << endl;
}
Добавлено через 57 секунд
Вот сейчас вроде то, что надо
1
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
05.11.2015, 20:01  [ТС] 13
Andreas Kara, std::string::size_type pos = str.find_first_of("1234567890", 0);
что значит size_type?
str.find_first_of("1234567890", 0) 0 - означает индекс?
0
33 / 33 / 21
Регистрация: 26.10.2015
Сообщений: 94
06.11.2015, 00:28 14
Shonrens, как я понимаю, size_type - это тип значения, возвращаемого find_first_of(). Второй аргумент find_first_of() - позиция в строке, начиная с которой ведется поиск.

Добавлено через 4 часа 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
/*(1) Після кожної цифри у рядку вставити знак ‘$’.*/
#include <iostream>
#include <string>
 
using namespace std;
 
void searchLN(string& str);
 
int main ()
{
        string str;
        cout << "Enter string:\n";
        getline(cin, str);
        searchLN(str);
        cout << str << endl;
        return 0;
}
 
void searchLN(string& str)
{
        std::string::size_type pos = str.find_first_of("1234567890", 0);
        while (pos != string::npos)
        {
            str.insert(pos + 1, "$");
            pos = str.find_first_of("1234567890", pos + 1);
        }
}
Добавлено через 2 минуты
поменьше букав
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2015, 00:28

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Из целого числа получить новое путем вставки после каждой цифры 0 (231457 -> 2030405070)
Помогите пожалуйста написать программу. Вот задание 1)Исходные данные и результаты типа int. Не...

Массив (Сделать программу, которая после каждой цифры в тексте вставляет в скобках её текстовый эквивалент)
Ребят, помогите с задачей. Сделать программу, которая после каждой цифры в тексте вставляет в...

После ввода курса доллара и суммы в рублях выдать значение в долларах
Написать программу, которая после ввода курса доллара и суммы в рублях выдает значение в долларах ...

В заданном тексте после каждой цифры, за которой стоит знак арифметического действия вставить пробел...
&quot;В заданном тексте после каждой цифры, за которой стоит знак арифметического действия (‘+’, ‘–’,...


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

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

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