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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
zalax
1 / 1 / 0
Регистрация: 14.09.2010
Сообщений: 52
#1

найти повторяющиеся символы в массиве - C++

02.10.2010, 18:58. Просмотров 1427. Ответов 7
Метки нет (Все метки)

Доброго времени суток! Не могли бы подсказать как решить такую задачу. Дана последовательность символов, надо найти какой символ сколько раз повторяется. Предполагаю, что их лучше всего поместить в массив, а потом уже в нем оперировать. Не могли бы подсказать алгоритм, как лучше решить такую задачу (если можно с простенькими примерами кода).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2010, 18:58     найти повторяющиеся символы в массиве
Посмотрите здесь:

Найти в массиве повторяющиеся значения C++
Найти в массиве все повторяющиеся последовательности C++
Повторяющиеся символы в строке C++
Исключить повторяющиеся символы в строке C++
C++ Удалить повторяющиеся символы в массиве
Найти в массиве повторяющиеся элементы и подсчитать, сколько раз они повторяются C++
C++ Найти повторяющиеся в массиве элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
максим)
2 / 2 / 0
Регистрация: 02.10.2010
Сообщений: 36
02.10.2010, 19:01     найти повторяющиеся символы в массиве #2
можешь уточнить ??? символов или цифр ????
zalax
1 / 1 / 0
Регистрация: 14.09.2010
Сообщений: 52
02.10.2010, 19:03  [ТС]     найти повторяющиеся символы в массиве #3
буквы и цифры. максимальное количество 80
easybudda
Эксперт С++
9439 / 5462 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
02.10.2010, 19:39     найти повторяющиеся символы в массиве #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
#define STR_LEN 81 /* + '\0' */
 
int main(void){
    char symbols[256] = { 0 }, str[STR_LEN], *p;
    int i;
    
    printf("String: ");
    scanf("%80[^\n]", str);
    
    for ( p = str; *p; ++p )
        symbols[*p]++;
    
    for ( i = 0; i < 256; ++i )
        if ( symbols[i] )
            printf("'%c'\t%d\n", i, symbols[i]);
    
    return 0;
}
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.10.2010, 19:42     найти повторяющиеся символы в массиве #5
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
#include <iostream>
 
void repetit(std::string str){
    for ( int k = 0; k < str.size(); ++k){
        int cnt = 1;
        bool repetition = false;
 
        for (int j = 0; j < k; ++j)
            if ( str[k] == str[j] ){
                repetition = true;
                break;
            }
 
        if (repetition) continue;
 
        for ( int i = k+1; i < str.size(); ++i){
             if ( str[k] == str[i] )
                ++cnt;
        }
 
        std::cout << str[k] << "-->" << cnt <<std::endl;
    }
}
 
int main()
{
    std::string text("1231421728");
    repetit(text);
    return 0;
}
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.10.2010, 19:45     найти повторяющиеся символы в массиве #6
приложение
Миниатюры
найти повторяющиеся символы в массиве  
zalax
1 / 1 / 0
Регистрация: 14.09.2010
Сообщений: 52
02.10.2010, 20:02  [ТС]     найти повторяющиеся символы в массиве #7
2 PointsEqualб easybudda
Не могли бы прокомментировать ваши программы?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2010, 20:25     найти повторяющиеся символы в массиве
Еще ссылки по теме:

C++ Найти уникальные и повторяющиеся символы
C++ В массиве найти все повторяющиеся числа
Убрать повторяющиеся символы из строки C++
В случайным образом заполненном массиве найти и вывести на экран числа, повторяющиеся два и более раз C++
Массивы: Найти наиболее часто повторяющиеся числа в массиве C++

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

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.10.2010, 20:25     найти повторяющиеся символы в массиве #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void repetit(std::string str){
    for ( int k = 0; k < str.size(); ++k){ //начиная от первого символа последовательности
        int cnt = 1; //счетчик изначально == 1, т.к ........
        bool repetition = false; //пусть  повторений k-ого символа не было
 
        for (int j = 0; j < k; ++j)// начиная от первого символа последовательности до текущего элемента k, проверяем, не было ли повторений этого символа
            if ( str[k] == str[j] ){ //если повтор был
                repetition = true; // то делаем флаг
                break; //выходи из цикла и...
            }
 
        if (repetition) continue; //...и если было повторение переходим к следующему символу последовательности (к+1)
 
        //если повторов к-ого символа не было то...
        for ( int i = k+1; i < str.size(); ++i){ //...то проверяем  текущий (к-ый) сивол со следующим
             if ( str[k] == str[i] ) //если символы совпали, то ..
                ++cnt;//..увелучить счетчик повтора k-ого символа
        }
 
        std::cout << str[k] << "-->" << cnt <<std::endl; // вывод
    }
}
Добавлено через 4 минуты
1 2 3 1 4 2 1 7 2 8

допустим мы на ходимся на 3-ем элементе (к==3)

этот кусок отвечает за красную часть
C++
1
2
3
4
5
6
7
        for (int j = 0; j < k; ++j)
            if ( str[k] == str[j] ){
                repetition = true;
                break;
            }
 
        if (repetition) continue;
этот за синюю
C++
1
2
3
4
 for ( int i = k+1; i < str.size(); ++i){
             if ( str[k] == str[i] )
                ++cnt;
        }
Yandex
Объявления
02.10.2010, 20:25     найти повторяющиеся символы в массиве
Ответ Создать тему
Опции темы

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