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

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

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

C++ Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены и переписать новый текст в файл D
Повторяющиеся символы в строке 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
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 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
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 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++ В массиве найти все повторяющиеся числа

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

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 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     найти повторяющиеся символы в массиве
Ответ Создать тему
Опции темы

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