<?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>Felipe Tonello &#187; C</title>
	<atom:link href="http://felipetonello.com/blog/category/programacao/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://felipetonello.com/blog</link>
	<description>Compartilhe, ajude e cresça</description>
	<lastBuildDate>Thu, 29 Jul 2010 20:35:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>looong #fail no GCC</title>
		<link>http://felipetonello.com/blog/2010/07/29/looong-fail-no-gcc/</link>
		<comments>http://felipetonello.com/blog/2010/07/29/looong-fail-no-gcc/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 17:34:25 +0000</pubDate>
		<dc:creator>Felipe Tonello</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Diversos]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[diversão]]></category>

		<guid isPermaLink="false">http://felipetonello.com/blog/?p=313</guid>
		<description><![CDATA[O uso do long long como tipo de dado foi introduzido no padrão ISO C99. Isso acabou gerando uma revolta na comunidade acadêmica que achava o cúmulo ter de usar long long ao invéz de um nome específico, argumentando &#8220;qual será a próxima? long long long, long long long long &#8230; &#8220;. Bom, o que [...]]]></description>
			<content:encoded><![CDATA[<p>O uso do <strong>long long</strong> como tipo de dado foi introduzido no padrão ISO C99. Isso acabou gerando uma revolta na comunidade acadêmica que achava o cúmulo ter de usar long long ao invéz de um nome específico, argumentando <em>&#8220;qual será a próxima? long long long, long long long long &#8230; &#8220;</em>.</p>
<p>Bom, o que parece é que o pessoal do GCC também não foi muito com a cara desse long long não.</p>
<div id="attachment_314" class="wp-caption alignnone" style="width: 484px"><a href="http://felipetonello.com/blog/wp-content/uploads/2010/07/long.jpg"><img class="size-full wp-image-314 " title="long long long no gcc" src="http://felipetonello.com/blog/wp-content/uploads/2010/07/long.jpg" alt="long long long no gcc" width="474" height="177" /></a><p class="wp-caption-text">long long long #fail no gcc</p></div>
<p>#FAIL para a ISO C99 ou pro GCC? Fica a dúvida.</p>
]]></content:encoded>
			<wfw:commentRss>http://felipetonello.com/blog/2010/07/29/looong-fail-no-gcc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problema 3n + 1 no UVa</title>
		<link>http://felipetonello.com/blog/2010/06/09/problema-3n-1-no-uva/</link>
		<comments>http://felipetonello.com/blog/2010/06/09/problema-3n-1-no-uva/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 04:28:44 +0000</pubDate>
		<dc:creator>Felipe Tonello</dc:creator>
				<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Artigos]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[desafios]]></category>
		<category><![CDATA[Matemática]]></category>

		<guid isPermaLink="false">http://felipetonello.com/blog/?p=262</guid>
		<description><![CDATA[Esse é um dos problemas mais simples que tem no UVa mas ao mesmo tempo é muito interessante. O problema 3n + 1, também chamado de Conjectura de Collatz, é um problema da matemática que nunca foi resolvido. Basicamente é o seguinte: Se o número é par, então divida por dois. Se o número é ímpar, [...]]]></description>
			<content:encoded><![CDATA[<p>Esse é um dos problemas mais simples que tem no UVa mas ao mesmo tempo é muito interessante. O <a title="The 3n + 1 problem no UVa" href="http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;Itemid=8&amp;category=29&amp;page=show_problem&amp;problem=36">problema 3n + 1</a>, também chamado de <a title="Collatz conjecture" href="http://en.wikipedia.org/wiki/Collatz_conjecture">Conjectura de Collatz</a>, é um problema da matemática que nunca foi resolvido.</p>
<p>Basicamente é o seguinte:</p>
<ul>
<li>Se o número é par, então divida por dois.</li>
<li>Se o número é ímpar, então multiplique por três e some por um.</li>
<li><img src="http://felipetonello.com/blog/wp-content/cache/tex_e8b68fc7245bcafe5083d2a67633c0aa.png" align="absmiddle" class="tex" alt="f(n) = \begin{cases} n/2 &amp;\mbox{se } n \equiv 0 \pmod{2}\\ 3n+1 &amp; \mbox{se } n\equiv 1 \pmod{2} \end{cases}" /></li>
</ul>
<p>Agora que temos a função definida, vamos realizar essa operação repetidamente, começando com um inteiro positivo e depois usando o resultado em cada passo:</p>
<p><img src="http://felipetonello.com/blog/wp-content/cache/tex_9c0ffc5ad934a56cc5901a45b4563abc.png" align="absmiddle" class="tex" alt="a_i = \begin{cases}n &amp; \mbox{para } i = 0 \\ f(a_{i-1}) &amp; \mbox{para } i &gt; 0. \end{cases}" /></p>
<p>O interessante é que essa seqüência parece sempre resultar em <img src="http://felipetonello.com/blog/wp-content/cache/tex_f07b42bd953c13cc8a80408ac049d7d2.png" align="absmiddle" class="tex" alt="a_i = 1" />.</p>
<h2>Programando</h2>
<p>O <a href="http://uva.onlinejudge.org/external/1/100.html">desafio enunciado no UVa Online Judge</a> pede para se contar o maior número de <a href="http://en.wikipedia.org/wiki/Collatz_conjecture#m-cycles">m-cíclos</a> em um determinado intervalo de inteiros <em>n, m</em>.</p>
<p>Como eu gosto de coisas simples, fiz um algoritmo em C bem simples. Não recomendo <a title="3n + 1 em C++" href="http://www.lukejduncan.com/2009/08/uva---100---3n1-problem.php">algoritmo complexos</a>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> collatz<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> n<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>n <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>n <span style="color: #339933;">%</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
			n <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">3</span><span style="color: #339933;">*</span>n<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">else</span>
			n <span style="color: #339933;">=</span> n<span style="color: #339933;">/</span><span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">++</span>i<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> i<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #993333;">const</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">,</span> j<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>scanf<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d %d&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>i<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>j<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #993333;">int</span> i2<span style="color: #339933;">,</span> j2<span style="color: #339933;">,</span> k<span style="color: #339933;">;</span>
		<span style="color: #993333;">int</span> max <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>j <span style="color: #339933;">&lt;</span> i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			i2 <span style="color: #339933;">=</span> j<span style="color: #339933;">;</span>
			j2 <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			i2 <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
			j2 <span style="color: #339933;">=</span> j<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>k <span style="color: #339933;">=</span> i2<span style="color: #339933;">;</span> k <span style="color: #339933;">&lt;=</span> j2<span style="color: #339933;">;</span> <span style="color: #339933;">++</span>k<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #993333;">int</span> atual <span style="color: #339933;">=</span> collatz<span style="color: #009900;">&#40;</span>k<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>max <span style="color: #339933;">&lt;</span> atual<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				max <span style="color: #339933;">=</span> atual<span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d %d %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> i<span style="color: #339933;">,</span> j<span style="color: #339933;">,</span> max<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>ou pelo <a href="http://pastebin.com/F4kSgPvz">pastebin</a></p>
<p>Testando as seguintes entradas<br />
<code>1 10<br />
100 200<br />
201 210<br />
900 1000<br />
1 999999<br />
1000 900</code></p>
<p>temos<br />
<code>1 10 20<br />
100 200 125<br />
201 210 89<br />
900 1000 174<br />
1 999999 476<br />
1000 900 174</code></p>
<p>Parece tudo certo! <img src='http://felipetonello.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Agora fica de exercício descobrir a complexidade desse algoritmo. <img src='http://felipetonello.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://felipetonello.com/blog/2010/06/09/problema-3n-1-no-uva/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>6º Encontro da comunidade de C e C++ Brasil</title>
		<link>http://felipetonello.com/blog/2010/01/21/6%c2%ba-encontro-da-comunidade-de-c-e-c-brasil/</link>
		<comments>http://felipetonello.com/blog/2010/01/21/6%c2%ba-encontro-da-comunidade-de-c-e-c-brasil/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 00:56:03 +0000</pubDate>
		<dc:creator>Felipe Tonello</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[RobotQt]]></category>

		<guid isPermaLink="false">http://felipetonello.com/blog/?p=252</guid>
		<description><![CDATA[Pessoal, dia 6 de Março de 2010 haverá o 6º encontro da comunidade brasileira de C e C++ em São Paulo. Eu tive o privilégio de ser convidado para palestrar sobre o RobotQt. O título da palestra é: Simulador de robótica com Qt Framework. Não perca esse evento. Faça a inscrição aqui!]]></description>
			<content:encoded><![CDATA[<p>Pessoal, dia 6 de Março de 2010 haverá o <a title="6º encontro da comunidade brasileira de C e C++" href="http://www.ccppbrasil.org/wiki/Grupo:Encontro_VI">6º encontro da comunidade brasileira de C e C++ em São Paulo</a>.</p>
<p>Eu tive o privilégio de ser convidado para palestrar sobre o <a href="http://robotqt.org">RobotQt</a>. O título da palestra é: <strong>Simulador de robótica com Qt Framework</strong>.</p>
<p>Não perca esse evento. Faça a inscrição <a title="Inscrição para o 6º encontro da comunidade brasileira de C e C++" href="http://www.temporealeventos.com.br/inscricoes/inscricoes.php?area=95&amp;form=367">aqui</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://felipetonello.com/blog/2010/01/21/6%c2%ba-encontro-da-comunidade-de-c-e-c-brasil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
