Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Που είναι το λάθος εδώ??

Îåêßíçóå áðü ôï ìÝëïò csharpnewbiesdude. Τελευταία δημοσίευση από το μέλος csharpnewbiesdude στις 23-07-2008, 20:03. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-07-2008, 14:04 43628

    Που είναι το λάθος εδώ??

    Έγραψα τον παρακάτω κώδικα σε c# αλλα δυστυχώς δεν παίρνω τα σωστά αποτελέσματα, παρότι τρέχει κανονικά ο κώδικας.

     private void button1_Click(object sender, EventArgs e)
    {
    int a = textBox1.Text.Length;
    double b;
    double  sum = 0;
    for (int k = 1; k<4; k++)
    {
    b = ((a ^k ) * k) + ((a ^k ) * 2);
    sum = sum + a;
    }
    textBox2.Text = sum.ToString();
    }

    Η πρώτη μου απορία είναι γιατί δεν τρέχει σωστά ενώ θεωρητικά θα έπρεπε??

    παράδειγμα για a = 10; και for (int k = 1; k<4; k++) το αποτέλεσμα θα έπρεπε να είναι 5430 και μου βγάζει 177.

    Ξανάγραψα το κώδικα σε vb6 και το αποτέλεσμα που πήρα ήταν μια χαρά σωστό.Δείτε και τον κώδικα της vb6

    Private Sub Command1_Click()

    Dim a As Integer
    a = len(text1.text)
    Sum = 0
    For k = 1 To 3
    b = ((a ^ k) * k) + ((a ^ k) * 2)
    Sum = Sum + a
    Next k

    Text2.Text = Sum

    End Sub

    Συνεπώς κάτι γράφω λάθος στον κώδικα της c# και δεν περνώ σωστό αποτέλεσμα.Το θέμα είναι τι κάνω λάθος??Μια βοήθεια παρακαλώ!!!


    Επίσης θα ήθελα να ρωτήσω κάτι πραγματάκια
    1. Γιατί παίρνω λάθος αν γράψω αυτό?? for (int k = 1; k=3; k++) υπάρχει περιορισμός με το ίσον??
    2.Πως θα μπορούσα να αλλάξω αυτόν τον κώδικα for (int k = comboBox1.Text; k=comboBox2.Text; k++)  ώστε να μην παίρνω λάθος αλλα να μου κάνει την δουλειά που θέλω??

    Ευχαριστώ προκαταβολικά!!!

  •  23-07-2008, 14:19 43629 σε απάντηση της 43628

    Απ: Που είναι το λάθος εδώ??

    Νομιζω εχει λογικο λαθος... Κανεις τον υπολογισμο για να βγαλεις το b αλλα μετα? Τι το κανεις? Επισης το Sum το λογικο ειναι βγαινει textBox1.Text.Length *3 Δηλαδη για 4 χαρακτηρες θα παρεις 12, για 5 χαρακτηρες 15 και τα λοιπα....

    Πρεπει να εξηγησεις τι θες να κανεις....

    1. Πρεπει να βαλεις for (int k = 1; k<=3; k++)

  •  23-07-2008, 15:04 43636 σε απάντηση της 43628

    Απ: Που είναι το λάθος εδώ??

    C# δεν γνωρίζω, VB από την σχολή οπότε You cann't teach an old dog new tricks. Αλλά θα κάνω μία διαφορετική προσέγγιση.

    Επειδή ο operator ^ στην VB χρησιμοποείται σαν δύναμη, δεν σημαίνει ότι το ίδιο θα έπρεπε να κάνει και η C# για τον ίδιο operator. Συντακτικά ο κώδικας είναι σωστός όπως τον έχεις γράψει, υποθέτω ότι η μεταβλητή b αθροίζεται στο sum και όχι η a οπότε αυτό είναι τυπογραφικό λάθος. Μου φαίνεται πως κάτι άλλο γίνεται με την ^ στην C#.

    Υπάρχει κανείς που να γνωρίζει και τις δύο γλώσσες και να μας πει αν το ^ κάνει το ίδιο πράγμα και στις δύο;

  •  23-07-2008, 16:05 43638 σε απάντηση της 43636

    Απ: Που είναι το λάθος εδώ??

    O exponentiation operator "^" της VB.NET δεν υπάρχει στη C# (o ίδιος operator στη C# κάνει logical XOR). Θα πρέπει να χρησιμοποιηθεί η Math.Pow
    Vir prudens non contra ventum mingit
  •  23-07-2008, 19:19 43644 σε απάντηση της 43638

    Απ: Που είναι το λάθος εδώ??

    Σας ευχαριστώ όλους.Είχατε δίκιο για τον operator ^ αυτό ήταν το όλο σφάλμα και με την math.pow λύθηκε.
    Ωστόσο έχω 1 ακόμα απορα σε αυτο το θέμα

    Πως θα μπορούσα να αλλάξω αυτόν τον κώδικα for (int k = comboBox1.Text; k<=comboBox2.Text; k++)  ώστε να μην παίρνω λάθος αλλα να μου κάνει την δουλειά που θέλω??
    Δηλαδή τι φτάει εδώ με το comboBox1.Text   και comboBox2.Text ???
    μήπως πρέπει να προσθέσω κάτι?? Σίγουρα κάτι μου διαφεύγει αλλα δεν ξέρω τι??

  •  23-07-2008, 19:35 43645 σε απάντηση της 43644

    Απ: Που είναι το λάθος εδώ??

    int k = Int32.Parse(ComboBoxText1.Text); ή int k = Convert.ToInt32(Combobox1.Text)

    Εννοείτε ότι το ίδιο πρέπει να κάνεις και με το το combobox2.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  23-07-2008, 20:03 43647 σε απάντηση της 43645

    Απ: Που είναι το λάθος εδώ??

    Panagiotis Kefalidis:

    int k = Int32.Parse(ComboBoxText1.Text); ή int k = Convert.ToInt32(Combobox1.Text)

    Εννοείτε ότι το ίδιο πρέπει να κάνεις και με το το combobox2.




    Ευχαριστώ πολύ....αν και τελικά το βρήκα μονος μου το int32.parse αλλα και πάλι ευχαριστώ γενικά όλους σας.Keep Reading!!!!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems