Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Вместо включения используйте закрытое наследование https://www.cyberforum.ru/ cpp-beginners/ thread1233787.html
Здравствуйте. Изучаю С++ по книге Прата С. "Язык программирования С++. Лекции и упражнения". Столкнулся с проблемой. Есть задание: Выполните еще раз упражнение 1, но вместо включения используйте закрытое наследование. Здесь также могут пригодиться несколько объявлений typedef. Подумайте, как можно применить следующие операторы: PairArray::operator=(PairArray(Arraylnt() , Arraylnt())); ...
C++ Обеспечить работу приложения с БД Firebird на других ПК
Добрый день. Есть программа с бд на firebird, как скомпилировать программу так, что бы на компьютере где нет firebird она запускалась и работала?
C++ Изучение С++ с нуля Всем привет. Вчера зарегистрировался на форуме. Хочу изучить C++, но нет никаких знаний в этом направлении. Какие книги можно почитать абсолютному начинающему, который вообще не в курсе что такое программирование??? Как изучить C++ основательно, чтоб без пробелов? может начать с математики. короче у вас большой опыт. помогите... особыми умственными способностями, мягко говоря, не обладаю.... https://www.cyberforum.ru/ cpp-beginners/ thread1233756.html C++ Конкатенация строк: Зачем строки создаются в динамической памяти? Есть программа, которая делает конкатенацию строк. #include <iostream> using namespace std; char* Concatenate(char* string1, char* string2) { int lengthString1 = GetLength(string1); int lengthString2 = GetLength(string2); int lengthString3 = lengthString1 + lengthString2; int charString1 = 0; https://www.cyberforum.ru/ cpp-beginners/ thread1233750.html
C++ Помогите найти ошибку в решении биквадратного уравнения
Здравствуйте,написал код,проблема в том,если выполняется строка 31,то и всегда будет выполнятся строка под номером 39,как это исправить? писал по алгоритму,должно быть все правильно. Программа работает хорошо,только выводит на экран пару лишних иксов. Для примера можно взять 4(x^4)- 5(x^2)+1=0. Ответ равен 1, -1, 0.5, -0.5; у меня выбивает следующие: x1=1; x2=-1; x3=0.5; x4=-0.5; x1=-1; x2=1; -...
C++ Как обратиться к свойству класса Нубский вопрос, вот код: #include "stdafx.h" #include <iostream> using namespace std; class HelloClass https://www.cyberforum.ru/ cpp-beginners/ thread1233666.html
C++ Выяснить, сколько бюллетеней осталось необработанными https://www.cyberforum.ru/ cpp-beginners/ thread1233631.html
В стране Виртландии раз в пять лет проходят выборы президента. И каждый раз после завершения голосования появляется необходимость подсчитать результаты. Рассмотрим процесс обработки бюллетеней в Виртландии. Всего в Виртландии голосуют n человек, соответственно необходимо обработать n бюллетеней, которые пронумерованы от 1 до n. Обработка длится k дней. Каждый день члены избирательной комиссии...
Преобразование string в long double C++
Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для денежных значений, такого, как $173 698 001,32. Такой денежный тип должен иметь возможность для хранения числа с фиксированной десятичной точкой точностью около 17 знаков, которого было бы достаточно для хранения национального долга в долларах и цен- тах. К счастью, встроенный тип C++ long double имеет...
C++ Нахождение среднего значения дробей Напишите функцию main(), которая получает случайные дробные числа от пользователя, сохраняет их в массиве типа fraction, вычисляет среднее значение и выводит результат. т.е. пользователь вводит к примеру 1/2, 2/3, 3/4, 4/5 а в ответ получает среднее значение 419/720 программа работает неправильно, выводит ноли. где ошибка? #include "stdafx.h" #include <iostream> #include <cmath>... https://www.cyberforum.ru/ cpp-beginners/ thread1233586.html C++ Получить последовательность число цифр которой равно знаменателю, а сумма этих цифр -числителю Доброго всем времени суток!Пожалуйста помогите сформировать вектор. Дана правильная несократимая дробь нужно получить последовательность число цифр которой равно знаменателю,а сумма этих цифр -числителю.Напечатать в виде 1.1.2.1.2; Вот мой вариант. #include <iostream> #include <stdlib.h> #include <vector> #include <algorithm> #include <iterator> #include <iomanip> https://www.cyberforum.ru/ cpp-beginners/ thread1233576.html
C++ Массивы. Классы. Нахождение среднего значения дробей
Напишите функцию main(), которая получает случайные дробные числа от пользователя, сохраняет их в массиве типа fraction, вычисляет среднее значение и выводит результат. т.е. пользователь вводит к примеру 1/2, 2/3, 3/4, 4/5 а в ответ получает среднее значение 419/720 программа работает неправильно, выводит ноли. где ошибка? #include "stdafx.h" #include <iostream> #include <cmath>...
C++ Функция должна возвращать новый массив, состоящий из отрицательных элементов исходного массива У меня есть задание: написать функцию (процедуру) с параметрами для обработки одномерного массива целочисленных данных (колич
224 / 224 / 38
Регистрация: 17.12.2010
Сообщений: 713
0

Поиск популярного триплета. Конструктивная критика - C++ - Ответ 6460649

25.07.2014, 13:46. Показов 2098. Ответов 13
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Недавно помогал решать задачу про триплеты, и захотелось услышать критики по своему коду . все-таки только учусь, и она я считаю будет полезной.

в первую очередь, хотелось бы услышать: конструктивную критику по коду, советы по улучшению быстродействия алгоритма, может вообще другой алгоритм , ну а потом остальное.

принципи тут все простое.. но .. вот что-то захотелось)))

