Προς το περιεχόμενο

Γενικό thread αποριών για τη C#.


Alithinos

Προτεινόμενες αναρτήσεις

Παντως σε τι γλωσσα θα γράψει ο καθενας ειναι δικο του θεμα ειτε ειναι η Α ειτε η Β ειτε η C ειτε η Μ2000 αυτα σε ξενα φορουμ δεν τα βλεπεις ευκολα.

 

 

Ας πάει τότε ο M2000 στο Stack Overflow να απαντά σε όλα τα μηνύματα με κώδικα από τη δική του γλώσσα. Θα κερδίσει και διεθνές κοινό αφού όλοι εδώ είμαστε μίζεροι ελληναράδες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 505
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Γιατι μονο ο Star_Light θα υποστηριζε τον migf1? ο ανθρωπος έγραφε σοβαρα προτζεκτ και ήξερε πράγματα και εσυ προσπαθουσες να πιαστεις απο χαζομάρες για να του την πεις επιτηδες για να φανεις εξυπνοτερος. Το ιδιο που κάνεις τωρα και στον Μ2000.

 

Τοτε ειχες φάει κολλημα με την C++ τωρα σε πειράζει που ο μ2000 παιζει με την δικια του ε? τωρα σε πειράζει βεβαια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι, η ομοιότητα έγκειται στο ότι ο StarLight ήταν ακριβώς το ίδιο είδος βλάκα που έπαιρνε θέση βάσει οπαδισμού χωρίς καν να καταλαβαίνει για τι πράγμα μιλάμε.

 

Αν με πειράζει; Καίγεται η σούφρα μου λέμε.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έφυγα για δυο πιτόγυρα...και τίποτα ακόμα...First Class Members....τι κάνουμε τελικά, ποιος θα μας πει πώς θα ήθελε τις First Class Functions...και που είναι ένα παράδειγμα που έχουν χρησιμοποιήσει τέτοιες;

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι, η ομοιότητα έγκειται στο ότι ο StarLight ήταν ακριβώς το ίδιο είδος βλάκα που έπαιρνε θέση βάσει οπαδισμού χωρίς καν να καταλαβαίνει για τι πράγμα μιλάμε.

 

Αν με πειράζει; Καίγεται η σούφρα μου λέμε.

 

http://www.insomnia.gr/topic/421963-%CE%B1%CE%BB%CE%B3%CF%8C%CF%81%CE%B9%CE%B8%CE%BC%CE%BF%CF%82-%CF%84%CE%B5%CF%87%CE%BD%CE%B7%CF%84%CE%AE%CF%82-%CE%BD%CE%BF%CE%B7%CE%BC%CE%BF%CF%83%CF%8D%CE%BD%CE%B7%CF%82-%CE%B3%CE%B9%CE%B1-%CF%84%CE%BF-%CF%80%CE%B1%CE%B9%CF%87%CE%BD%CE%AF%CE%B4/

 

Πάλι καλα που εσυ συμμετέχεις μονο σε νήματα που καταλαβαινεις τι συζητάνε. Ο άνθρωπος μπηκε να κάνει μια ερωτηση και εσυ πιάστηκες απο τον ..... τίτλο για να ξεκινησεις να κάνεις τον έξυπνο. Τοτε δεν ημουν μελος αλλα μου ειχε κάνει μεγαλη εντυπωση. :cry:

 

Μαλλον δεν ήξερες την απάντηση καθως οπως βλεπω και παρακατω δεν απαντάς πουθενα αλλα πας την κουβέντα αλλού. Οτι να ναι δηλαδη. Εκτος τοπου και χρονου. 3 λαλουν και ο defacer χορευει.

 

Τσατισου με τον Μ2000 τωρα που ειναι και καλα εκτος θέματος.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Να σε ρωτησω κατι? ο καθενας παρουσιάζει προγραμματα και αλγοριθμους ή παραδειγματα στη γλώσσα που ξέρει καλυτερα αλλωστε εδω μεσα δεν πληρωνομαστε ουτε εισαι ο διευθυντης μου να μου πεις σε ποια γλώσσα θα βάλω το παράδειγμα μερικοι ειναι εκτος τοπου και χρονου την λένε στους αλλους, πουλάνε μουρη οτι ξέρουν περισσοτερα , επικρινουν κοσμο κτλπ και ξαναλεω ο Μ2000 δεν ειναι το προβλημα και παλιοτερα που παρακολουθουσα γινοταν αυτο απλα κάποιοι έχουν προβλημα μολις εμφανιστει κάποιος που ισως ξέρει περισσοτερα απο αυτους. Αυτο βλεπω εγω. Τωρα ενταξει δεν περιμενω να το παραδεχθει κάποιος αυτο γιατι αν το ειχε δεχτει θα ειχε και αλλη συμπεριφορά αλλα κουβεντα να γινεται.

 

