<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Algoritmicamente</title>
	<atom:link href="http://algoritmicamente.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://algoritmicamente.wordpress.com</link>
	<description>std::cout &#60;&#60; &#34;Algoritmicamente\n&#34;;</description>
	<lastBuildDate>Sat, 21 Jan 2012 19:13:06 +0000</lastBuildDate>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='algoritmicamente.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Algoritmicamente</title>
		<link>http://algoritmicamente.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://algoritmicamente.wordpress.com/osd.xml" title="Algoritmicamente" />
	<atom:link rel='hub' href='http://algoritmicamente.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Elemento canvas in HTML5: alcuni esempi</title>
		<link>http://algoritmicamente.wordpress.com/2011/06/20/elemento-canvas-in-html5/</link>
		<comments>http://algoritmicamente.wordpress.com/2011/06/20/elemento-canvas-in-html5/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 14:19:10 +0000</pubDate>
		<dc:creator>Finalfire</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=175</guid>
		<description><![CDATA[Codice liberamente consultabile di alcuni esempi d&#8217;uso dell&#8217;elemento canvas in HTML5. Random: questo esempio sfrutta la gestione degli eventi in Javascript per catturare il click del mouse e disegnare sul context delle forme quali cerchi o quadrati; sfrutta il costrutto rgba() e la codifica in base64 messa a disposizione da .toDataURL(); Canvas e Circle invece mostrano alcune [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=175&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Codice liberamente consultabile di alcuni esempi d&#8217;uso dell&#8217;elemento <a href="http://www.w3.org/TR/html5/the-canvas-element.html">canvas</a> in <a href="http://en.wikipedia.org/wiki/HTML5">HTML5</a>.</p>
<ul>
<li><a title="Random" href="http://www.francescocauteruccio.info/html5/canvas/random.html">Random</a>: questo esempio sfrutta la gestione degli eventi in Javascript per catturare il click del mouse e disegnare sul <strong>context </strong>delle forme quali cerchi o quadrati; sfrutta il costrutto <strong>rgba()</strong> e la codifica in base64 messa a disposizione da <strong>.toDataURL()</strong>;</li>
<li><a title="Canvas" href="http://www.francescocauteruccio.info/html5/canvas/canvas.html">Canvas</a> e <a title="Circle" href="http://www.francescocauteruccio.info/html5/canvas/circle.html">Circle</a> invece mostrano alcune delle funzioni base dell&#8217;elemento <strong>canvas </strong>unite a tecniche molto semplice di grafica 2D.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=175&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2011/06/20/elemento-canvas-in-html5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3269941053f8bd056be12246e32f6f63?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Finalfire</media:title>
		</media:content>
	</item>
		<item>
		<title>Matching elementare con le regexp in Perl</title>
		<link>http://algoritmicamente.wordpress.com/2010/04/21/matching-elementare-con-le-regexp-in-perl/</link>
		<comments>http://algoritmicamente.wordpress.com/2010/04/21/matching-elementare-con-le-regexp-in-perl/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 09:22:28 +0000</pubDate>
		<dc:creator>Finalfire</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[espressioni regolari]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[regexp]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=161</guid>
		<description><![CDATA[Sfogliando alcuni file ho trovato un listato con alcune regexp (espressioni regolari) molto banali per far pratica con il linguaggio interpretato Perl; posto di seguito il contenuto del file e le definizioni di alcuni simboli speciali, per chi necessità di una finestra veloce e semi-completa sull&#8217;utilizzo delle regexp usando il suddetto linguaggio.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=161&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sfogliando alcuni file ho trovato un listato con alcune regexp (<a href="http://it.wikipedia.org/wiki/Espressioni_regolari">espressioni regolari</a>) molto banali per far pratica con il linguaggio interpretato <a href="http://it.wikipedia.org/wiki/Perl">Perl</a>; posto di seguito il contenuto del file e le definizioni di alcuni simboli speciali, per chi necessità di una finestra veloce e semi-completa sull&#8217;utilizzo delle regexp usando il suddetto linguaggio.</p>
<p><span id="more-161"></span></p>
<p><pre class="brush: plain;">Simboli speciali
.     Indica un solo carattere di qualunque tipo ma non un carattere di newline (\n)
^     L'inizio di una linea/sequenza
$     La fine di uan linea/sequenza
*     Zero o più caratteri di qualunque tipo
+     Uno o più caratteri di qualunque tipo
?     Zero o un carattere di qualunque tipo
\n    Carattere di nuova linea
\t    Carattere di tabulazione
\s    Qualunque carattere di spazio, tabulazione, newline...
\w    Qualunque carattere alfanumerico (quindi qualunque carattere da 0~9 e da a~zA~Z)
\W    La negazione di \w
\d    Qualunque carattere numerico (quindi qualunque carattere da 0~9)
\D    La negazione di \d

Si possono creare dei pattern utilizzando le parentesi tonde () e la pipe | rappresentate l'unione (OR)
(ae)            Individua la stringa &quot;ae&quot;
(a|e)lollo      Individua la stringa &quot;alollo&quot; O la stringa &quot;elollo&quot;
(a|e+)lollo     Individua la stringa &quot;alollo&quot; O le stringhe &quot;elollo&quot;, &quot;eelollo&quot;, &quot;eeelollo&quot; etc...</pre></p>
<p><pre class="brush: perl;">#!/usr/bin/perl

my $in = open IN, &quot;&lt; text2.txt&quot; or die &quot;CANNOT&quot;;
@_ = &lt;IN&gt;;

if($in) {
 foreach (@_) {
 # /Piove.*assurdo/

 # /ho +le/i
 # cerca il pattern che inizia con 'ho', che continua con almeno 1 spazio e subito dopo 'le'

 # /in ?(.*)/i
 # cerca il pattern che inizia con 'in' e che può avere o non può avere
 # uno spazio subito dopo e continua con qualsiasi cosa

 # /(.)\1/i
 # cerca il pattern che contiene un qualsiasi carattere e che subito dopo
 # ha lo stesso carattere (\1 = ripetere l'elemento contenuto
 # nella parentesi numero 1; in questo caso, cerca le doppie)

 # /(.)(.)\2\1/i
 # cerca un pattern palindromo! abbiamo due caratteri (.)(.):
 # \2 significa che dobbiam trovare un pattern dove il carattere nella seconda parentesi
 # si ripete;
 # \1 significa che subito dopo la ripetizione della seconda parentesi si deve ripetere
 # il carattere nella prima parentesi
 # ESEMPIO: stringa ABBA
 # (.)(.) INDICA I NOSTRI PRIMI DUE CARATTERI: AB
 # \2 INDICA CHE IL CARATTERE B SI DEVE RIPETERE: ABB
 # \1 INDICA CHE IL CARATTERE A SI DEVE RIPETERE: ABBA

 # /(\w+):\s)/
 # cerca il pattern con una stringa prima del carattere : e subito dopo uno spazio;
 # la peculiarit di questo esempio è che la stringa prima del carattere sarà memorizzata in $1

 # /(\d)+\s?(?:\+|\-)\s?i\*?(\d)+/i
 # riconosce i numeri complessi nella forma: x+iy, x + iy o i*y

 if(/(\d)+\s?(?:\+|\-)\s?i\*?(\d)+/i) {
     print &quot;OK\n&quot;;
     print &quot;it matches on: &quot; . $_ . &quot;\n&quot;;
     print &quot;the variable was: $1 and $2\n&quot;;
 }
 }

} else {
 print &quot;DEAD&quot;;
}

close(IN);</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/161/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=161&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2010/04/21/matching-elementare-con-le-regexp-in-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3269941053f8bd056be12246e32f6f63?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Finalfire</media:title>
		</media:content>
	</item>
		<item>
		<title>Esercizio per studenti</title>
		<link>http://algoritmicamente.wordpress.com/2010/02/05/esercizio-per-studenti/</link>
		<comments>http://algoritmicamente.wordpress.com/2010/02/05/esercizio-per-studenti/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 13:02:25 +0000</pubDate>
		<dc:creator>Leviathan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[fondamenti di programmazione]]></category>
		<category><![CDATA[gioco dell'impiccato]]></category>
		<category><![CDATA[unical]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=157</guid>
		<description><![CDATA[Proponiamo il seguente esercizio con soluzione xD, che potrà essere utile per l&#8217;apprendimento del C++. Traccia: Costruire il gioco dell&#8217;impiccato. La parola da indovinare è data in input ed il numero di tentativi è fissato a 6. Inoltre, ad ogni tentativo, dovrà essere stampato il risultato parziale, dove nel caso in cui la lettera non [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=157&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Proponiamo il seguente esercizio con soluzione xD, che potrà essere utile per l&#8217;apprendimento del C++.</p>
<p>Traccia:<br />
<blockquote>Costruire il gioco dell&#8217;impiccato. La parola da indovinare è data in input ed il numero di tentativi è fissato a 6. Inoltre, ad ogni tentativo, dovrà essere stampato il risultato parziale, dove nel caso in cui la lettera non sia ancora stata &#8220;indovinata&#8221; dovrà essere stampato il carattere &#8216; &#8211; &#8216;.</p></blockquote>
<p><span id="more-157"></span></p>
<p><pre class="brush: cpp;">
#include &lt;iostream&gt;
using namespace std;

char input[1000];
int size=-1;
char lettura;
bool indovinati[1000]={0};
int tentativi=6;

bool presente(char input[], char lettura, int size, bool ind[]);

int main()
{
	cout&lt;&lt;&quot;Dammi parola terminata da '-'&quot;&lt;&lt;endl;
	cin&gt;&gt;lettura;

	while(lettura != '-')
	{	
		size++;
		input[size]=lettura;
		cin&gt;&gt;lettura;
	}
	if(size==-1)
		return 0;

	for(int i=0; i&lt;=size; i++)
		cout&lt;&lt;&quot; - &quot;;
		
	cout&lt;&lt;endl;
	cout&lt;&lt;&quot;Dammi lettura&quot;&lt;&lt;endl;
	cin&gt;&gt;lettura;
	while(tentativi != 0)
	{
		if(presente(input,lettura,size,indovinati))
		{
			for(int i=0; i&lt;=size; i++)
			{
				if(indovinati[i])
					cout&lt;&lt;input[i]&lt;&lt;&quot; &quot;;
				else
					cout&lt;&lt;&quot; - &quot;;
			}
			cout&lt;&lt;endl;

		}
		else
		{
			tentativi--;
			cout&lt;&lt;&quot;Tentativi rimamenti&quot;&lt;&lt;tentativi&lt;&lt;endl;
		}
		bool b=true;
		for(int i=0; i&lt;=size; i++)
		{
			if(!indovinati[i])
			{
				i=size+1;
				b=false;
			}
		}
		if(b)
		{
			cout&lt;&lt;&quot;Hai indovinato&quot;&lt;&lt;endl;
			return 0;
		}
		cin&gt;&gt;lettura;
		
	}
	cout&lt;&lt;&quot;HAI PERSO&quot;&lt;&lt;endl;
	return 0;

	
}

bool presente(char input[], char lettura, int size, bool ind[])
{

	bool done=false;
	for(int i=0; i&lt;=size; i++)
		if(input[i]==lettura)
		{
			ind[i]=true;
			done=true;
		}
	return done;
}

</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=157&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2010/02/05/esercizio-per-studenti/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/21c0ce5b8b2c6e99f629589e984573f2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leviathan</media:title>
		</media:content>
	</item>
		<item>
		<title>La programmazione ad oggetti (Parte 1)</title>
		<link>http://algoritmicamente.wordpress.com/2009/11/21/la-programmazione-ad-oggetti/</link>
		<comments>http://algoritmicamente.wordpress.com/2009/11/21/la-programmazione-ad-oggetti/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 21:24:38 +0000</pubDate>
		<dc:creator>Leviathan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[algoritmicamente]]></category>
		<category><![CDATA[programmazione ad oggetti]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=149</guid>
		<description><![CDATA[In questo articolo tratteremo in C++ la prima parte di un argomento abbastanza vasto che è la &#8220;programmazione orientata agli oggetti&#8221;. Introdurremo il concetto di oggetto e di classe per poi iniziare a definire quest&#8217;ultime. Parleremo poi del costruttore e delle funzioni membro set e get, molto utilizzate in questo tipo di programmazione. Infine, oltre [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=149&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In questo articolo tratteremo in C++ la prima parte di un argomento abbastanza vasto che è la &#8220;programmazione orientata agli oggetti&#8221;.<br />
Introdurremo il concetto di oggetto e di classe per poi iniziare a definire quest&#8217;ultime.<br />
Parleremo poi del costruttore e delle funzioni membro set e get, molto utilizzate in questo tipo di programmazione.<br />
Infine, oltre ai vari esempi proprosti capitolo dopo capitolo, faremo un esempio finale dove verrà implementata una classe, molto semplice, con cui lavoreremo poi in un main.</p>
<p><a title="La programmazione ad oggetti" href="http://algoritmicamente.files.wordpress.com/2009/11/laprogrammazioneadoggetti.pdf" target="_blank">Scarica l&#8217;articolo</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/149/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=149&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2009/11/21/la-programmazione-ad-oggetti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/21c0ce5b8b2c6e99f629589e984573f2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leviathan</media:title>
		</media:content>
	</item>
		<item>
		<title>PIL: manipolare immagini con Python</title>
		<link>http://algoritmicamente.wordpress.com/2009/11/19/pil-manipolare-immagini-con-python/</link>
		<comments>http://algoritmicamente.wordpress.com/2009/11/19/pil-manipolare-immagini-con-python/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 15:52:41 +0000</pubDate>
		<dc:creator>Finalfire</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[PIL]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python imaging library]]></category>
		<category><![CDATA[ridimensionare immagini]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=136</guid>
		<description><![CDATA[Molte volte ci troviamo di fronte a lavori che, svolti su una moltitudine di elementi, diventano molto laboriosi e noiosi. Un esempio molto semplice è il dover ridimensionare delle immagini; semplicemente, possiamo aprire qualunque editor grafico e, una per una, cambiare la dimensione e salvare, via via di questo passo. Essendomi ritrovato di fronte una [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=136&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Molte volte ci troviamo di fronte a lavori che, svolti su una moltitudine di elementi, diventano molto laboriosi e noiosi. Un esempio molto semplice è il dover ridimensionare delle immagini; semplicemente, possiamo aprire qualunque editor grafico e, una per una, cambiare la dimensione e salvare, via via di questo passo.<br />
Essendomi ritrovato di fronte una procedura del genere, vi propongo una soluzione semplice quanto efficace per automatizzare il tutto.</p>
<p>Per questo tipo di problemi ritengo molto più semplice utilizzare un linguaggio di scripting, magari leggero, semplice e tipizzato dinamicamente. La mia scelta, questa volta, è ricaduta su <a href="http://www.python.org/">Python</a> e sulla libreria <a href="http://www.pythonware.com/library/pil/handbook/index.htm">PIL</a> (Python Imaging Library): con qualche riga di codice e un po&#8217; di prove, il lavoro era praticamente svolto.</p>
<p>Vediamo insieme come svolgere un&#8217;operazione del genere.<span id="more-136"></span></p>
<p><pre class="brush: python;">import Image
import os
import subprocess
import string
from string import Template

def menu():
    subprocess.Popen([r&quot;clear&quot;]).wait()
    print '=' * 25
    print &quot;PY-MANIPULATOR; PLEASE ENTER A COMMAND&quot;
    print '=' * 25

def processing(operation, path, value):
    i = 1

    if( not os.path.isdir(&quot;redim&quot;) ):
       os.mkdir(&quot;redim&quot;)

    convertTemplate = Template('redim/$index.jpg')

    for infile in os.listdir(path):
        try:
            # apro l'immagine
            img = Image.open(path + infile)

            # operazione di conversione
            if(operation == &quot;convert&quot;):
                # prendo la dimensione
                w, h = img.size
                # converto del value%
                resize_w = (w * int(value)) / 100
                resize_h = (h * int(value)) / 100
                # safe operation
                w = w - resize_w
                h = h - resize_h
                print &quot;CONVERTING -&gt; &quot;, infile
                # resize
                img = img.resize((w,h), Image.ANTIALIAS)
                img.save(convertTemplate.substitute(index=i))

            # incremento il valore progressivo
            i = i+1

        except IOError:
            pass

def parseInput():
    checked = False
    s = raw_input(&quot;&gt;&gt; &quot;)

    while(not checked):
        # parso la stringa in una lista
        l = string.split(s)

        # leggo il comando (primo elemento)
        if( l[0] == &quot;convert&quot; ):
            processing(l[0],l[1],l[2])
            checked = True
        elif( s == '1' ):
            print &quot;EXIT -1&quot;
            exit(-1)
        else:
            print &quot;INVALID COMMAND; PLEASE RETRY OR TYPE 1 TO EXIT&quot;
            s = raw_input(&quot;&gt;&gt; &quot;)

# main
menu()
parseInput()</pre></p>
<p>Analizziamo un po&#8217; il codice (tra parentesi la riga di codice corrispondente alla spiegazione):<br />
(01~05) importiamo un po&#8217; di librerie utili: <strong>Image</strong> è la libreria di riferimento per la manipolazione delle immagini; <strong>os, subprocess, string </strong> fanno parte della libreria ufficiale del linguaggio e ci permettono tra le altre cose di interagire con il sistema operativo, di manipolare i processi e le stringhe.<br />
(08) grazie alla libreria <strong>subprocess </strong>possiamo usare la funzione membro <strong>Popen(proc) </strong>per avviare un processo a nostra scelta (in questo caso avvio <em>clear</em> semplicemente per eliminare dalla shell qualunque cosa presente prima dell&#8217;avvio del nostro script).<br />
(16) la funzione<em> </em><strong>os.path.isdir(d) </strong>ritorna vero se <em>d </em>è una directory. In questo caso, controllo se <em>redim</em> è stata già creata; in caso contrario, la funzione <strong>os.mkdir(d)</strong> la crea nella directory corrente di lavoro (riga 17).<br />
(19) la classe <strong>Template</strong> della libreria <strong>string</strong> è una classe che permette una manipolazione di stringhe a livello di end-user, aumentando esponenzialmente la versatilità di uno programma. In questo esempio, prepariamo un template <em>&#8220;/redim/$index.jpg&#8221;</em>. Scopo di questo template sarà quello di dare un path e un nome ad ogni immagine che convertiremo. <em>$index </em>è un parametro speciale che verrà sostituito ogni volta con un valore incrementale (0, 1, &#8230;) o con un qualunque valore letterale.<br />
(24) leggendo tutti i file (riga 21) presenti nella cartella <em>path</em>, cerco di aprire il corrente (<em>infile</em>) come un&#8217;immagine, tramite la funzione <strong>open(file) </strong>della libreria <strong>Image</strong>. Notiamo che siamo dentro un <em>try</em> e l&#8217;unica eccezione che potrà essere sollevata è una <em>IOError</em> se e solo se in questo punto non riusciamo a leggere il file come un&#8217;immagine (l&#8217;eccezione verrà catturata e semplicemente non faremo operazioni sul file, riga 44).<br />
(29) questa dichiarazione può risultare un po&#8217; dispersiva per alcuni utenti di linguaggi come C. In questo caso, il membro <strong>size</strong> dell&#8217;oggetto <strong>img</strong> è formato dai campi <em>(width, height)</em>, rispettivamente larghezza e altezza dell&#8217;immagine in pixel, e assegnati alle variabili <em>w </em>e <em>h</em>.<br />
(38) ridimensiono l&#8217;immagine dopo alcuni calcoli utilizzando la funzione <strong>resize(size, filter)</strong> la quale prende <em>w </em>e <em>h</em>, e una costante della classe <strong>Image</strong>, <strong>ANTIALIAS</strong> la quale indica l&#8217;effetto da applicare nel ridimensionamento dell&#8217;immagine (fate riferimento alla documentazione della libreria per maggiori informazioni).<br />
(39) salviamo l&#8217;immagine nel percorso specificato nel nostro <em>convertTemplate</em> sostituendo a <em>$index </em>il valore corrente di <em>i</em> (quindi avremo <em>redim/1.jpg</em>, <em>redim/2.jpg</em>, &#8230;).<br />
(47) dichiariamo la funzione <strong>parseInput()</strong> che servirà a gestire l&#8217;input dell&#8217;utente, nel formato <em>comando path valoreDiRiduzione</em>.</p>
<p>Ecco un esempio dello script e della sua esecuzione, nominato <em>pmanip.py</em>:</p>
<p><pre class="brush: plain;">kalimdor:pizza finalfire$ ls
DSC_0091.JPG    DSC_0096.JPG    DSC_0099.JPG    DSC_0102.JPG
DSC_0095.JPG    DSC_0097.JPG    DSC_0100.JPG    pmanip.py
kalimdor:pizza finalfire$ python pmanip.py
=========================
PY-MANIPULATOR; PLEASE ENTER A COMMAND
=========================
&gt;&gt; convert ./ 60
CONVERTING -&gt;  DSC_0091.JPG
CONVERTING -&gt;  DSC_0095.JPG
CONVERTING -&gt;  DSC_0096.JPG
CONVERTING -&gt;  DSC_0097.JPG
CONVERTING -&gt;  DSC_0099.JPG
CONVERTING -&gt;  DSC_0100.JPG
CONVERTING -&gt;  DSC_0102.JPG
kalimdor:pizza finalfire$ ls redim/
1.jpg    2.jpg    3.jpg    4.jpg    5.jpg    6.jpg    7.jpg</pre></p>
<p>Per qualunque consiglio, critica, aiuto o informazioni sentitevi liberi di lasciare un commento!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=136&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2009/11/19/pil-manipolare-immagini-con-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3269941053f8bd056be12246e32f6f63?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Finalfire</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduzione ai puntatori</title>
		<link>http://algoritmicamente.wordpress.com/2009/11/18/introduzione-ai-puntatori/</link>
		<comments>http://algoritmicamente.wordpress.com/2009/11/18/introduzione-ai-puntatori/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 20:04:56 +0000</pubDate>
		<dc:creator>Leviathan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Informatica Teorica]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[algoritmicamente]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=130</guid>
		<description><![CDATA[In questo articolo verranno trattati i puntatori, capitolo molto importante nella programmazione in linguaggi come C e C++. Partendo da concetti fondamentali come quello della gestione della memoria da parte del sistema operativo, impareremo a dichiarare ed utilizzare un puntatore ed infine introdurremo il concetto di allocazione dinamica della memoria che verrà approfondito nel prossimo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=130&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In questo articolo verranno trattati i puntatori, capitolo molto importante nella programmazione in linguaggi come C e C++.<br />
Partendo da concetti fondamentali come quello della gestione della memoria da parte del sistema operativo, impareremo a dichiarare ed utilizzare un puntatore ed infine introdurremo il concetto di allocazione dinamica della memoria che verrà approfondito nel prossimo articolo.</p>
<p><a title="Introduzione ai puntatori" href="http://algoritmicamente.files.wordpress.com/2009/11/introduzioneaipuntatori3.pdf" target="_blank">Scarica l&#8217;articolo</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=130&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2009/11/18/introduzione-ai-puntatori/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/21c0ce5b8b2c6e99f629589e984573f2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leviathan</media:title>
		</media:content>
	</item>
		<item>
		<title>Briscola</title>
		<link>http://algoritmicamente.wordpress.com/2009/11/17/briscola/</link>
		<comments>http://algoritmicamente.wordpress.com/2009/11/17/briscola/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 00:06:13 +0000</pubDate>
		<dc:creator>Leviathan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[algoritmo]]></category>
		<category><![CDATA[Briscola]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=123</guid>
		<description><![CDATA[Sotto richiesta di un mio amico, ritorno con un nuovo giochino di carte: Briscola! Sicuramente la maggior parte di voi sapranno giocare a Briscola, quindi non sto a spiegarvi le regole del gioco, altrimenti, per fortuna, esiste google! Ho implementato questo algoritmo sulla falsa riga di quello del 7 e mezzo, utilizzando quindi le stesse [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=123&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sotto richiesta di un mio amico, ritorno con un nuovo giochino di carte: Briscola!<br />
Sicuramente la maggior parte di voi sapranno giocare a Briscola, quindi non sto a spiegarvi le regole del gioco, altrimenti, per fortuna, esiste google!<br />
Ho implementato questo algoritmo sulla falsa riga di quello del 7 e mezzo, utilizzando quindi le stesse classi, Carta e Mazzo, ma con qualche piccola modifica.<br />
Vi ripropongo quindi il loro codice associato al gioco della Briscola!</p>
<p>Enjoy!</p>
<p><span id="more-123"></span></p>
<p><pre class="brush: cpp;">

//Card.h

#ifndef CARD_H_

#define CARD_H_



#include &lt;string&gt;

using namespace std;



class Card{

	friend ostream&amp; operator&lt;&lt;(ostream&amp; out, Card&amp; c);


public:

	Card(string s=&quot;&quot;, string n=&quot;&quot;, float v=0, float fv=0);

	void setSeed(string s);
	void setName(string n);

	void setValue(float v);
	void setFValue(float fv);

	void setFigure(bool f);

	void setMatta(bool m);

	void setValueMatta();

	bool isMatta();

	bool isFigure();

	string getSeed();
	string getName();

	float getValue();
	float getFValue();
	



private:

	string seed;
	string name;

	float value;
	float fValue;

	bool figure;

	bool matta;



};



#endif /* CARD_H_ */


//End of Card.h

//Card.cpp

#include &quot;Card.h&quot;

#include &lt;iostream&gt;

using namespace std;



Card::Card(string s, string n, float v, float fv)

	:figure(false),matta(false)

{

	seed=s;
	name=n;

	value=v;
	fValue=fv;



}



void Card::setSeed(string s)

{

	seed=s;



}


void Card::setName(string n)
{
	name=n;
}


void Card::setValue(float v)

{

	value=v;

}


void Card::setFValue(float fv)
{
	fValue=fv;
}


string Card::getSeed()

{

	return seed;

}

string Card::getName()
{
	return name;
}



float Card::getValue()

{

	return value;

}

float Card::getFValue()
{
	return fValue;
}



void Card::setFigure(bool f)

{

	figure=f;

}



bool Card::isFigure()

{

	return figure;

}



void Card::setMatta(bool m)

{

	matta=m;

}



bool Card::isMatta()

{

	return matta;

}



void Card::setValueMatta()

{

	float value;

	cin&gt;&gt;value;

        value=value;

}

ostream&amp; operator&lt;&lt;(ostream&amp; out, Card&amp; c)
{
	//Name Seed Value FValue
	out&lt;&lt;c.getName()&lt;&lt;&quot; &quot;&lt;&lt;c.getSeed()&lt;&lt;&quot; &quot;&lt;&lt;endl;
	return out;
}

//End of Card.cpp

//Deck.h

#ifndef DECK_H_

#define DECK_H_



#define NUMCARDS 40



#include &quot;Card.h&quot;

#include &lt;iostream&gt;



using namespace std;



class Deck {



public:

	Deck();

	~Deck();

	Card&amp; operator[](int x);

	void inizializeDeck();

	void inizializeFigures();
	void inizializeBriscola();

	void shuffleDeck();

	void inizializeMatta();



private:

	Card deck[NUMCARDS];



};



#endif /* DECK_H_ */


//End of Deck.h

//Deck.cpp

//Deck.cpp



#include &quot;Deck.h&quot;

#include &lt;time.h&gt;

#include &lt;cstdlib&gt;







Deck::Deck() {



	// TODO Auto-generated constructor stub



}



Deck::~Deck() {

	// TODO Auto-generated destructor stub

}



Card&amp; Deck::operator[](int x)

{

	return deck[x];

}



void Deck::inizializeDeck()

{

	float x=1.0;



		for(int i=0; i&lt;10; i++){

			deck[i].setSeed(&quot;Mazze&quot;);

			deck[i].setValue(x);
			deck[i].setFValue(x);

			x++;

			if(x&gt;8.0)

				deck[i].setFigure(true);

		}



		x=1.0;



		for(int i=10; i&lt;20; i++){

			deck[i].setSeed(&quot;Spade&quot;);

			deck[i].setValue(x);
			deck[i].setFValue(x);

			x++;

			if(x&gt;8.0)

			deck[i].setFigure(true);

		}



		x=1.0;



		for(int i=20; i&lt;30; i++){

				deck[i].setSeed(&quot;Coppe&quot;);

				deck[i].setValue(x);
				deck[i].setFValue(x);

				x++;

				if(x&gt;8.0)

				deck[i].setFigure(true);

		}



		x=1.0;



		for(int i=30; i&lt;40; i++){

				deck[i].setSeed(&quot;Oro&quot;);

				deck[i].setValue(x);
				deck[i].setFValue(x);

				x++;

				if(x&gt;8.0)

				deck[i].setFigure(true);

		}

		for(int i=0; i&lt;40; i++)
		{
			if(deck[i].getValue()==1)
				deck[i].setName(&quot;ASSO&quot;);

			else if(deck[i].getValue()==2)
				deck[i].setName(&quot;DUE&quot;);
	
			else if(deck[i].getValue()==3)
				deck[i].setName(&quot;TRE&quot;);
			
			else if(deck[i].getValue()==4)
				deck[i].setName(&quot;QUATTRO&quot;);

			else if(deck[i].getValue()==5)
				deck[i].setName(&quot;CINQUE&quot;);
	
			else if(deck[i].getValue()==6)
				deck[i].setName(&quot;SEI&quot;);

			else if(deck[i].getValue()==7)
				deck[i].setName(&quot;SETTE&quot;);

			else if(deck[i].getValue()==8)
				deck[i].setName(&quot;DONNA&quot;);

			else if(deck[i].getValue()==9)
				deck[i].setName(&quot;CAVALLO&quot;);
			
			else if(deck[i].getValue()==10)
				deck[i].setName(&quot;RE&quot;);

		}
			

}







void Deck::shuffleDeck()

{

	srand(time(NULL));



	Card tmp;

	int x=0;

	int y=0;



	for(int i=0; i&lt;80; i++){

		x=rand()%40;

		y=rand()%40;

		tmp=deck[y];

		deck[y]=deck[x];

		deck[x]=tmp;

	}



}





void Deck::inizializeFigures()

{

	for(int i=0; i&lt;40; i++)

        if(deck[i].isMatta()==false)

                if(deck[i].isFigure()==true)

			         deck[i].setValue(0.5);

}

void Deck::inizializeBriscola()
{
	for(int i=0; i&lt;40; i++)
	{		
		if(deck[i].getName()==&quot;ASSO&quot;)
		{
			deck[i].setValue(11);
			deck[i].setFValue(11);
		}

		else if(deck[i].getName()==&quot;TRE&quot;)
		{
			deck[i].setValue(10);
			deck[i].setFValue(10);
		}

		else if(deck[i].getName()==&quot;DONNA&quot;)
		{

			deck[i].setValue(2);
		}
		
		else if(deck[i].getName()==&quot;CAVALLO&quot;)
			deck[i].setValue(3);

		else if(deck[i].getName()==&quot;RE&quot;)
			deck[i].setValue(4);

		else
			deck[i].setValue(0);
	}
}



void Deck::inizializeMatta()

{

	for(int i=0; i&lt;40; i++)

		if(deck[i].getSeed()==&quot;Oro&quot; &amp;&amp; deck[i].getValue()==10){

			deck[i].setMatta(true);

			deck[i].setValue(0);

        }

}


//End of Deck.cpp

//main.cpp

#include &quot;Deck.h&quot;
#include &lt;time.h&gt;
#include &lt;list&gt;
#include &lt;iostream&gt;
#include &lt;cstdlib&gt;

using namespace std;

void wait ( int seconds )  //Funzione tempo, utilizzata per rallentare il turno del computer

{

  clock_t endwait;

  endwait = clock () + seconds * CLOCKS_PER_SEC ;

  while (clock() &lt; endwait) {}

}



void start(Deck napoletane, list&lt;Card&gt;&amp; player, list&lt;Card&gt;&amp; computer, Card&amp; briscola, int&amp; it);

void playerTurn(Deck napoletane, list&lt;Card&gt;&amp; player, list&lt;Card&gt;&amp; pPlayer, list&lt;Card&gt;&amp; pComputer,
		 Card&amp; table, Card briscola, int&amp; it, string&amp; got);

void computerTurn(Deck napoletane, list&lt;Card&gt;&amp; computer,list&lt;Card&gt;&amp; pComputer, list&lt;Card&gt;&amp; pPlayer, 
			Card&amp; table, Card briscola, int&amp; it, string&amp; got,Card&amp; used);

void draw(Deck napoletane, list&lt;Card&gt;&amp; hand, int&amp; it);

Card chooseCard(list&lt;Card&gt;&amp; hand);

Card getCard(list&lt;Card&gt;&amp; hand);

bool get(Card c, Card table, Card briscola);

void printHand(list&lt;Card&gt;&amp; hand);

void winner(list&lt;Card&gt;&amp; pPlayer, list&lt;Card&gt;&amp; pComputer);


int main()
{

	Deck napoletane;
	napoletane.inizializeDeck();
	napoletane.inizializeBriscola();
	
	list&lt;Card&gt; player;
	list&lt;Card&gt; computer;
	list&lt;Card&gt; pPlayer;
	list&lt;Card&gt; pComputer;
	Card briscola;
	Card table;
	Card blank,used;
	string got;
	
	for(int i=0; i&lt;2; i++)
	{
		cout&lt;&lt;&quot;ROUND N°&quot;&lt;&lt;i+1&lt;&lt;endl;
		int it=-1;
		napoletane.shuffleDeck();
		start(napoletane,player,computer,briscola,it);
		cout&lt;&lt;&quot;La briscola e': &quot;&lt;&lt;briscola;
		playerTurn(napoletane,player,pPlayer,pComputer,
                                 table,briscola,it,got);
		wait(1);
		computerTurn(napoletane,computer,pComputer,pPlayer,table,
                                      briscola,it,got,used);
		cout&lt;&lt;&quot;Il computer butta: &quot;&lt;&lt;used&lt;&lt;endl;
		cout&lt;&lt;&quot;Ha preso: &quot;&lt;&lt;got&lt;&lt;endl;
		table=blank;
		wait(1);
		system(&quot;clear&quot;);
		while(!player.empty() &amp;&amp; !computer.empty())
		{
			cout&lt;&lt;&quot;ROUND N°&quot;&lt;&lt;i+1&lt;&lt;endl;
			cout&lt;&lt;&quot;La briscola e': &quot;&lt;&lt;briscola;
			if(got==&quot;computer&quot;)
			{
				wait(1);
				computerTurn(napoletane,computer,pComputer,pPlayer,
                                        table,briscola,it,got,used);
				cout&lt;&lt;&quot;Il computer butta: &quot;&lt;&lt;used&lt;&lt;endl;
				playerTurn(napoletane,player,pPlayer,pComputer,
                                                  table,briscola,it,got);
			}
			else
			{
				playerTurn(napoletane,player,pPlayer,pComputer,
                                table,briscola,it,got);
				wait(1);
				computerTurn(napoletane,computer,pComputer,pPlayer,
                                        table,briscola,it,got,used);
				cout&lt;&lt;&quot;Il computer butta: &quot;&lt;&lt;used&lt;&lt;endl;
			}
			table=blank;
			cout&lt;&lt;&quot;Ha preso: &quot;&lt;&lt;got&lt;&lt;endl&lt;&lt;endl;
			wait(1);
			system(&quot;clear&quot;);
		}
		
		
	}
	winner(pPlayer,pComputer);

	return 0;
}

void start(Deck napoletane, list&lt;Card&gt;&amp; player, list&lt;Card&gt;&amp; computer, Card&amp; briscola, int&amp; it)
{
	for(int i=0; i&lt;3; i++)
	{
		player.push_back(napoletane[++it]);
		computer.push_back(napoletane[++it]);
	}

	briscola=napoletane[39];
		
}

void playerTurn(Deck napoletane, list&lt;Card&gt;&amp; player, list&lt;Card&gt;&amp; pPlayer, list&lt;Card&gt;&amp; pComputer,
		 Card&amp; table, Card briscola, int&amp; it, string&amp; got)
{
	cout&lt;&lt;endl;
	if(player.size()==2 &amp;&amp; it&lt;39)
	{
		draw(napoletane,player,it);
		cout&lt;&lt;&quot;Le carte che hai in mano: &quot;&lt;&lt;endl;
		printHand(player);
	}
	else
		printHand(player);

	if(table.getName()==&quot;&quot;)
		table=chooseCard(player);
	else
	{
		Card p=chooseCard(player);
		if(get(p,table,briscola))
		{
			got=&quot;player&quot;;
			pPlayer.push_back(table);
			pPlayer.push_back(p);
		}

		else
		{
			got=&quot;computer&quot;;
			pComputer.push_back(table);
			pComputer.push_back(p);
		}
			
	}	


}

void computerTurn(Deck napoletane, list&lt;Card&gt;&amp; computer,list&lt;Card&gt;&amp; pComputer, list&lt;Card&gt;&amp; pPlayer, 
			Card&amp; table, Card briscola, int&amp; it, string&amp; got, Card&amp; used)
{

	if(computer.size()==2 &amp;&amp; it&lt;39)
		draw(napoletane,computer,it);


	list&lt;Card&gt;::iterator tmp;
	Card cp;
	bool done=false;

	if(table.getName()==&quot;&quot;)
	{
		table=getCard(computer);
		cp=table;
	}

	
	else
	{	

		for(list&lt;Card&gt;::iterator ith=computer.begin(); ith!=computer.end(); ith++)
		{
			if(get(*ith,table,briscola))
			{
				cp=*ith;
				tmp=ith;
				got=&quot;computer&quot;;
				done=true;
				
			}
		}
		if(done)
		{
			pComputer.push_back(table);
			pComputer.push_back(cp);
			computer.erase(tmp);
		}
		else
		{
			cp=getCard(computer);
			pPlayer.push_back(cp);
			pPlayer.push_back(table);
			got=&quot;player&quot;;
		}
		
	}
	used=cp;
	
}

void draw(Deck napoletane, list&lt;Card&gt;&amp; hand, int&amp; it)
{
	hand.push_back(napoletane[++it]);
}

Card chooseCard(list&lt;Card&gt;&amp; hand)
{
	int choose;
	Card c;
	cout&lt;&lt;&quot;Choose a card (0,1,2): &quot;;
	do{
		cin&gt;&gt;choose;
	}while(choose&lt;0 || choose&gt;2);

	list&lt;Card&gt;::iterator ith=hand.begin();
	while(choose!=0)
	{
		ith++;
		choose--;
	}
	c=*ith;
	hand.erase(ith);
	return c;
		
}

Card getCard(list&lt;Card&gt;&amp; hand)
{
	int min=12;
	Card cp;
	list&lt;Card&gt;::iterator tmp;
	for(list&lt;Card&gt;::iterator ith=hand.begin(); ith!=hand.end(); ith++)
		if(ith-&gt;getValue()&lt;min)
		{
			min=ith-&gt;getValue();
			tmp=ith;
			cp=*ith;
		}

	hand.erase(tmp);
	return cp;
	
}

bool get(Card c, Card table, Card briscola)
{
	return ( 
			( (c.getFValue()&gt;table.getFValue()) &amp;&amp; (c.getSeed()==table.getSeed()) ) || 
			( (c.getSeed()==briscola.getSeed()) &amp;&amp; (table.getSeed()!=briscola.getSeed()) ) ||
			( (c.getSeed()==briscola.getSeed()) &amp;&amp; (table.getSeed()==briscola.getSeed()) &amp;&amp; (c.getFValue()&gt;table.getFValue()) )
		);
}

void printHand(list&lt;Card&gt;&amp; hand)
{
	int tmp=0;
	for(list&lt;Card&gt;::iterator ith=hand.begin(); ith!=hand.end(); ith++)
	{
		cout&lt;&lt;tmp&lt;&lt;&quot;) &quot;&lt;&lt;*ith;
		tmp++;
	}	
	
}

void winner(list&lt;Card&gt;&amp; pPlayer, list&lt;Card&gt;&amp; pComputer)
{
	int pP=0,pC=0;
	for(list&lt;Card&gt;::iterator itp=pPlayer.begin(); itp!=pPlayer.end(); itp++)
			pP+=itp-&gt;getValue();

	for(list&lt;Card&gt;::iterator itc=pComputer.begin(); itc!=pComputer.end(); itc++)
			pC+=itc-&gt;getValue();

	cout&lt;&lt;&quot;Il tuo punteggio e': &quot;&lt;&lt;pP&lt;&lt;endl;
	cout&lt;&lt;&quot;Il punteggio del computer e': &quot;&lt;&lt;pC&lt;&lt;endl;

	if(pP&gt;pC)
		cout&lt;&lt;&quot;HAI VINTO!&quot;&lt;&lt;endl;

	else if(pP&lt;pC)
		cout&lt;&lt;&quot;IL COMPUTER VINCE!&quot;&lt;&lt;endl;

	else
		cout&lt;&lt;&quot;PARITA'&quot;&lt;&lt;endl;		

}

//End of main.cpp

</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=123&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2009/11/17/briscola/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/21c0ce5b8b2c6e99f629589e984573f2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leviathan</media:title>
		</media:content>
	</item>
		<item>
		<title>7 e mezzo</title>
		<link>http://algoritmicamente.wordpress.com/2009/09/23/7-e-mezzo/</link>
		<comments>http://algoritmicamente.wordpress.com/2009/09/23/7-e-mezzo/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 18:23:57 +0000</pubDate>
		<dc:creator>Leviathan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[7 e mezzo]]></category>
		<category><![CDATA[algoritmo]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=107</guid>
		<description><![CDATA[Forse sto diventando prevedibile, però ultimamente passo il mio tempo libero cercando di creare qualche giochino in c++ ^^ Questa volta, ho preso come esempio il noto gioco di carte 7 e mezzo e ho fatto una bozza&#8230;ormai completa si può dire. Se ci sono aggiornamenti lo segnalerò^^ Vi propongo qui quindi una mia versione. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=107&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Forse sto diventando prevedibile, però ultimamente passo il mio tempo libero cercando di creare qualche giochino in c++ ^^ Questa volta, ho preso come esempio il noto gioco di carte 7 e mezzo e ho fatto una bozza&#8230;ormai completa si può dire. Se ci sono aggiornamenti lo segnalerò^^<br />
Vi propongo qui quindi una mia versione. Ho usato un pò di programmazione ad oggetti e anche la libreria fstream in modo da poter salvare i progressi nel gioco, dato che ho messo la funzionalità di puntare dei soldi virtuali <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
Troverete quindi altri 4 file con esattezza, oltre al main, riferiti alle classi Carta e Mazzo.</p>
<p>Per chiunque volesse provarlo, ho creato un file .zip dove ho messo l&#8217;eseguibile e il file dove vengono memorizzati i progressi durante il gioco( quindi i soldi virtuali <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). <a href="http://www.megaupload.com/?d=I4CVYP6J">Scarica File</a></p>
<p>Solita raccomandazione: non esitate a conttarmi per qualsiasi tipo di problema ^^<br />
<span id="more-107"></span></p>
<p><pre class="brush: cpp;">
// Carta.h
#ifndef CARTA_H_
#define CARTA_H_

#include &lt;string&gt;
using namespace std;

class Carta{
public:
	Carta(string s=&quot;&quot;, float v=0);
	void setSeme(string s);
	void setValore(float v);
	void setFigura(bool f);
	void setMatta(bool m);
	void setValoreMatta();
	bool isMatta();
	bool isFigura();
	string getSeme();
	float getValore();

private:
	string seme;
	float valore;
	bool figura;
	bool matta;

};

#endif /* CARTA_H_ */

//Fine del file Carta.h

//Carta.cpp

#include &quot;Carta.h&quot;
#include &lt;iostream&gt;
using namespace std;

Carta::Carta(string s, float v)
	:figura(false),matta(false)
{
	seme=s;
	valore=v;

}

void Carta::setSeme(string s)
{
	seme=s;

}

void Carta::setValore(float v)
{
	valore=v;
}

string Carta::getSeme()
{
	return seme;
}

float Carta::getValore()
{
	return valore;
}

void Carta::setFigura(bool f)
{
	figura=f;
}

bool Carta::isFigura()
{
	return figura;
}

void Carta::setMatta(bool m)
{
	matta=m;
}

bool Carta::isMatta()
{
	return matta;
}

void Carta::setValoreMatta()
{
	float value;
	cin&gt;&gt;value;
        valore=value;
}

//Fine del file Carta.cpp

//Mazzo.h

#ifndef MAZZO_H_
#define MAZZO_H_

#define NUMCARTE 40

#include &quot;Carta.h&quot;
#include &lt;iostream&gt;

using namespace std;

class Mazzo {

public:
	Mazzo();
	~Mazzo();
	Carta&amp; operator[](int x);
	void inizializzaMazzo();
	void inizializzaFigure();
	void mischiaMazzo();
	void inizializzaMatta();

private:
	Carta mazzo[NUMCARTE];

};

#endif /* MAZZO_H_ */

//Fine del file Mazzo.h

//Mazzo.cpp

#include &quot;Mazzo.h&quot;
#include &lt;time.h&gt;
#include &lt;cstdlib&gt;



Mazzo::Mazzo() {

	// TODO Auto-generated constructor stub

}

Mazzo::~Mazzo() {
	// TODO Auto-generated destructor stub
}

Carta&amp; Mazzo::operator[](int x)
{
	return mazzo[x];
}

void Mazzo::inizializzaMazzo()
{
	float x=1.0;

		for(int i=0; i&lt;10; i++){
			mazzo[i].setSeme(&quot;Bastoni&quot;);
			mazzo[i].setValore(x);
			x++;
			if(x&gt;8.0)
				mazzo[i].setFigura(true);
		}

		x=1.0;

		for(int i=10; i&lt;20; i++){
			mazzo[i].setSeme(&quot;Spade&quot;);
			mazzo[i].setValore(x);
			x++;
			if(x&gt;8.0)
			mazzo[i].setFigura(true);
		}

		x=1.0;

		for(int i=20; i&lt;30; i++){
				mazzo[i].setSeme(&quot;Coppe&quot;);
				mazzo[i].setValore(x);
				x++;
				if(x&gt;8.0)
				mazzo[i].setFigura(true);
		}

		x=1.0;

		for(int i=30; i&lt;40; i++){
				mazzo[i].setSeme(&quot;Oro&quot;);
				mazzo[i].setValore(x);
				x++;
				if(x&gt;8.0)
				mazzo[i].setFigura(true);
		}
}



void Mazzo::mischiaMazzo()
{
	srand(time(NULL));

	Carta tmp;
	int x=0;
	int y=0;

	for(int i=0; i&lt;80; i++){
		x=rand()%40;
		y=rand()%40;
		tmp=mazzo[y];
		mazzo[y]=mazzo[x];
		mazzo[x]=tmp;
	}

}


void Mazzo::inizializzaFigure()
{
	for(int i=0; i&lt;40; i++)
        if(mazzo[i].isMatta()==false)
                if(mazzo[i].isFigura()==true)
			         mazzo[i].setValore(0.5);
}

void Mazzo::inizializzaMatta()
{
	for(int i=0; i&lt;40; i++)
		if(mazzo[i].getSeme()==&quot;Oro&quot; &amp;&amp; mazzo[i].getValore()==10){
			mazzo[i].setMatta(true);
			mazzo[i].setValore(0);
        }
}

//Fine del file Mazzo.cpp

//main.cpp

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;fstream&gt;
#include &quot;Carta.h&quot;
#include &quot;Mazzo.h&quot;

using namespace std;

bool giocataPlayer(Mazzo napoletane, Carta&amp; player, int&amp; it, float&amp; punteggiop1,bool&amp; mattaImpostata,
			bool&amp; impostaMatta,bool&amp; mischiare);
void gestisciMatta(Carta&amp; matta, float&amp; punteggiop1, bool&amp; mattaImpostata);
bool giocataComputer(Mazzo napoletane, Carta&amp; computer, int&amp; it, float&amp; punteggiopc,float punteggiop1,
			bool&amp; mattaImpostata,bool&amp; impostaMatta,bool&amp; mischiare);

void impostaFile(); //Funzione da utilizzare solo 1 volta e solo quando si apre il programma per la prima volta
void caricaFile(int&amp; euro);
void salvaFile(int&amp; euro);

void primaLaMatta(Mazzo&amp; napoletane); //Funzione di utilità per testare il funzionamento del programma
void terzaLaMatta(Mazzo&amp; napoletane); //Funzione di utilità per testare il funzionamento del programma

void wait ( float seconds )  //Funzione tempo, utilizzata per rallentare il turno del computer
{
  clock_t endwait;
  endwait = clock () + seconds * CLOCKS_PER_SEC ;
  while (clock() &lt; endwait) {}
}


int main()
{
	Mazzo napoletane;
	napoletane.inizializzaMazzo();
	napoletane.inizializzaMatta();
	napoletane.inizializzaFigure();
	napoletane.mischiaMazzo();

	//primaLaMatta(napoletane);
	//terzaLaMatta(napoletane);
	
	char scelta;
	bool mattaImpostata=false;
	bool impostaMatta=false;
	bool mischiare=false;
	int it=-1;
	float punteggiop1=0;
	float punteggiopc=0;
	int euro;
	int puntata=0;

	Carta player;
	Carta computer;

	//impostaFile(); //Leggi sopra

	caricaFile(euro);

	do{
		bool mattaImpostata=false;
		bool impostaMatta=false;

		if(it&gt;=32 || mischiare)
		{
			napoletane.mischiaMazzo();
			it=-1;
			mischiare=false;
		}

		player=napoletane[++it];
		punteggiop1=napoletane[it].getValore();
		if(napoletane[it].isMatta())
			cout&lt;&lt;&quot;Hai la matta!&quot;&lt;&lt;endl;
		else
			cout&lt;&lt;&quot;La tua carta è un &quot;&lt;&lt;napoletane[it].getValore();


		computer=napoletane[++it];
		punteggiopc=napoletane[it].getValore();

		cout&lt;&lt;&quot;\nHai &quot;&lt;&lt;euro&lt;&lt;&quot; euro.&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;\nQuanto vuoi puntare? &quot;;
		do{
			cin&gt;&gt;puntata;
		}while(puntata&lt;1 || puntata&gt;euro);

		
		
		if(!giocataPlayer(napoletane,player,it,punteggiop1,
mattaImpostata,impostaMatta,mischiare))
		{
			cout&lt;&lt;&quot;\nHai sballato!&quot;&lt;&lt;endl;
			cout&lt;&lt;&quot;\nIl computer vince!&quot;&lt;&lt;endl;
			euro-=puntata;
		}
		

		//punteggiop1=7.5; //Trucco usato per verificare la funzionalità del metodo giocataComputer	

		else if(!giocataComputer(napoletane,computer,it,punteggiopc,
punteggiop1,mattaImpostata,impostaMatta,mischiare))
		{
			cout&lt;&lt;&quot;\nIl computer ha sballato!&quot;&lt;&lt;endl;
			cout&lt;&lt;&quot;\nHai vinto!&quot;&lt;&lt;endl;
			euro+=puntata;
		}
		

				

		else if(punteggiopc&gt;punteggiop1)
		{
			cout&lt;&lt;&quot;\nIl computer vince!&quot;&lt;&lt;endl;
			euro-=puntata;
		}

		else if(punteggiopc==punteggiop1)
		{
			cout&lt;&lt;&quot;\nIl computer vince!&quot;&lt;&lt;endl;
			euro-=puntata;
		}
			
		else
		{
			cout&lt;&lt;&quot;\nHai vinto!&quot;&lt;&lt;endl;
			euro+=puntata;
		}
				
		if(euro==0)
		{
			cout&lt;&lt;&quot;\nHai perso tutto! Riazzero il contatore ^^&quot;&lt;&lt;endl;
			euro=100;
		}

	
		cout&lt;&lt;&quot;\nVuoi continuare a giocare? (s/n) &quot;;
	
		do{
			cin&gt;&gt;scelta;
		}while(scelta!='s' &amp;&amp; scelta!='n');


	}while(scelta=='s');

	salvaFile(euro);
	

	return 0;
}

bool giocataPlayer(Mazzo napoletane, Carta&amp; player, int&amp; it, float&amp; punteggiop1,bool&amp; mattaImpostata,
			bool&amp; impostaMatta,bool&amp; mischiare)
{
	char scelta;
	Carta matta;

	//cout&lt;&lt;&quot;\nIl tuo punteggio è: &quot;&lt;&lt;punteggiop1&lt;&lt;endl;
	cout&lt;&lt;&quot;\nVuoi chiamare un'altra carta?&quot;;
		
	do{
		cin&gt;&gt;scelta;
	}while(scelta!='n' &amp;&amp; scelta!='s');

	if(scelta=='s')
	{
		cout&lt;&lt;&quot;\nIl valore della carta chiamata e' &quot;&lt;&lt;napoletane[++it].getValore();
	
		if(napoletane[it].isMatta())
		{
			cout&lt;&lt;&quot;\nE' uscita la matta!&quot;&lt;&lt;endl;
			mischiare=true;
		}

		if( (napoletane[it].isMatta() || impostaMatta) &amp;&amp; !mattaImpostata &amp;&amp; punteggiop1&lt;7.5)
		{
			matta=napoletane[it];
			impostaMatta=true;
			gestisciMatta(matta,punteggiop1,mattaImpostata);

		}
		
		punteggiop1+=napoletane[it].getValore();
	}

	else 
		return true;

	cout&lt;&lt;&quot;\nIl tuo punteggio e': &quot;&lt;&lt;punteggiop1&lt;&lt;endl;

	if(player.isMatta() &amp;&amp; !mattaImpostata &amp;&amp; punteggiop1&lt;7.5)
	{
		mischiare=true;
		matta=player;
		gestisciMatta(matta,punteggiop1,mattaImpostata);
		
	}

	if(punteggiop1&gt;7.5)
		return false;
	
	else if(punteggiop1==7.5){
		cout&lt;&lt;&quot;Hai fatto 7 e mezzo!&quot;&lt;&lt;endl;
		return true;
	}

	else
		return giocataPlayer(napoletane,player,it,punteggiop1,
mattaImpostata,impostaMatta,mischiare);

	

}

void gestisciMatta(Carta&amp; matta, float&amp; punteggiop1, bool&amp; mattaImpostata)
{
	char scelta;

	cout&lt;&lt;&quot;\nVuoi impostare ora il valore della matta?&quot;;
	do{
		cin&gt;&gt;scelta;
	}while(scelta!='s' &amp;&amp; scelta!='n');


	if(scelta=='s')
	{
		float valore;
		cout&lt;&lt;&quot;\nInserisci il valore da impostare alla matta: &quot;;
		do{
			cin&gt;&gt;valore;
		}while(valore&lt;0.5 &amp;&amp; valore&gt;7);

		matta.setValore(valore);

		punteggiop1+=matta.getValore();

		mattaImpostata=true;

		return;
	}
	
	else
		return;

}

bool giocataComputer(Mazzo napoletane, Carta&amp; computer, int&amp; it, float&amp; punteggiopc,float punteggiop1, 
			bool&amp; mattaImpostata,bool&amp; impostaMatta,bool&amp; mischiare)
{
	Carta matta;
	int valoreMatta=0;

	cout&lt;&lt;&quot;\nIl punteggio del computer e': &quot;&lt;&lt;punteggiopc&lt;&lt;endl;

	if(computer.isMatta() &amp;&amp; !impostaMatta)
	{
		mischiare=true;
		matta=computer;
		cout&lt;&lt;&quot;\nIl computer ha la matta!&quot;&lt;&lt;endl;
		impostaMatta=true;
	}
	
	if(punteggiopc&lt;5.5 || (punteggiop1==7.5 &amp;&amp; punteggiopc&lt;7.5) )
	{
		cout&lt;&lt;&quot;\nIl computer chiama una carta ed il suo valore e': &quot;
                cout&lt;&lt;napoletane[++it].getValore()&lt;&lt;endl;

		wait(1.5); // Riferito alla funzione tempo, modificando il valore si stabiliscono i secondi di attesa

		if(napoletane[it].isMatta())
		{
			mischiare=true;
			cout&lt;&lt;&quot;\nE' uscita la matta!&quot;&lt;&lt;endl;
			matta=napoletane[it];
			impostaMatta=true;
		}

		punteggiopc+=napoletane[it].getValore();
		cout&lt;&lt;&quot;\nIl punteggio del computer e' ora : &quot;&lt;&lt;punteggiopc&lt;&lt;endl;
		if(punteggiopc &gt; 7.5)
			return false;

		if(impostaMatta &amp;&amp; !mattaImpostata &amp;&amp; punteggiopc&lt;7.5)
		{
			if(punteggiopc==7.0)
			{
				cout&lt;&lt;&quot;\nIl computer imposta la matta a 0.5&quot;&lt;&lt;endl;
				matta.setValore(0.5);
				punteggiopc+=matta.getValore();
				cout&lt;&lt;&quot;\nIl computer ha fatto 7 e mezzo!&quot;&lt;&lt;endl;
				return true;
			}	
			//Se il valore della matta + il punteggio del computer attuale non superano quello 
                        //del giocatore se ha 7.5
			// allora chiama un'altra carta e imposta la matta dopo.
			else
				valoreMatta=7.5 - punteggiopc;
				
			if( punteggiop1==7.5 &amp;&amp; ( (punteggiopc +  valoreMatta)!=7.5 ) )
			{
				return giocataComputer(napoletane,computer,it,punteggiopc,  punteggiop1,mattaImpostata,impostaMatta,mischiare);
				
			}
	
			else
			{
				cout&lt;&lt;&quot;\nIl computer imposta la matta a: &quot;&lt;&lt;valoreMatta&lt;&lt;endl;
				matta.setValore(valoreMatta);
				punteggiopc+=matta.getValore();
				cout&lt;&lt;&quot;\nIl punteggio del computer e' ora: &quot;&lt;&lt;punteggiopc&lt;&lt;endl;
				
			}

		}
				
				
	}	

	if(punteggiopc==7.5)
	{
		cout&lt;&lt;&quot;\nIl computer ha fatto 7 e mezzo!&quot;&lt;&lt;endl;
		return true;
	}
	
	if(punteggiopc&gt;7.5)
		return false;

	if(punteggiopc&gt;=5.5 &amp;&amp; punteggiop1!=7.5)
	{
		cout&lt;&lt;&quot;\nIl computer si ferma qui.&quot;&lt;&lt;endl;
		return true;
	}

	if(punteggiopc&lt;5.5)
		return giocataComputer(napoletane,computer,it,punteggiopc,
punteggiop1,mattaImpostata,impostaMatta,mischiare);	


}

void impostaFile()
{
	ofstream fout;
	fout.open(&quot;SaveFile.txt&quot;);
	fout&lt;&lt;100;
	fout.close();
}

void caricaFile(int&amp; euro)
{
	ifstream fin;
	fin.open(&quot;SaveFile.txt&quot;);
	if(fin.fail())
	{
		cerr&lt;&lt;&quot;Errore nell'apertura del file.&quot;&lt;&lt;endl;
	}
	fin&gt;&gt;euro;
	fin.close();
}
void salvaFile(int&amp; euro)
{
	ofstream fout;
	fout.open(&quot;SaveFile.txt&quot;);
	if(fout.fail())
	{
		cerr&lt;&lt;&quot;Errore nell'apertura del file.&quot;&lt;&lt;endl;
	}
	fout&lt;&lt;euro;
	fout.close();
}

void primaLaMatta(Mazzo&amp; napoletane) 
{
	Carta x;

	for(int i=0; i&lt;40; i++)
		if(napoletane[i].isMatta())
		{
			x=napoletane[0];
			napoletane[0]=napoletane[i];
			napoletane[i]=x;
		}
}

void terzaLaMatta(Mazzo&amp; napoletane)
{
	Carta x;

	for(int i=0; i&lt;40; i++)
		if(napoletane[i].isMatta())
		{
			x=napoletane[2];
			napoletane[2]=napoletane[i];
			napoletane[i]=x;
		}
}

</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=107&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2009/09/23/7-e-mezzo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/21c0ce5b8b2c6e99f629589e984573f2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Leviathan</media:title>
		</media:content>
	</item>
		<item>
		<title>0 a.d Compilazione e impressioni.</title>
		<link>http://algoritmicamente.wordpress.com/2009/09/04/0-a-d-compilazione-e-impressioni/</link>
		<comments>http://algoritmicamente.wordpress.com/2009/09/04/0-a-d-compilazione-e-impressioni/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 11:15:47 +0000</pubDate>
		<dc:creator>memoclaudio</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Videogame]]></category>
		<category><![CDATA[0 a.d]]></category>
		<category><![CDATA[videogames]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=103</guid>
		<description><![CDATA[Stranamente a quanto scritto precedentemente questo articolo è un pò più soft (tutti abbiamo bisogno sempre e comunque di svagare con il cervello).  Infatti ci interessiamo ad un videogame. Il gioco in questione è l&#8217;attesissimo 0 a.d (in fase di sviluppo da 8 anni) un gioco di strategia in tempo reale simile ad Age of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=103&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Stranamente a quanto scritto precedentemente questo articolo è un pò più soft (tutti abbiamo bisogno sempre e comunque di svagare con il cervello).  Infatti ci interessiamo ad un videogame.</p>
<p>Il gioco in questione è l&#8217;attesissimo 0 a.d (in fase di sviluppo da 8 anni) un gioco di strategia in tempo reale simile ad Age of Empire II, ma ambientato in periodi storici differenti. Tutte le informazioni possono essere trovato sul <a title="0 a.d" href="http://wildfiregames.com/0ad/" target="_blank">sito</a>.</p>
<p>Dopo una non lunga compilazione sul mio computer fisso con Debian, ho potuto avere una prima impressione del gioco(come potete vedere dal video). Per quanto riguarda i sorgenti essi sono poco chiari in alcuni punti, ma completi per capire lo sviluppo e il funzionamento del gioco, c&#8217;è da aggiungere che essi in alcuni punti sono incompleti e necessitano di forti riscritture o aggiornamente (l&#8217;AI non è ancora molto sviluppata).</p>
<span style="text-align:center; display: block;"><a href="http://algoritmicamente.wordpress.com/2009/09/04/0-a-d-compilazione-e-impressioni/"><img src="http://img.youtube.com/vi/nKTOH9SOtxQ/2.jpg" alt="" /></a></span>
<p>La grafica non è ancora ai livelli di eccellenza desiderati, ma è comunque buona per qualsiasi tipo di scheda video vecchia (non eccessivamente minimo GF 4) e nuova. La giocabilità non è ancora del tutto completata, in alcuni tratti e lenta e fastidiosa.</p>
<p>Qualsiasi altro tipo di descrizione può essere preso dal video (spero di rilasciarne altri). Al più presto sarà disponibile su questo blog un pacchetto .deb con il gioco pre-compilato&#8230; Grazie !!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=103&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2009/09/04/0-a-d-compilazione-e-impressioni/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b93d9a4ebe80f3ce04329a063cff2139?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">memoclaudio</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduzione alle stringhe e algoritmi collegati (Parte 1)</title>
		<link>http://algoritmicamente.wordpress.com/2009/08/15/introduzione-alle-stringhe-e-algoritmi-collegati-parte-1/</link>
		<comments>http://algoritmicamente.wordpress.com/2009/08/15/introduzione-alle-stringhe-e-algoritmi-collegati-parte-1/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 13:06:43 +0000</pubDate>
		<dc:creator>Finalfire</dc:creator>
				<category><![CDATA[Algoritmi e logica]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Informatica Teorica]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[algoritmo]]></category>
		<category><![CDATA[stringhe]]></category>

		<guid isPermaLink="false">http://algoritmicamente.wordpress.com/?p=95</guid>
		<description><![CDATA[Salve a tutti ragazzi! In questo articolo viene introdotto il concetto di carattere e di sequenza di caratteri. Presenteremo il tipo di dato stringa e analizzeremo i più importanti algoritmi di ricerca/ordinamento/parsing collegati. La prima parte consiste in un&#8217;introduzione generale: i caratteri, le stringhe, la rappresentazione e i sistemi di codifica e l&#8217;uso delle stringhe [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=95&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Salve a tutti ragazzi!<br />
In questo articolo viene introdotto il concetto di carattere e di sequenza di caratteri. Presenteremo il tipo di dato <em>stringa</em> e analizzeremo i più importanti algoritmi di ricerca/ordinamento/parsing collegati.</p>
<p>La prima parte consiste in un&#8217;introduzione generale: i caratteri, le stringhe, la rappresentazione e i sistemi di codifica e l&#8217;uso delle stringhe in C++.</p>
<p><a href="http://algoritmicamente.files.wordpress.com/2009/08/stringhe_algoritmi.pdf">Scarica l&#8217;articolo</a></p>
<p>Come sempre commenti e critiche sono i benvenuti! A breve la seconda parte!<br />
Buon weekend!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/algoritmicamente.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/algoritmicamente.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/algoritmicamente.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/algoritmicamente.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/algoritmicamente.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/algoritmicamente.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/algoritmicamente.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/algoritmicamente.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/algoritmicamente.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/algoritmicamente.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/algoritmicamente.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/algoritmicamente.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/algoritmicamente.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/algoritmicamente.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=algoritmicamente.wordpress.com&amp;blog=8718395&amp;post=95&amp;subd=algoritmicamente&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://algoritmicamente.wordpress.com/2009/08/15/introduzione-alle-stringhe-e-algoritmi-collegati-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3269941053f8bd056be12246e32f6f63?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Finalfire</media:title>
		</media:content>
	</item>
	</channel>
</rss>
