<?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/74/ShowForum.aspx</link><description>Τα πρώτα βήματα στις γλώσσες VB6, VB.NET, και C#</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πρόβλημα - operators</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41045.aspx</link><pubDate>Fri, 21 Mar 2008 21:31:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41045</guid><dc:creator>Alexander</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41045.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=74&amp;PostID=41045</wfw:commentRss><description>.net 3.5 ...&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα - operators</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41044.aspx</link><pubDate>Fri, 21 Mar 2008 21:20:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41044</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41044.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=74&amp;PostID=41044</wfw:commentRss><description>Σε τί version του framework γράφεις; ( .. &lt;i&gt;για να μη γράψω ένα κατεβατό και να ανακαλύψουμε μετά οτι είμαι .. εκτός θέματος&lt;/i&gt; :) )&lt;br&gt;</description></item><item><title>Πρόβλημα - operators</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41031.aspx</link><pubDate>Thu, 20 Mar 2008 21:44:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41031</guid><dc:creator>Alexander</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41031.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=74&amp;PostID=41031</wfw:commentRss><description>Έχω το εξής πρόβλημα:&lt;br&gt;
&lt;br&gt;
Φτιάχνω μια βιβλιοθήκη επίλυσης Constraint Satisfaction Problems. Σαν
ιδέα, κάτι σαν αυτό που κάνει η Eclipse. Χοντρικά, υπάρχουν μεταβλητές
οι οποίες έχουν κάποιο πεδίο τιμών, και περιορισμοί μεταξύ των
μεταβλητών. Για παράδειγμα:&lt;br&gt;
&lt;br&gt;
Χ = [1,2,3,4,5]&lt;br&gt;
Υ = [1,2,3]&lt;br&gt;
&lt;br&gt;
Μπορούμε να βάλουμε τον περιορισμό Χ = Υ + 3, οπότε θα πάρουμε τις εξής δύο λύσεις:&lt;br&gt;
Χ = 4, Υ = 1&lt;br&gt;
Χ = 5 , Υ = 2&lt;br&gt;
&lt;br&gt;
Έχω λοιπόν υλοποιήσει κλάσεις CS_IntVar, CS_Constraint κτλ.&lt;br&gt;
Θέλω ο προγραμματιστής να μπορεί να δηλώνει μια CS_IntVar "εύκολα", μαζί με ένα περιορισμό, κάτι τέτοιο:&lt;br&gt;
&lt;br&gt;
CS_IntVar X = Y + 3.&lt;br&gt;
&lt;br&gt;
Έχω κάνει overload τον operator+ ως εξής: &lt;br&gt;
&lt;br&gt;
public static CS_IntVar operator +(CS_IntVar Y, int C)&lt;br&gt;
&amp;nbsp;&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;
CS_IntVar var = new CS_IntVar(Y.Problem, Y.min() + C, Y.max() + C);&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; var.Problem.add_variable(var);&lt;br&gt;
&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; //Create the constraint&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;
var.Problem.add_constraint(new CS_Constr_X_eq_Y_plus_C(var, Y, C));&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; return var;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
όπου Y.Problem είναι το πρόβλημα στο οποίο ανήκουν οι μεταβλητές.&lt;br&gt;
&lt;br&gt;
Ως εδώ όλα δουλεύουν μια χαρά. Θέλω όμως, να μπορεί ο προγραμματιστής
να "επιβάλλει" ένα περιορισμό ακόμα και αν έχει ήδη δημιουργήσει τις
μεταβλητές. Δηλαδή:&lt;br&gt;
&lt;br&gt;
CS_IntVar X = new CS_IntVar(...);&lt;br&gt;
CS_IntVar Y = new CS_IntVar(...);&lt;br&gt;
&lt;br&gt;
...&lt;br&gt;
&lt;br&gt;
X = Y + 3. &lt;br&gt;
&lt;br&gt;
Φαντάζομαι ότι ο operator= θα πρέπει να είναι κάποιος άλλος τον οποίο θα κάνω overload. Πώς μπορώ να το πετύχω αυτό;&lt;br&gt;
Υπάρχει τρόπος να ορίσω τους δικούς μου (καινούριους) τελεστές; (ή να
μπορώ να καλώ μια συνάρτηση όπως έναν operator, δηλ x = y func c)&lt;br&gt;
&amp;nbsp;Γίνεται να ορίσω ένα τελεστή που να επιστρέφει void;&lt;br&gt;
&lt;br&gt;
Ευχαριστώ πολύ!&lt;br&gt;</description></item></channel></rss>