Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
#1

Как с помощью цикла проверить все вхождения символов? - C++

26.11.2013, 21:16. Просмотров 412. Ответов 11
Метки нет (Все метки)

Как с помощью цикла проверить все вхождения символов и если какой-то из символов входит более одного раза (изначально мы не знаем какой символ повторяется, поэтому нужно проверить все символы на повторяемость) запомнить эти позиции, а потом части строки между вхождениями этого символа скопировать в новые строки?

Вот начало, дальше не знаю, как продолжить
C++
1
2
3
4
char str [50] = "12cb6yjukca8s7rcmnxc";
int nomer1, nomer2;
for (int i = 0; i < strlen (str); i++)
    if ( str[i] == str[i+1])
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2013, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как с помощью цикла проверить все вхождения символов? (C++):

Как проверить в строке все вхождения символа? - C++
Как проверить в строке все вхождения символа и запомнить кусок строки между двумя его вхождениями?

Написать программу, которая удаляет из данного набора символов все вхождения символов S и s - C++
Написать программу, которая получает от пользователя набор символов, исключая пропуск, и удаляет из этого набора все вхождения символов S и...

Проверить, являются ли числа взаимно простыми, с помощью цикла for и оператора ветвления if - C++
вот кусок программы. тут цикл. при выполненном условии выводится текст, а если разместить else в этом же цикле, то сообщение о...

Удалить все вхождения символов из строки - C++
как удалить вхождение всех точек в строку, стандартными средствами, без цикла написанного вручную. Я сделал так но это не правильно find...

Строка символов. Все вхождения ‘abc’ заменить на ‘def’ - C++
Дана строка символов. Необходимо все вхождения ‘abc’ заменить на ‘def’

АТД список. Выделить скобками все двойные вхождения символов - C++
Здравствуйте. Суть задачи такова. Нужно выделить круглыми скобками все двойные вхождения заданного символа. Например

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
newbie666
Заблокирован
26.11.2013, 21:18 #2
Цитата Сообщение от kobrjatina Посмотреть сообщение
Как
Легко!
используй std::map
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
26.11.2013, 21:23  [ТС] #3
Цитата Сообщение от newbie666 Посмотреть сообщение
используй std::map
мне нужно обычным циклом без этой библиотеки
newbie666
Заблокирован
26.11.2013, 21:28 #4
Цитата Сообщение от kobrjatina Посмотреть сообщение
мне нужно обычным циклом без этой библиотеки
а это не библиотека, это map а цикли тебе конечно же тоже понадобятся
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
26.11.2013, 21:31  [ТС] #5
Цитата Сообщение от newbie666 Посмотреть сообщение
а это не библиотека, это map а цикли тебе конечно же тоже понадобятся
а без map никак нельзя? мы этого еще не учили
newbie666
Заблокирован
26.11.2013, 21:35 #6
Цитата Сообщение от kobrjatina Посмотреть сообщение
а без map никак нельзя? мы этого еще не учили
конечно можно, но меня воротит от древнего сишного кода, так что жди, пока такие же новички тебе напишут программу
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
26.11.2013, 21:38  [ТС] #7
Цитата Сообщение от newbie666 Посмотреть сообщение
конечно можно, но меня воротит от древнего сишного кода, так что жди, пока такие же новички тебе напишут программу
а с помощью map можешь написать?
newbie666
Заблокирован
26.11.2013, 21:41 #8
Тогда точнее сформулируй задачу.
Цитата Сообщение от kobrjatina Посмотреть сообщение
если какой-то из символов входит более одного раза
А если несколько символов входят более однго раза?

Цитата Сообщение от kobrjatina Посмотреть сообщение
а потом части строки между вхождениями этого символа скопировать в новые строки?
Входит символ 3 раза в строку, сколько будет новых строк - кусочков, которые тебе надо скопировать?
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
26.11.2013, 21:46  [ТС] #9
Цитата Сообщение от newbie666 Посмотреть сообщение
Тогда точнее сформулируй задачу.

А если несколько символов входят более однго раза?

если несколько, то взять любой из повторяющихся символов и запомнить его позиции

Входит символ 3 раза в строку, сколько будет новых строк - кусочков, которые тебе надо скопировать?
если входит три раза, то будет 2 новые строки, между 1 и 2 вхождением и между 2 и 3
newbie666
Заблокирован
26.11.2013, 21:48 #10
Цитата Сообщение от newbie666 Посмотреть сообщение
А если несколько символов входят более однго раза?
а это?
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
26.11.2013, 21:50  [ТС] #11
Цитата Сообщение от newbie666 Посмотреть сообщение
а это?
если несколько, то взять любой из повторяющихся символов и запомнить его позиции
newbie666
Заблокирован
26.11.2013, 22:32 #12
ладно ща никадю

Добавлено через 31 минуту
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 <tchar.h>
#include <iostream>
#include <sstream>
#include <string>
#include <map>
#include <vector>
 
int _tmain(int argc, _TCHAR* argv[])
{
    char str [50] = "12cb6yjukca8s7rcmnxc";
 
    std::string source = str;
    std::map<char, std::vector<int>> scan;
    for(int i=0; i<source.size(); i++)              
            scan[source[i]].push_back(i);   
 
    std::vector<std::pair<char, std::string>> result;
    for(auto it = scan.begin(); it != scan.end(); it++)     
        if(it->second.size() > 1)       
            for(int i = 0; i < it->second.size() - 1; i++)              
                result.push_back(std::make_pair(it->first, source.substr(it->second[i]+1, it->second[i+1]-it->second[i]-1)));       
 
    for(auto it = result.begin(); it != result.end(); it++)
        std::cout << "Char '" << it->first << "' substring result: " << it->second << std::endl;
    
    system("pause");
        
    return 0;
}
Плюс мне ставится под ником
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2013, 22:32
Привет! Вот еще темы с ответами:

Заменить в последовательности символов после первого вхождения знака ‘+’ все цифры на символ – - C++
Заменить в последовательности символов после первого вхождения знака ‘+’ все цифры на символ – .

Стек. Выведите все вхождения символов указанного набора в текст в обратном порядке - C++
Дан текст, состоящий из заглавных и строчных английских букв, символов ! ; ? . , - : ; ) ( ' &quot; и пробелов. Выведите все...

Заменить все первые левые вхождения символа “a” на 00, а все правые вхождения символа “a” на 11 - C++
Заменить все первые левые вхождения символа “a” на 00, а все правые вхождения символа “a” на 11, остальные без изменений

Как вывести с помощью цикла рисунок? - C++
Привет всем! Такая проблема: С треугольниками разобрался- могу выводить с помощю цыклов разные и в разных ракурсах. Вот код: #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.11.2013, 22:32
Ответ Создать тему
Опции темы

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