Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Сравнение производительности программ для подсчета слов.

Posted on 6 апреля, 20136 апреля, 2013 by admin

Сравните производительность программы подсчета слов из параграфа 11.8 по сравнению с программой, не использующей ассоциативного массива. В обоих случаях используйте одинаковый ввод/вывод.

Ну это походу должна быть легкая задачка, да не быть, а есть легкая задачка. По крайней мере понятная более менее.

Щас вам покажу программу из параграфа 11.8, токо там я как бы ее оформил в класс Map но я думаю на производительность это не повлияет вот ее код файл main.cpp:

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
//programma dl9 podccheta clov
//klacc Map na ocnove klacca Assoc
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <vector>
using std::vector;
#include <string>
using std::string;
#include <cstdlib>
using std::exit;
 
template<typename C>
class Assoc
{
struct Pair
{
C name;
double val;
Pair(C n=" ",double v=0):name(n),val(v){}
};
vector<Pair> vec;
Assoc(const Assoc&);//private-dl9 predotvracheni9 kopirovani9
Assoc& operator=(const Assoc&);//private-dl9 predotvracheni9 kopirovani9
int index;
public:
Assoc():index(0){}
const double& operator[](const C&);
double& operator[](C&);
void print_all() const;
double operator*()
{
//cout <<"mu v razumenovanii"<<endl;
typename vector<Pair>::iterator p=vec.begin();
p+=index;
return p->val;
}
double operator++()
{
typename vector<Pair>::iterator p=vec.begin();
index++;
p+index;
return p->val;
}
void begin()
{
index=0;
}
bool end()
{
//cout <<endl<<vec.size()<<' '<<index<<endl;
if(index==vec.size())
return false;
return true;
}
};
 
template<typename C>
double& Assoc<C>::operator[](C& s)
{
for(typename vector<Pair>::iterator p=vec.begin();p!=vec.end();++p)
if(s==p->name)return p->val;
vec.push_back(Pair(s,0));//nachal6noe znachenie 0
return vec.back().val;//vozvrat poclednego elementa
}
 
template<typename C>
void Assoc<C>::print_all() const
{
for(typename vector<Pair>::const_iterator p=vec.begin();p!=vec.end();++p)
cout <<p->name<<" : "<<p->val<<'\n';
}
 
//cozdaem klacc Map na ocnove Assoc
template<typename C>
class Map : public Assoc<C>
{
public:
Map(){}
};
 
int main()
{
string buf;
Map<string> vec;
while(cin >>buf)
{
vec[buf]++;
vec.print_all();
}
return 0;
}

Так с ней мы разобрались, а теперь нам нужно построить вручную программу для подсчета слов, то есть на обычных функциях, та я даже не знаю как сказать просто взять предложение разбить его на слова записать уникальные слова в массив строк, затем проверить частоту встречи того или иного слова и записать в int массив эту частоту. Как то так. Ну впринципе задача предельно ясна. Поехали.

Как окозалось простенькая программка и быстро я ее сделал. Файл main2.cpp:

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
//programma dl9 podcheta clov bez acociativnogo macciva
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <string>
using std::string;
 
int main()
{
//string s="hellow world gacpada hellow";
string s;
int mass[200]={0};
string massS[200];
while(cin >>s)
{
//cout <<s<<endl;
int flag=0;
int i=0;
for(;massS[i]!="";i++)
{
if(massS[i]==s)
{
mass[i]++; //naideno covpadenie
flag++;
}
}
if(flag==0)
{
massS[i]=s;
mass[i]++;
}
//vuvod rezyl6tatov
for(i=0;massS[i]!="";i++)
{
cout <<massS[i]<<' '<<mass[i]<<endl;
}
}
return 0;
}

Производительность мне конечно не охота проверять. Да я думаю она будет примерно одинаковой язык то быстрый, да и для тех программ которые как бы я пишу, я вообще гамно программки пишу мелочь, короче не стоящие, да и уровень так сказать мой низки. Так что производительность для меня можно сказать на последнем месте. Щас посмотрим решусь ли я проверить производительность.? Мб щас и проверим это не сложно. Даже если честно интересно проверить.

Да не будем мы проверять производительность это ни к чему.

[youtube]http://www.youtube.com/watch?v=tl72gGg3IyA[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant