11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
1

Строка: После каждого символа А вставить пробел, и подсчитать количество символов B, стоящих между + и -

20.10.2015, 12:49. Показов 3559. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста решить задачу.
После каждого символа А вставить пробел, и подсчитать количество символов B, стоящих между + и -
Сделать нужно при помощи string (массивы не подходят)
Начал делать, но, не работает и выдает ошибку.
Перелазил всё, ничего не выходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string.h>
#include <cmath>
#include <stdexcept>
#include <cstdio>
#include <vector>
int main(void)
{
int k;
std::cout << "Vvedite vash text: ";
std::string s;
std::string s1= " ";
std::getline(std::cin, s);
 size_t pos = s.find("a");
 k=pos;
std::string s.insert(s1,k);        //Ошбика
std::cout <<"\nPoluchenaia stroka: "<< s;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2015, 12:49
Ответы с готовыми решениями:

Строка вводится с клавиатуры. В данной строке вставить пробел после каждого символа
Строка вводится с клавиатуры. В данной строке вставить пробел после каждого символа

Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела.
Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела. Как...

После 1-го символа каждого слова вставить последовательность символов
Раздвинуть заданный текст, вставив введенную с клавиатуры последовательность символов после 1-го...

Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0
Есть код... string s, s0; char c; cout &lt;&lt; &quot;Введите строку s, s0 и символ c: &quot;; ...

11
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.10.2015, 13:43 2
Цитата Сообщение от Rider98 Посмотреть сообщение
#include <string.h>
пиши так:
C++
1
#include <string>
Добавлено через 1 минуту
Цитата Сообщение от Rider98 Посмотреть сообщение
std::string s.insert(s1,k); //Ошбика
тут пиши так:
C++
1
s.insert(s1,k);
1
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
20.10.2015, 13:58 3
Скорей
C++
1
s.insert(k, s1);
2
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
20.10.2015, 14:06 4
Здесь вообще не нужен insert, ибо тормознутый (линейная сложность) и код чтения следующего символа усложняет.
C++
1
2
3
4
5
6
7
std::string res;
while(cin.peek()!='\n')
{
    res.push_back(cin.get());
    if(res.back()=='A')
        res.push_back(' ');
}
0
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
20.10.2015, 14:16  [ТС] 5
C++
1
while(cin.peek()!='\n')
В первой же строке ошибка
Миниатюры
Строка: После каждого символа А вставить пробел, и подсчитать количество символов B, стоящих между + и -  
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
20.10.2015, 14:19 6
А, да, пардон - std::cin или using namespace std в начало программы.
1
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
20.10.2015, 14:38  [ТС] 7
А как возможно данным кодом искать последующие буквы а?
C++
1
pos = s.find("a");
т.к. если так оставлять то находит лишь первую букву и все.
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
20.10.2015, 14:41 8
Цитата Сообщение от Rider98 Посмотреть сообщение
А как возможно данным кодом
лучше завести массив и одним проходом сохранить все индексы букв а
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
20.10.2015, 14:42 9
Цитата Сообщение от Rider98 Посмотреть сообщение
А как возможно данным кодом искать последующие буквы а?
Там вторым аргументом передается с какого символа продолжить поиск. Например, pos = s.find("a",2) скипнет первые два символа.
1
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
20.10.2015, 14:47  [ТС] 10
Подскажите как реализовать последующие удаление, получается, что оно просто вставляет все пробелы после первого же элемента а
C++
1
2
3
4
5
for (i=1; i<dlina;i++)
{
pos = s.find("a",s.length());
s.insert(pos+3, " ");
}
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
20.10.2015, 15:06 11
Еще раз, медленно - вторым аргументом передается с какого символа продолжить поиск. Вы должны передать туда предыдущий результат find плюс один, а не length отправляющий в самый конец строки.
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
20.10.2015, 15:14 12
C++
1
2
3
4
5
6
int pos = s.find("a");
while (pos>=0)
{
    s.insert(pos+1, s1);
    pos = s.find("a", pos+1);
}
1
20.10.2015, 15:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2015, 15:14
Помогаю со студенческими работами здесь

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел
Вставить пробел после каждого символа &quot;.&quot; &quot;,&quot; &quot;!&quot; или &quot;?&quot;, если за этими символами не следует...

Задан текст. Вставить заданную последовательность символов после i символа каждого слова
Программа есть ,но она выводит символ после первого символа.Помогите исправить пожалуйста ....

Дана строка символов и некоторый символ sym. Сформируйте новую строку, вставив после каждого вхождения символа sym запятую.
Помогите решить задачку: Дана строка символов и некоторый символ sym. Сформируйте новую строку,...

Сформировать новую строку, вставив пробел после каждого вхождения заданного символа
Дана строка символов и некоторый символ n. Сформируйте новую строку, вставив после каждого...


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

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

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