ремарка:
Кликните здесь для просмотра всего текста

среда разработки MSVC 2010, к тому что, новый стандарт немного не проканает.
опустим спор про namespace std, просто было лень писать каждый раз
Кодировка: Multi-Byte


задача:
Кликните здесь для просмотра всего текста
найти самый популярный триплет (сочетание трех соседних букв в слове) и количество его повторений в строке.


код:
Кликните здесь для просмотра всего текста
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <tchar.h>
#include <string>
#include <Windows.h>
#include <iostream>
 
#include <vector>
#include <map>
#include <algorithm>
 
using namespace std;
 
const size_t g_triplet_lenght = 3; //длина триплета
 
//замена всех символов "не букв", на пробел
void replace_sym_to_space(string __inout &str)
{
    auto iRepl = str.begin();
    while(iRepl!= str.end())
    {
        if(IsCharAlpha(*iRepl) == 0)
            *iRepl = ' ';
        ++iRepl;
    }
}
 
//разбить строку по разделителю
void split(const string& __in text, vector<string>& __inout words, const char __in delim = ' ')
{ 
    words.clear();
    string lower_text(text);
 
    transform(lower_text.begin(), lower_text.end(), lower_text.begin(),tolower);
 
    TCHAR* pTempStr = strdup(lower_text.c_str()); 
    TCHAR* pWord = _tcstok(pTempStr,&delim); 
    
    while(pWord != NULL)
    {
        if(_tcsclen(pWord) >= g_triplet_lenght)
            words.push_back(pWord);
        pWord = _tcstok(NULL, &delim);     
        
    }
    free(pTempStr); 
}
 
//создает словарь триплетов с подсчетом количества повторений
void CreateTriplets(const string __in text, map<string,size_t> __out &triplets) 
 {
     triplets.clear();
     string tempStr(text);
     replace_sym_to_space(tempStr);
 
     //создаем список слов с длинной больше 2 символов
     vector<string> words;
     split(tempStr,words);
     auto iter = words.begin();
     while(iter!= words.end())
     {
         string temp(*iter);
         size_t len = temp.length();
        
         //разбиение слова на триплеты;
         //помещение и подсчет в словарь триплетов
         while(len >= g_triplet_lenght)
         {
             string trpl = temp.substr(0,3);
 
             auto iterF = triplets.find(trpl);
             if(iterF != triplets.end())
                (*iterF).second =++(*iterF).second;
             else
                 triplets.insert(make_pair(trpl,1));
             
             temp = temp.substr(1);
             len = temp.length();
         }
         ++iter;
     }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"RUS");
 
    const string input_string = "Карл у Клары украл кораллы, а Клара у Карла украла кларнет";
    cout <<"Входная строка: "<<endl << input_string<<endl<<endl;
    map<string,size_t> dictionary;
    CreateTriplets(input_string,dictionary);
 
    //поиск максимально повторяющихся триплетов
    size_t max_value = max_element(dictionary.begin(),dictionary.end(),
            [](const pair<string,size_t> &left,const pair<string,size_t> &right){return left.second < right.second;}
        )->second;
    
    for(auto iOutPut = dictionary.begin(); iOutPut != dictionary.end();++iOutPut)
    {
        if((*iOutPut).second == max_value)
            cout << "Триплет: " << (*iOutPut).first<< "; Количество повторений: "<<(*iOutPut).second<<endl;
    }
    
    cout <<endl;
    system("pause");
    return 0;
}


Вернуться к обсуждению:
Поиск популярного триплета. Конструктивная критика C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2014, 13:46
Готовые ответы и решения:

Нужна конструктивная критика
Добрый день, форумчане. Я только сегодня начал проходить ООП. С указателями еще не подружился. ...

Требуется конструктивная критика
Я не волшебник, только учусь. Для обучения выбрал алгоритм поиска пути A*. Вот собственно моя...

Нужна конструктивная критика: советы, замечания по заданному фрагменту кода
Есть входные данные, которые я кладу в вектор 5 1 2 3 4 5 Ваша критика #include...

Нужна конструктивная критика по оформлению и читабельности кода (Game Trainer C++)
Относительно недавно начал изучать C++. Для обучения решил написать трейнер попутно изучая...

13
25.07.2014, 13:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2014, 13:46
Помогаю со студенческими работами здесь

Нужна конструктивная критика: удалось ли мне уловить хоть частицу ООП в моём проекте?
Добрый день, дорогие форумчане. Меня, как и многих, волнует мое будущее, и поэтому же меня волнует...

Собственная реализация паттерна "Слушатель" - нужна конструктивная критика
Добрый день, наворотил код по работе с паттерном слушатель - есть класс контейнер данных и при...

Нужна конструктивная критика
Недавно залил сайт (удалено топикстартером). Нужна оценка со стороны, в разделе &quot;СТЕНДЫ&quot; категория...

Необходима конструктивная критика
Создал на джумле свой первый сайт - _companytop.ru. Для этого взял бесплатный шаблон и немножко...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru