Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.84
lese4ka
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 6
#1

вставить строку педе символом C++ - C++

20.02.2012, 19:42. Просмотров 6535. Ответов 7
Метки нет (Все метки)

Напишите, пожалуйста, как решается такая задачка:
Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S вставить S0.

Просто когда я сама я её писала, у меня почему-то вышла ошибка о неверном преобразовании типа char, значит я делала что-то неправильно!
http://www.cyberforum.ru/cpp-beginners/thread108730.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2012, 19:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос вставить строку педе символом C++ (C++):

В строке вставить перед символом «+» три символа «***»
Введите строку. По всей строке вставьте перед символом «+» три символа «***»....

Вывести строку, содержащую слова, разделенные одним символом «.»
Дана строка, состоящая из русских слов, разделенных пробелами (одним или...

Перед каждым вхождением заданного символа в строку S вставить строку S0
Дан символ C и строки S, S0 . Перед каждым вхождением символа C в строку S...

Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0
Дан символ C и строки S, S0. После каждого вхождения символа C в строку S...

Дан символ С и строка S. Перед каждым вхождением C в строку S вставить строку S. Где ошибка?
#include<iostream> #include<conio.h> #include<cmath> #include<string> using...

7
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 20:02 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <iostream>
 
int main()
{
    std::string str         = "abcabcabca";
    const std::string ins   = "tata";
    const char symbol       = 'a';
 
    for
    (
        auto it = str.find(symbol);
        it != std::string::npos;
        it = str.find(symbol, it + ins.length() + 1)
    )
        str.insert(it + 1, ins);
 
    std::cout << str << std::endl;
    
    return 0;
}
http://liveworkspace.org/code/2f59113b23a7a1d67cf6febe016cdae3
1
lese4ka
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 6
20.02.2012, 20:48  [ТС] #3
Спасибо, а не могли бы вы мне "прочитать" (пояснить) вот эти две строчки
C++
1
2
3
        it = str.find(symbol, it + ins.length() + 1)
    )
        str.insert(it + 1, ins);
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 20:53 #4
std::string::find
std::string::insert
0
soundtrack
42 / 42 / 12
Регистрация: 15.12.2011
Сообщений: 131
20.02.2012, 21:04 #5
it - счетчик цикла (текущая позиция "курсора"). В первой строчке устанавливается на новое место после вставки требуемой строчки.
Во второй строчке непосредственно вставляется строчка в установленное место. Это тело цикла for. Просто условие итерации записано несколько необычно - на три строчки 12-14, поэтому сложно разобраться.
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 21:07 #6
Цитата Сообщение от soundtrack Посмотреть сообщение
Просто условие итерации записано несколько необычно - на три строчки 12-14, поэтому сложно разобраться
Проще когда строка вылазит за 100 символов?
0
soundtrack
42 / 42 / 12
Регистрация: 15.12.2011
Сообщений: 131
20.02.2012, 21:11 #7
да не, все ОК. Просто непривычно)
0
R136a1
143 / 112 / 36
Регистрация: 14.04.2011
Сообщений: 261
21.02.2012, 17:48 #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
30
31
32
33
34
#include <iostream>
#include <cstring>
 
int main()
{
        const int size = 100;
        char s[size];
        char *ptr;
        char s0[] = "TEST";
        char c;
 
        std::cout << "Введите стрку: ";
        std::cin.getline(s,size);
 
        std::cout << "Введите c: ";
        std::cin >> c;
 
        ptr = strchr(s,c);
 
        while(ptr != NULL)
        {
                int index = ptr - s;
                char *tempStr = new char[strlen(ptr)+1];
                strcpy(tempStr,ptr);
                strcpy(s+index,s0);
                strcat(s,tempStr);
                ptr = strchr(s+(index+strlen(s0)+1),c);
                delete[] tempStr;
        }
 
        std::cout << s << std::endl;
 
        return 0;
}
0
21.02.2012, 17:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2012, 17:48
Привет! Вот еще темы с решениями:

Перед каждым вхождением символа C в строку S вставить строку S0
Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S...

Дано слово, оканчивающееся символом "_". Вставить букву т после k-й буквы
Дано слово, оканчивающееся символом &quot;_&quot;. Вставить букву т после k-й буквы

Обработать строку типа string, заменив одинаковые символы символом и их количеством
Вводится строка, например AABVHHCSDDK. Если есть одинаковые последующие...


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

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

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