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

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

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

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

26.11.2013, 21:16. Просмотров 407. Ответов 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++ Проверить, являются ли числа взаимно простыми, с помощью цикла for и оператора ветвления if
C++ Удалить все вхождения символов из строки
C++ Строка символов. Все вхождения ‘abc’ заменить на ‘def’
C++ АТД список. Выделить скобками все двойные вхождения символов
Заменить в последовательности символов после первого вхождения знака ‘+’ все цифры на символ – 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 Посмотреть сообщение
а это?
если несколько, то взять любой из повторяющихся символов и запомнить его позиции
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2013, 22:32     Как с помощью цикла проверить все вхождения символов?
Еще ссылки по теме:
C++ Стек. Выведите все вхождения символов указанного набора в текст в обратном порядке
Заменить все первые левые вхождения символа “a” на 00, а все правые вхождения символа “a” на 11 C++
C++ Как вывести с помощью цикла рисунок?
C++ как с пoмощью цикла и оператора If проверить полиндром ли число
Как в переменной строкового типа заменить все вхождения одного символа на другой? C++

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

Или воспользуйтесь поиском по форуму:
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;
}
Плюс мне ставится под ником
Yandex
Объявления
26.11.2013, 22:32     Как с помощью цикла проверить все вхождения символов?
Ответ Создать тему
Опции темы

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