Παντως σε τι γλωσσα θα γράψει ο καθενας ειναι δικο του θεμα ειτε ειναι η Α ειτε η Β ειτε η C ειτε η Μ2000 αυτα σε ξενα φορουμ δεν τα βλεπεις ευκολα. Ειδικα αμα εχεις γράψει στο Cboard. Μπαινεις - ρωτάς σε εξυπηρετούν αμα γουστάρουν και τελειωνει εκει το θεμα ουτε εγω ξέρω καλυτερα ουτε ο κώδικας σου ειναι χάλια ουτε εκεινο ειναι ασχολιαστο ουτε τιποτα. Και ποιος εισαι εσυ ρε μεγαλε που θα κρινεις το δικο μου κώδικα? σαλτα και πηγαινε για κανα σουβλάκι την ειδες και επαγγελματιας εγω ετσι γουσταρω να γράφω κώδικα.

 

Ολα τα παραπανω , κατα τα αλλα ο Μ2000 χαλάει το κλιμα και μας πειραξε .... υποκρισια και κλικες.

 

Ντάξει κοίτα κάποιοι εκφράζονται με 'ατυχές' εκφράσεις (συμπεριλαμβανομένου του Μ2000), αλλά όπου υπάρχει καπνός υπάρχει και φωτιά, έτσι δεν είναι ?

 

Η φωτιά στη συγκεκριμένη περίπτωση είναι ότι μπορεί ο Μ2000 να ξέρει πολλά πράγματα, αλλά απ τη μια η αυτοδιαφήμιση του καταντάει ενοχλητική μετά από κάποιο σημείο,(όχι μόνο του Μ2000, γενικά το σπαμ για αυτοδιαφήμιση) και από την άλλη ότι ο τρόπος που προσπαθεί να πει κάτι, εκφραστικά δεν είναι ο καλύτερος, και αρκετά συχνά χρησιμοποιεί μη standard ορολογία με δικές του ονομασίες,και καταλήγουν αρκετοί από όσους διαβάζουν αυτά που λέει να μη καταλαβαίνουν ακριβώς τι θέλει να πει, να βγάζουν δικά τους συμπεράσματα για το τι εννοεί ο Μ2000 όταν χρησιμοποιεί τις δικές του ονομασίες, και να καταλήγουν περισσότερο μπερδεμένοι από ότι ήταν πριν.

 

Δεν υπάρχει κάποιος κανόνας στο insomnia που να λέει "να γράφετε τα παραδείγματα στη τάδε γλώσσα", αλλά θεωρείται best practice αν κάποιος σου ζητάει μια ερώτηση για μια συγκεκριμένη γλώσσα, να του απαντάς για τη γλώσσα που σε ρώτησε, και αν γράψεις κώδικα, να το κάνεις σε αυτή τη γλώσσα.

(Ή έστω σε μια συγγενή γλώσσα, όπως πχ έχουν συγγένεια οι C,C#,Java...)

 

Εκτός αν το ερώτημα είναι γενικό και δεν διασαφηνίζει κάποιο περιορισμό, δεν θα πρέπει η απάντηση να λαμβάνει υπ' όψιν της τον περιορισμό ? Αν αυτός που ζητάει την απάντηση ήθελε μια γενική απάντηση, δεν θα συγκεκριμενοποιούσε τη γλώσσα γράφοντας πχ "πως γίνεται αυτό στη τάδε", θα έγραφε απλά "πως γίνετε αυτό".

 

Δες τη δημιουργία απάντησης στο φόρουμ σαν δημιουργία λογισμικού: Κάποιος Χ σου ζητάει μια λύση σε ένα πρόβλημα, (πχ να εμφανίζεται η τρέχον θερμοκρασία για τη πόλη που βρίσκεται) και σου παρουσιάζει τις απαιτήσεις του λογισμικού που περιμένει να του φτιάξεις. Τι θα του πεις ? "Σου έφτιαξα τo λογισμικό αλλά δεν έδωσα σημασία στους περιορισμούς των απαιτήσεων και έτσι αντί να τρέχει σε Android KitKat που μου ζήτησες, τρέχει σε Windows 7" ?  :P

 

Τότε γιατί αν κάποιος σου ζητά να του φτιάξεις ένα λογισμικό μια απάντηση φόρουμ, εσύ αγνοείς τις απαιτήσεις, και του φτιάχνεις ένα λογισμικό μια απάντηση σε Windows 7  άλλη γλώσσα ?

 

Διευθυντής σου δεν είναι ο άλλος, και έτσι δε μπορεί να σε αναγκάσει να κάνεις τίποτα, και μπορείς απλά να αγνοήσεις κάτι. Με το να του φτιάξεις όμως μια απάντηση που αγνοεί τις απαιτήσεις του προβλήματος και άρα δεν λύνει το πρόβλημά του, δεν τον βοηθάς κάπως...

Γιατι μονο ο Star_Light θα υποστηριζε τον migf1? ο ανθρωπος έγραφε σοβαρα προτζεκτ και ήξερε πράγματα και εσυ προσπαθουσες να πιαστεις απο χαζομάρες για να του την πεις επιτηδες για να φανεις εξυπνοτερος. Το ιδιο που κάνεις τωρα και στον Μ2000.

 

Τοτε ειχες φάει κολλημα με την C++ τωρα σε πειράζει που ο μ2000 παιζει με την δικια του ε? τωρα σε πειράζει βεβαια.

Πάντως από την ερώτηση που έκανα για τους πρώτους αριθμούς, η απάντηση του defacer με βοήθησε να καταλάβω που έκανα λάθος.

http://www.insomnia.gr/topic/603068-περί-μετατροπών-και-casting-c/?p=54758319

 

Ο m2000 μου έλεγε να μετατρέψω κώδικα από Μ2000 σε C# και να τον τρέξω.

Μόνο που 

 

1) Από τη μια δεν μπορώ να διαβάσω κώδικα Μ2000

2) Το να δω μια πιθανή λύση δεν σημαίνει απαραίτητα πως μου λύνεται η απορία του τι κάνω λάθος στη δική μου λύση.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Alithinos,

ξεφύγαμε εδώ λίγο για το θέμα του First Class Functions. Στο θέμα που έδωσες για τους πρώτους, έκανες μια προσπάθεια να καταλάβεις απλό κώδικα (Basic 99%)  που περιέγραφε απλά το πώς χειριζόμαστε έναν πίνακα για να ξέρουμε μέχρι ένα νούμερο ποιους πρώτους έχουμε. Σου έγραψα πιο κάτω την εξήγηση, το πώς δουλεύει αλλά δεν μου απάντησες, δεν κατάλαβα δηλαδή ότι το είδες.

Περίμενα να το υλοποιήσεις σε C#. Ήξερα ότι στη Rosseta υπήρχε αλλά δεν ήθελα να το δώσω. Είναι σαν να δίνεις σε αυτόν που βλέπει κονσέρβα παιχνίδι...το αποτέλεσμα. Τον σκοτώνεις. Νόμιζα ότι αν σου έβρισκα τον κώδικα θα σε αχρήστευα.

Κάποιοι εδώ το κορόιδεψαν. Δεν ξέρω τι πετυχαίνουν, αλλά εγώ δεν έχω πρόβλημα. Ο καθένας συμπεριφέρεται όπως βλέπει τον εαυτό του. Ο γελοίος κάνει γελοιότητες και ο σοβαρός ενεργεί σοβαρά!

Καλό είναι στο τέλος να παραθέσεις το τελικό πρόγραμμα που έφτιαξες, ώστε όλοι να δουν ότι ξεκίνησες από το Α και έφτασες στο Β. Και τελικά να έχουμε "λύση" του θέματος. Έτσι η συζήτηση δεν θα γίνεται επί προσωπικού ενδιαφέροντος, αλλά θα έχει και κάτι για το "κοινό".


Το πρόβλημα στο δικό σου πρόγραμμα ήταν ότι δεν γνώριζες τι είναι πρώτος. άρα τι να συζητάμε για το For...Το For το βρίσκεις αν κάνεις λάθος βάζοντας διαδοχικές εμφανίσεις τιμών...δηλαδή με κάποιο τρόπο κάνεις ένα έλεγχο της ροής. Αν το είχες κάνει δεν θα ρώταγες καν για το For.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχικά κατέληξα σε αυτό εδώ:

class FindPrime
{
    static void Main()
    {
        for (int x = 2; x <= 100; x++)
        {
            isPrime(x);
        }
        Console.ReadLine();
    }

    static void isPrime(int x)
    {
        int y;
        bool diaireitai = true;
        for (y = 2; y <= x / y; y++)
        {
            if (x % y == 0)
            {
                diaireitai = false;
            }
        }
        if (diaireitai == true)
            Console.WriteLine(x);
    }
}

Αν και πλέον ξέρω πως θα ήταν καλύτερο να το γράψω έτσι:

