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

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

Войти
Регистрация
Восстановить пароль
 
YusipovIlsur
11 / 11 / 2
Регистрация: 17.12.2010
Сообщений: 52
#1

алгоритм - C++

23.02.2011, 17:53. Просмотров 874. Ответов 3
Метки нет (Все метки)

Ребят, помогите разработать алгоритм (а если можно, то саму функцию).
Суть в следующем:
Аргументы функции main задаются строкой (словами через пробел). Необходимо найти символ (его код), который встречается в наибольшем числе слов данной строки. Т.е., если символ несколько раз встречается в одном слове, его не нужно столько же раз считывать - 1 раз в слове и всё.

Вся суть в том, чтобы функция была как можно более компактна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2011, 17:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос алгоритм (C++):

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) - C++
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void lab () { int s1 = 0; int s2 =...

Помогите алгоритм для char переделать в алгоритм для float - C++
char* DecToBin(char x, char* str) { int i; for (i = sizeof(x)*8-1; i>=0; i--) { str = (x&1 == 1) ? '1' : '0'; x = x >>...

Волновой алгоритм (алгоритм Ли) - C++
Здравствуйте! У кого-нибудь есть реализованный волновой алгоритм (алгоритм Ли) ? Дело в том, что я игрушку захотел написать (что-то...

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар) - C++
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная головоломка). Определение. Перестано́вочные...

Алгоритм А* - C++
Здравствуйте, вы не могли бы показать какой-либо пример задачи, алгоритма поиска А* в с/с#

с++ алгоритм - C++
Преобразовать одномерный массив,состоящий из n целых элементов,таким образом,чтобы сначала располагались все положительные элементы,а потом...

3
Ma3a
Эксперт С++
618 / 462 / 31
Регистрация: 28.01.2011
Сообщений: 605
23.02.2011, 18:14 #2
Топорный вариант конечно, но вроде работает

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
char getcode(int argc, char * argv[])
    {
    static char symbs[128];
    static char were_added[128];
 
    for(int i = 1; i < argc; ++i)
        {
        for(int len = strlen(argv[i]),j = 0; j < len; ++j)
            if(were_added[argv[i][j]] == 0)
                {
                ++symbs[argv[i][j]];
                were_added[argv[i][j]] = 1;
                }
        for(int k = 0; k < 128; were_added[k++] = 0);
        }
 
    int maxcode = 0, max_occurence = symbs[0];
    for(int i = 1; i < 128; ++i)
        if(symbs[i] > max_occurence)
            {
            maxcode = i;
            max_occurence = symbs[i];
            }
    return maxcode;
    }
0
YusipovIlsur
11 / 11 / 2
Регистрация: 17.12.2010
Сообщений: 52
23.02.2011, 19:00  [ТС] #3
спасибо конечно, но не мог бы чуток пояснить свой код, а то я его вкурить не могу
какой у тебя общий принцип?
1
Ma3a
Эксперт С++
618 / 462 / 31
Регистрация: 28.01.2011
Сообщений: 605
23.02.2011, 19:08 #4
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
31
32
33
34
char getcode(int argc, char * argv[])
    {
    // массив, в котором хранится количество вхождений определенного символа по всем словам
    static char symbs[128];
    // используется в цикле, чтобы следить за тем, чтобы
    // игнорировались все вхождения символа в слове , кроме самого первого
    static char were_added[128];
 
    for(int i = 1; i < argc; ++i)
        {
        // идем по всем аргументам командной строки
        for(int len = strlen(argv[i]),j = 0; j < len; ++j)
            if(were_added[argv[i][j]] == 0)
                { // если раньше символ не встречался в слове
                // увеличиваем количество вхождений для него и делаем пометку 
                // игнорировать последующие вхождения для этого слова
                ++symbs[argv[i][j]];
                were_added[argv[i][j]] = 1;
                }
        // перед тем, как перейти к следующему слову, очищаем пометки для каждого символа
        for(int k = 0; k < 128; were_added[k++] = 0);
        }
 
    // просто ищем максимальный элемент в symbs ( наибольшее число вхождений по строкам )
    // и запоминаем индекс этого элемента ( код символа )
    int maxcode = 0, max_occurence = symbs[0];
    for(int i = 1; i < 128; ++i)
        if(symbs[i] > max_occurence)
            {
            maxcode = i;
            max_occurence = symbs[i];
            }
    return maxcode;
    }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2011, 19:08
Привет! Вот еще темы с ответами:

Алгоритм - C++
Целый день пишу программу.Дедлайн:завтра сдавать.Чувствую по моему алгоритму я не успею. Задание: Создать файл записей с полями:...

Алгоритм - C++
Найти сумму (∑_(i=1)^n▒a_(i^2 ) )mod k с помощью алгоритма for_each

алгоритм бм - C++
кто может написать алгоритм БМ

алгоритм - C++
есть колода 36 карт, берут по 3 карты, если 2 последние одного цвета- их выкидывают, и так до конца колоды, проход делают 3 раза, ...


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

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

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