<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Λοιπά θέματα</title><link>https://www.dotnetzone.gr:443/cs/forums/29/ShowForum.aspx</link><description>Οτιδήποτε άλλα θέματα developing που δεν κολλάνε σε κάποιο από τα υπόλοιπα forums!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Καταλανοί, Βάσκοι και λοιποί... Catalan numbers στη C...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61726.aspx</link><pubDate>Fri, 17 Dec 2010 01:14:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61726</guid><dc:creator>kgiann78</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61726.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=29&amp;PostID=61726</wfw:commentRss><description>Πω πω... Είχα κολήσει από την προηγούμενη μέθοδο με recursion και δεν το έβλεπα... Δεν είχα σκεφτεί καθόλου να χρησιμοποιήσω πίνακα...&lt;br&gt;&lt;br&gt;Σε ευχαριστώ πολύ!&lt;br&gt;</description></item><item><title>Απ: Καταλανοί, Βάσκοι και λοιποί... Catalan numbers στη C...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61706.aspx</link><pubDate>Thu, 16 Dec 2010 20:04:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61706</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61706.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=29&amp;PostID=61706</wfw:commentRss><description>Ο τύπος αυτός απαιτεί όλες τις προηγούμενες τιμές για να υπολογίσεις την επόμενη. Σε αυτή την περίπτωση δεν μπορείς φυσικά να ορίσεις n μεταβλητές γι αυτό και θα πρέπει να χρησιμοποιήσεις ένα πίνακα με n πεδία. Αν k είναι η τρέχουσα θέση, σε ενδιαφέρουν όλες οι προηγούμενες, δηλαδή οι 0 ... k-1. Αν ξεκινήσεις να υπολογίζεις με k=1 (το k=0 είναι πάντα 1), για κάθε αυξανόμενο k θα έχεις υπολογίσει ήδη όλες τις προηγούμενες τιμές και θα τις έχεις και στην κατάλληλη θέση. Για παράδειγμα (C#)&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;static&lt;/span&gt; &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; CIter2(&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; n)
{
&lt;span style="background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;    &lt;/span&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;[] sums=&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;[ n];
    sums[0]=1;

&lt;span style="background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;    &lt;/span&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;for&lt;/span&gt; (&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; k=1;k&amp;lt;n;k++)
	&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;for&lt;/span&gt; (&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; i=0;i&amp;lt;k;i++)
	{					
            sums[ k] +=sums[ i]&lt;span style="color:red;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;*&lt;/span&gt; sums[k-i-1];
	}

    &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt; sums[n-1];
}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Σε C θα πρέπει να φτιάξεις δυναμικά τον πίνακα με τη malloc και να τον καθαρίσεις μετά με τη free&lt;/div&gt;</description></item><item><title>Απ: Καταλανοί, Βάσκοι και λοιποί... Catalan numbers στη C...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61693.aspx</link><pubDate>Thu, 16 Dec 2010 16:22:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61693</guid><dc:creator>kgiann78</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61693.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=29&amp;PostID=61693</wfw:commentRss><description>Μια διευκρίνηση... Ο τύπος που δινόταν ήταν ο παρακάτω...&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , n=0&lt;br&gt;&lt;br&gt;Cn =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n-1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Σ&amp;nbsp; (Ci*Cn-i-1), n!=0&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=0&lt;br&gt;&lt;br&gt;Αν δινόταν κάποιος διαφορετικός τύπος ίσος σκεφτόμουν κάτι διαφορετικό εξίσου...&lt;br&gt;</description></item><item><title>Απ: Καταλανοί, Βάσκοι και λοιποί... Catalan numbers στη C...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61687.aspx</link><pubDate>Thu, 16 Dec 2010 08:03:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61687</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61687.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=29&amp;PostID=61687</wfw:commentRss><description>&lt;P&gt;spaceman, είσαι σίγουρος γι αυτό που έγραψες?&amp;nbsp;Ο τύπος είναι μεν ένας από τους πολλούς αναδρομικούς τύπους που παράγουν Catalan numbers, ο κώδικας όμως δεν τον υλοποιεί&amp;nbsp;ούτε επιστρέφει τα σωστά αποτελέσματα - αν οι catalan, counter είναι ακέραιοι. Αν δεις π.χ. στο &lt;A href="http://en.wikipedia.org/wiki/Catalan_number"&gt;Wikipedia&lt;/A&gt;&amp;nbsp;ή στο &lt;A href="http://mathworld.wolfram.com/CatalanNumber.html"&gt;Wolphram Mathworld&lt;/A&gt;&amp;nbsp;θα έπρεπε να δίνει 1, 2, 5, 14, 42, 132, 429 κλπ. Αντί γι αυτό όμως δίνει 1, 2, 4, 8, 24 ... καμμία σχέση. &lt;BR&gt;Ο λόγος είναι ότι αν οι catalan, counter είναι ακέραιοι (int, long), η διαίρεση χάνει δεκαδικά πριν γίνει ο πολλαπλασιασμός με την τελευταία τιμή. Αν ήταν floating point, δεν θα είχες πρόβλημα.&lt;/P&gt;&lt;P&gt;Το σωστό θα ήταν να γράψεις το παρακάτω (σε C#):&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;        &lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;int&lt;/SPAN&gt; CIter(&lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;int&lt;/SPAN&gt; n)
        {
            &lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;int&lt;/SPAN&gt; previous &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/SPAN&gt; 1;
            &lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;int&lt;/SPAN&gt; i &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/SPAN&gt; 1; i &amp;lt;= n;i++ )
            {
                previous  &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/SPAN&gt; (previous &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;*&lt;/SPAN&gt;(4 &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;*&lt;/SPAN&gt; i &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;+&lt;/SPAN&gt; 2)) &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/&lt;/SPAN&gt; (i &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;+&lt;/SPAN&gt; 2);
            }
            &lt;SPAN style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;return&lt;/SPAN&gt; previous;
        }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Θα μπορούσες ακόμα να γράψεις και last = last * (4*i +2) / (i+2) καθώς ο compiler εκτελεί τους πολλαπλασιασμούς με τη σειρά και δεν υπάρχει θέμα truncation. Καλό είναι πάντως να παραμείνουν οι παρενθέσεις για να μην έχει κάποιος το πρόβλημα που είχες κι εσύ.&lt;/P&gt;&lt;P&gt;spaceman, καλό θα ήταν να εξηγείς τον ψευδοκώδικα που γράφεις και να βάζεις και καμμία παραπομπή. Αλλιώς δίνεις την εντύπωση ότι έγραψες κάτι χωρίς ουσιαστικά να ελέγξεις αν δουλεύει. Άσε που όταν κάποιος ρωτάει πώς γίνεται κάτι, εννοείται ότι ζητάει και κάποια εξήγηση.&lt;/P&gt;&lt;P&gt;kgiann78, όταν έχεις ένα αναδρομικό αλγόριθμο ο οποίος αναφέρεται στην προηγούμενη τιμή του είναι εύκολο να τον μετατρέψεις σε επαναληπτικό, απλά αποθηκεύοντας κάπου το τελευταίο αποτέλεσμα του τελευταίου υπολογισμού. Αφού υπολογίσεις το νέο νούμερο, αντικαθιστάς το παλιό με το νέο. Η αρχική τιμή του "τελευταίου αποτελέσματος" είναι η αρχική τιμή του αλγόριθμου. Έτσι, μία επανάληψη από το 0 μέχρι το n είναι σαν να υπολογίζει όλες τις ενδιάμεσες τιμές από την πρώτη μέχρι την τελευταία, ενώ η αναδρομή δουλεύει με τον αντίθετο τρόπο.&lt;/P&gt;&lt;P&gt;Αν ο τύπος που θέλεις να χρησιμοποιήσεις είναι ο C(n+1)=C(n)*(4n+2)/(n+2),&amp;nbsp; μπορείς αρχικά να τον κάνεις&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;nextValue=previousValue* (4*n +2) &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/&lt;/SPAN&gt; (n &lt;SPAN style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;+&lt;/SPAN&gt; 2)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;Μετά, απλά αντικαθιστάς το nextValue με το previousValue. Ή, για συντομία, κάνεις την αντικατάσταση απευθείας: previousValue=previousValue * (4*n +2) / (n+2). Φτάνει να θυμάσαι ότι o τελεστής *= δεν είναι τελικά το ίδιο με το = *, όταν υπάρχει πιθανότητα truncation.&lt;/P&gt;</description></item><item><title>Απ: Καταλανοί, Βάσκοι και λοιποί... Catalan numbers στη C...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61685.aspx</link><pubDate>Thu, 16 Dec 2010 06:56:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61685</guid><dc:creator>spaceman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61685.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=29&amp;PostID=61685</wfw:commentRss><description>&lt;LI&gt;&lt;A title="Catalan number" href="http://www.dotnetzone.gr/wiki/Catalan_number"&gt;Catalan numbers&lt;/A&gt;: &lt;SPAN class=texhtml&gt;&lt;I&gt;C&lt;/I&gt;&lt;SUB&gt;&lt;FONT size=3&gt;0&lt;/FONT&gt;&lt;/SUB&gt; = 1&lt;/SPAN&gt;, &lt;SPAN class=texhtml&gt;&lt;I&gt;C&lt;/I&gt;&lt;SUB&gt;&lt;FONT size=3&gt;&lt;I&gt;n&lt;/I&gt; + 1&lt;/FONT&gt;&lt;/SUB&gt; = (4&lt;I&gt;n&lt;/I&gt; + 2)&lt;I&gt;C&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;&lt;FONT size=3&gt;n&lt;/FONT&gt;&lt;/I&gt;&lt;/SUB&gt; / (&lt;I&gt;n&lt;/I&gt; + 2)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;P&gt;catalan = 1 &lt;BR&gt;counter = 1&lt;BR&gt;while (counter &amp;lt;= n)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; &amp;nbsp;catalan *= (4*(counter-1) + 2)/(counter-1+2);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;counter++;&lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--HTH--&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Καταλανοί, Βάσκοι και λοιποί... Catalan numbers στη C...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61683.aspx</link><pubDate>Thu, 16 Dec 2010 01:09:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61683</guid><dc:creator>kgiann78</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61683.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=29&amp;PostID=61683</wfw:commentRss><description>Αυτές τις μέρες δίνω κατατακτήριες εξετάσεις για να μπώ στην Πληροφορική &amp;amp; Τηλ/νιες Αθηνών. Είναι ένα project - στοίχημα που θέλω πάρα πολύ να κερδίσω αλλά για την ώρα μου φαίνεται δύσκολο...&lt;br&gt;Που κολάνε τώρα οι Βάσκοι και οι Καταλανοί?&lt;br&gt;&lt;br&gt;Εχθές δίναμε εισαγωγή στον προγραμματισμό, μάθημα στο οποίο διδάσκεται η C.&lt;br&gt;Το ζητούμενο ενός θέματος ήταν να γράψουμε 2 συναρτήσεις, την int catalanrec(int n) και την int catalaniter(int n).&lt;br&gt;Η μια υπολογίζει έναν αριθμό Catalan αναδρομικά ενώ η άλλη με επανάληψη.&lt;br&gt;&lt;br&gt;Η πρώτη έγινε πολύ γρήγορα και άνετα, ούτως ή άλλως η αναδρομή είναι "μανούλα" για κάτι τέτοιες καταστάσεις. Εκεί που κόλησα ήταν η δεύτερη. Δυστυχώς ακόμη και αν έψαξα σε διάφορα σχετικά sites δεν μπορώ να πω ότι βρήκα επίλυση ενός αριθμού Catalan με επανάληψη...&lt;br&gt;&lt;br&gt;Έτσι το θέμα έμεινε μισό... Το ερώτημα μου είναι απλό. Μήπως κάποιος γνωρίζει κάτι σχετικό? Πως γκένειν η δεύτερη συνάρτηση?&lt;br&gt;&lt;br&gt;PS Άραγες μπορεί να ληφθεί υπόψη λύση από το πρόχειρο μήπως και τονώσει λίγο τη βαθμολογία??? Κλαψ... το χάσαμε αλλιώς το μάθημα πατριώτη...&lt;br&gt;</description></item></channel></rss>