class FindPrime
    {
        static void Main()
        {
            for (int x = 2; x <= 100; x++)
            {
                if (isPrime(x) == true)
                    Console.WriteLine(x);
            }
            Console.ReadLine();
        }

        static bool isPrime(int x)
        {
            int y;
            bool diaireitai = true;
            for (y = 2; y <= Math.Sqrt(x); y++)
            {
                if (x % y == 0)
                     diaireitai = false;
            }
            if (diaireitai == true)
                return true;
            else
                return false;
        }
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Even better
 

        static bool isPrime(int x)
        {
            for (var y = 2; y <= Math.Sqrt(x); y++)
            {
                if (x % y == 0)
                {
                     return false;
                }
            }

            return true;
        }

Simple is good.


Not as simple αλλά για να μπαίνεις στο κλίμα του LINQ
 

Func<int, bool> isPrime = x => Enumerable.Range(2, (int)(Math.Sqrt(x)) - 1)
                                         .All(y => x % y != 0);

var inputs = new[] { 2, 3, 4, 25, 31 };

foreach (var x in inputs)
{
    Console.WriteLine("{0} is {1}", x, isPrime(x) ? "prime" : "not prime");
}
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Alithinos,

Tο πρόγραμμα έχει ένα θέμα! Παρατηρούμε ότι εκτελείς διαιρέσεις (ελέγχεις το υπόλοιπο). Ενώ η λύση δεν θέλει διαίρεση!

Ασφαλώς και το Simple είναι Good...αλλά όταν υπάρχει: Ερατοσθένης και Euler, δεν μπορούμε να τους αγνοούμε. Και εδώ μιλάμε για απλότητα!

Ξεκινάς από το 2 και βγάζεις εκτός (με έναν τρόπο) όλα τα νούμερα μέχρι το 100 με βήμα 2, μετά πας στο 3 και βγάζεις εκτός όλα τα νούμερα μέχρι το 100 με βήμα 3...και συνεχίζεις μέχρι  το τετράγωνο του αριθμού, που βάζεις κάθε φορά για βήμα να πάει πάνω από το 100. Πάντα επιλέγεις για βήμα έναν αριθμό που δεν έχει βγει εκτός. Εκτός βγαίνουν οι αριθμοί με αφαίρεση. Ξεκινούν από το μηδέν και όποιος είναι <0 είναι εκτός. Στο τέλος όσοι αριθμοί (θέσεις στο πίνακα) είναι 0 τότε είναι πρώτος.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Alithinos μπορει μια λυση να μην ειναι σωστη εξαρχής οποτε θα πρέπει να την αλλαξεις αναγκαστικα με κώδικα που θα βρεις ή θα δεις απο αλλού. Αυτο δεν σε κρατάει πισω απλα σου δινει περισσοτερες ιδέες για την επομενη φορά. Τουλαχιστον ετσι το βλεπω εγώ.

 

Τωρα εντάξει στον κώδικα λεπτομέρειες οπως "χρησιμοποιησε την τάδε εκδοση της for .... ή στην if με σωμα μιας εντολής βάλε braces" δεν πιστευω οτι ειναι σημαντικά και ειναι στην ευχερεια του καθενος. Αμα σου πει ο τάδε προισταμενος ξέρεις θα το κανεις ετσι .... οκ ειναι προσωπικο του κόλλημα δεν ειναι τιποτε το φοβερο ο κωδικας θα δουλεψει ουτως ή αλλως.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Βεβαίως. Sieve με LINQ λοιπόν:
 

Func<int, IEnumerable<int>> nonPrimesUpTo = limit => 
    Enumerable.Range(2, (int)(Math.Sqrt(limit)) - 1)
              .SelectMany(x => Enumerable.Range(2, limit / x).Select(y => x * y))
              .Distinct();

Func<int, IEnumerable<int>> sieve = limit => Enumerable.Range(2, limit - 1)
                                                       .Except(nonPrimesUpTo(limit));

foreach (var prime in sieve(100))
{
    Console.WriteLine(prime);
}

Μπορεί να γίνει και μονοκόμματο, το χώρισα για να διαβάζεται (kind of).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η ουσία του παραπάνω αγαπητέ δεν είναι να διαβάζεται. Αν μου το έδινε αυτό κανένας για εργασία θα του έλεγα "είσαι γαμάτος αλλά μη το ξανακάνεις αυτό".

 

Η ουσία είναι να καταλάβεις πώς αυτό το πράγμα κάνει Ερατοσθένη. Η κατανόηση αυτή θα βγάλει στο μέλλον τα λεφτά της και με το παραπάνω. Ακόμα και αν δε ξαναχρησιμοποιήσει C# ποτέ του.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...