<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>fxposter&#039;s wave &#187; Classes</title>
	<atom:link href="http://blog.fxposter.org/tag/classes/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fxposter.org</link>
	<description>Stories about Ruby, JavaScript, Objective-C and other cool tools</description>
	<lastBuildDate>Sun, 30 Oct 2011 20:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>C++ Classes: Keyboard</title>
		<link>http://blog.fxposter.org/2007/06/06/c-classes-keyboard/</link>
		<comments>http://blog.fxposter.org/2007/06/06/c-classes-keyboard/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 23:41:22 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Keyboard]]></category>
		<category><![CDATA[WinAPI]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/06/06/c-classes-keyboard/</guid>
		<description><![CDATA[Последняя лабораторная по &#8220;Архитектуре ЭВМ&#8221; - это был отжиг. Один из преподов (которому мы эту работу должны были сдать) долго болел и на наших занятих был всего пару раз. После того, как он &#8220;отболел&#8221;, он появился у нас на уроке, начал наезжать, что мы всей группой нифига не сдаем (офигенно просто, особенно если учитывать, что [...]]]></description>
			<content:encoded><![CDATA[<p>Последняя лабораторная по &#8220;Архитектуре ЭВМ&#8221; - это был отжиг. Один из преподов (которому мы эту работу должны были сдать) долго болел и на наших занятих был всего пару раз. После того, как он &#8220;отболел&#8221;, он появился у нас на уроке, начал наезжать, что мы всей группой нифига не сдаем (офигенно просто, особенно если учитывать, что сдавать некому было), пугал тем, что нас расформируют как группу и все мы перейдем под его кураторство (он куратор в параллельной группе).</p>
<p>После наездов препод огласил наконец - что именно он от нас хочет на лабораторной, а именно - низкоуровневого программирования (работа с каким-нибудь устройством), и желательно на ассемблере. Попытки доказать ему, что ни одна современная ОС не даст нам напрямую соединится с устройством, он мне выдал замечательнейшую фразу - &#8220;загружайтесь с дискеты под дос и программируйте&#8221;. Это была жесть.</p>
<p>Сейчас он немного успокоился и без проблем принимает лабораторные на WinAPI (которого, как мне показалось, он вообще не знает).</p>
<p>Так как выбор был небольшой (особо парится не хотелось)  - сделал программу для &#8220;работы&#8221; с клавиатурой. Смотрите сами. :)  В файлах - класс работы с клавиатурой (обертка для некоторых функций из WinAPI), builder&#8217;овский проект (мне влом разбираться, что здесь нужно, а что нет - выкладываю весь проект, ну и exe&#8217;шник.</p>
<p>Файлы: <a href="http://blog.fxposter.org/wp-content/uploads/2007/06/keyboard.rar">source (keyboard.h)</a>, <a href="http://blog.fxposter.org/wp-content/uploads/2007/06/keyboardbuilder.rar">source (builder project)</a>, <a href="http://blog.fxposter.org/wp-content/uploads/2007/06/keyboard.exe">exe</a>.</p>
<p><em><strong>PS</strong>. Ближе к вечеру сегодня появится еще одна лаба. :) </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/06/06/c-classes-keyboard/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>C++ Classes: Graph</title>
		<link>http://blog.fxposter.org/2007/06/06/c-classes-graph/</link>
		<comments>http://blog.fxposter.org/2007/06/06/c-classes-graph/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 23:24:26 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Graph]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/06/06/c-classes-graph/</guid>
		<description><![CDATA[После долгого отдыха от универа (как-то странно получилось, я на полтора месяца забил на домашние задания), возвращаюсь к программированию. Последняя лабораторная работа по &#8220;Абстрактным Типам Данных&#8221; (предмет на самом деле называется не так, но по сути на нем преподают как раз АТД) - класс графа. Описание и вся документация по графу - в исходниках. Если [...]]]></description>
			<content:encoded><![CDATA[<p>После долгого отдыха от универа (как-то странно получилось, я на полтора месяца забил на домашние задания), возвращаюсь к программированию. Последняя лабораторная работа по &#8220;Абстрактным Типам Данных&#8221; (предмет на самом деле называется не так, но по сути на нем преподают как раз АТД) - класс графа.</p>
<p>Описание и вся документация по графу - в исходниках. Если нужно - могу выложить HTML&#8217;ные странички, сгенерированные cpp-doc&#8217;ом, хотя вы и сами можете сделать их. ;)</p>
<p>Так как это лаба модульная (к ней нужно делать отчет и прочее) - пришлось соорудить на скорую руку простенький GUI (делал в Borland C++ Builder), показывающий некоторые возможности графа. Его исходники я не выкладываю, они вряд ли будут кому-то интересны.</p>
<p>Файлы: <a href="http://blog.fxposter.org/wp-content/uploads/2007/06/graph.rar">source</a>, <a href="http://blog.fxposter.org/wp-content/uploads/2007/06/graphgui.exe">gui (exe)</a>.<a href="http://blog.fxposter.org/wp-content/uploads/2007/06/graphgui.exe" title="Гуи для графа"> </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/06/06/c-classes-graph/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C++ Classes: Search Tree, Hash Table</title>
		<link>http://blog.fxposter.org/2007/04/13/c-classes-search-tree-hash-table/</link>
		<comments>http://blog.fxposter.org/2007/04/13/c-classes-search-tree-hash-table/#comments</comments>
		<pubDate>Fri, 13 Apr 2007 15:09:31 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Hash-Table]]></category>
		<category><![CDATA[Search-Tree]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/04/13/c-classes-search-tree-hash-table/</guid>
		<description><![CDATA[Еще две лабораторные работы: бинарное дерево поиска и хеш таблица (хеш-таблица еще не документирована). Исходники и примеры работы с классами - далее по тексту. Пример работы с деревом: #include &#60;iostream&#62; #include "tree.h" void echo(fx::Node&#60;int, int&#62;&#38; node) { std::cout &#60;&#60; node.value() &#60;&#60; '\n'; } int main() { fx::Tree&#60;int, int&#62; t(1, 3); t.add(5, 2); t.add(2, 2); t.add(8, [...]]]></description>
			<content:encoded><![CDATA[<p>Еще две лабораторные работы: бинарное дерево поиска и хеш таблица (<em>хеш-таблица еще не документирована</em>).</p>
<p>Исходники и примеры работы с классами - далее по тексту.</p>
<p><span id="more-94"></span>Пример работы с деревом:</p>
<pre><code class="cpp">#include &lt;iostream&gt;
#include "tree.h"

void echo(fx::Node&lt;int, int&gt;&amp; node)
{
    std::cout &lt;&lt; node.value() &lt;&lt; '\n';
}

int main()
{
    fx::Tree&lt;int, int&gt; t(1, 3);
    t.add(5, 2);
    t.add(2, 2);
    t.add(8, 10);
    t.add(15, -10);
    t.add(12, 5);
    t.add(20, 15);
    t.add(16, 2);
    t.add(30, 2);
    t.add(25, 20);
    t.add(35, 230);
    t.add_to_root(111, 1);
    t.remove(35);
    t.remove(25);

    // выводим с помощью итератора
    for(fx::Tree&lt;int, int&gt;::iterator_depth i = t.begin_depth(); i != t.end_depth(); ++i)
    {
        std::cout &lt;&lt; *i &lt;&lt; '\n';
    }
    std::cout &lt;&lt; '\n';

    // выводим с помощью итератора
    for(fx::Tree&lt;int, int&gt;::iterator_width i = t.begin_width(); i != t.end_width(); ++i)
    {
        std::cout &lt;&lt; *i &lt;&lt; '\n';
    }
    std::cout &lt;&lt; '\n';
    // доступ к корню
    std::cout &lt;&lt; t.root()-&gt;key() &lt;&lt; '\n';
    // поиск по ключу
    std::cout &lt;&lt; t.find(30).value() &lt;&lt; '\n';

    // подсчет количества различиных узлов в дереве
    std::cout &lt;&lt; t.count() &lt;&lt; '\n';
    std::cout &lt;&lt; t.count_if(&amp;fx::Node&lt;int, int&gt;::leaf) &lt;&lt; '\n';
    std::cout &lt;&lt; t.count_if(&amp;fx::Node&lt;int, int&gt;::node_one) &lt;&lt; '\n';
    std::cout &lt;&lt; t.count_if(&amp;fx::Node&lt;int, int&gt;::node_two) &lt;&lt; '\n';

    // подсчет количества различиных узлов на каждом уровне дерева
    for(unsigned int i = 0; i &lt; t.height(); ++i)
    {
        std::cout &lt;&lt; t.on_level(i) &lt;&lt; '\t'
                      &lt;&lt; t.on_level_if(i, &amp;fx::Node&lt;int, int&gt;::leaf)&lt;&lt; '\t'
                      &lt;&lt; t.on_level_if(i, &amp;fx::Node&lt;int, int&gt;::node_one) &lt;&lt; '\t'
                      &lt;&lt; t.on_level_if(i, &amp;fx::Node&lt;int, int&gt;::node_two) &lt;&lt; '\n';
    }

    // высота и максимальная ширина дерева
    std::cout &lt;&lt; t.height() &lt;&lt; '\n';
    std::cout &lt;&lt; t.width() &lt;&lt; '\n';

    // является ли дерево деревом поиска
    // для всех узлов: ключ правого подузла больше ключа узла
    // и ключ левого подузла меньше ключа узла
    std::cout &lt;&lt; t.search_tree() &lt;&lt; '\n';

    // длины наибольшего вырожденного и полного поддеревьев
    std::cout &lt;&lt; t.degenerated() &lt;&lt; '\n';
    std::cout &lt;&lt; t.full() &lt;&lt; '\n';

    // обходы, выполняется функция echo для каждого узла: echo(узел)
    t.infix_traverse(echo);
    t.prefix_traverse(echo);
    t.postfix_traverse(echo);
    t.width_traverse(echo);

    return 0;
}</code></pre>
<p>Пример работы с хеш-таблицей:</p>
<pre><code class="cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include "hash.h"

unsigned int hash(const std::string&amp; str)
{
    unsigned int k = 0;
    for(unsigned int i = 0; i &lt; str.size(); ++i)
    {
        k *= str[i];
        k %= 1009;
    }
    return k;
}

unsigned int hash2(const std::string&amp; str)
{
    unsigned int k = 0;
    for(unsigned int i = 0; i &lt; str.size(); ++i)
    {
        k *= str[i];
        k %= 1099;
    }
    return k;
}

int main()
{
    fx::HashTable&lt;std::string, int&gt; h(&amp;hash, 1009);
    h.add("Петя the best", 0);
    h.add("Петя2 the best", 0);
    h.add("Петя the best3", 0);
    h.add("Вася", 1);
    h.add("Вася the best", 0);
    h.remove("Вася the best");

    // выводим значение, соответствующее ключу "Вася" - 1
    std::cout &lt;&lt; h["Вася"].value() &lt;&lt; '\n';

    // присваеваем записи в таблице с ключем "Вася" значение 20
    h["Вася"] = 20;

    // выводим значение, соответствующее ключу "Вася" - 20
    std::cout &lt;&lt; h["Вася"].value() &lt;&lt; '\n';

    // количество записей в таблице на данный момент
    std::cout &lt;&lt; h.size();

    // проверка - пустая ли таблица
    std::cout &lt;&lt; h.empty();

    // степень заполненности таблицы (0...1)
    std::cout &lt;&lt; h.full_percent() &lt;&lt; '\n';

    // меняем размер таблицы
    h.rehash(&amp;hash2, 1099);

    // и опять смотрим степень заполненности
    std::cout &lt;&lt; h.full_percent() &lt;&lt; '\n';

    // выводим значение, соответствующее ключу "Вася"
    std::cout &lt;&lt; h["Вася"].value() &lt;&lt; '\n';

    return 0;
}</code></pre>
<p>Файлы: <a href="http://blog.fxposter.org/wp-content/uploads/2007/04/tree.h" title="Search Tree">Search Tree</a>, <a href="http://blog.fxposter.org/wp-content/uploads/2007/04/hash.h" title="Hash Table">Hash Table</a>, <a href="http://blog.fxposter.org/wp-content/uploads/2007/04/exception.h" title="Exception">Exception</a> (нужен для работы остальных).</p>
<p><em><strong>PS</strong>. Для работы хеш-таблицы дерево тоже нужно.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/04/13/c-classes-search-tree-hash-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: blog.fxposter.org @ 2012-02-10 05:48:45 -->
