vivaki5 Δημοσ. 15 Μαΐου 2011 Δημοσ. 15 Μαΐου 2011 Γεια σας και πάλι!!!Έχω να κάνω μια άσκηση στη visual basic και αντιμετωπίζω ένα πρόβλημα!!!Η άσκηση είναι η εξής... Να φτιαχτεί ένα πρόγραμμα το οποίο θα έχει στον designer δύο μόνο κουμπιά (ένα GO και ένα End) ένα textbox και ένα label. Πατώντας το GO το πρόγραμμα θέλουμε να μας βγάζει ένα inputbox και να μας ζητάει το μέγεθος των πινάκων (οι πίνακες θα είναι 2 και ο ένας θα έχει ονόματα φοιτητών και ο άλλος βαθμούς). Αφού ο χρήστης του δώσει το μέγεθος των πινάκων με inputbox πάλι αρχίζει να ζητάει το όνομα του κάθε φοιτητή και τον βαθμό του!!! Πριν πατηθεί το κουμπί GO στο textbox έχει γραφτεί ένα όνομα ενός φοιτητή και αφού ολοκληρωθεί όλη η προηγούμενη διαδικασία στο label θα βγάζει τον βαθμό του φοιτητή αυτού αλλιώς αν δεν υπάρχει το όνομα θα βγάζει στο label ότι δεν υπάρχει ο φοιτητής. Έχω κάνει όλη την άσκηση αλλά το πρόβλημα που έχω είναι ότι στο τέλος αντί να μου βγάζει το βαθμό του φοιτητή που έχω ζητήσει μου βγάζει το βαθμό του τελευταίου φοιτητή που έχει ο πίνακας. Αν μπορεί κάποιος ας βοηθήσει σε αυτό το σημείο!!! Τέλος αφού διορθώσω το πρόγραμμα πρέπει να το ξαναφτιάξω και αντί για Do...Loop Until να χρησιμοποιήσω τη δομή επανάληψης While.(κυρίως με ενδιαφέρει να λυθεί το προηγούμενο πρόβλημα και μετά αυτό με τη δομή επανάληψης) Παρακάτω έχω βάλει το στάδιο στο οποίο βρίσκομαι στον κώδικα καθώς και τον designer.
rafail1994 Δημοσ. 15 Μαΐου 2011 Δημοσ. 15 Μαΐου 2011 Ο πινάκας που είναι ; Σε settings τα αποθηκεύεις;
vivaki5 Δημοσ. 15 Μαΐου 2011 Μέλος Δημοσ. 15 Μαΐου 2011 Ο πινάκας που είναι ; Σε settings τα αποθηκεύεις; Τι ακριβώς εννοείς??Απ την στιγμή που γράφω π.χ. Onoma(A) δεν σημαίνει ότι δηλώνω πίνακα??γιατί αυτήν την εντύπωση είχα μέχρι τώρα...
TheELF Δημοσ. 15 Μαΐου 2011 Δημοσ. 15 Μαΐου 2011 1.Τα Α δεν πρέπει να είναι νούμερο για να δουλέψει το όλο σκηνικό; 2.Στο κεντρικό For..next όπου εισάγεις τα στοιχεία,το A δεν αλλάζει ποτέ εισάγεις δηλαδή πάντα στην ίδια θέση του πίνακα σβήνοντας τα προηγούμενα. Αυτά είναι τα πολύ χοντρά που έπιασε το μάτι μου.
vivaki5 Δημοσ. 15 Μαΐου 2011 Μέλος Δημοσ. 15 Μαΐου 2011 1.Τα Α δεν πρέπει να είναι νούμερο για να δουλέψει το όλο σκηνικό; 2.Στο κεντρικό For..next όπου εισάγεις τα στοιχεία,το A δεν αλλάζει ποτέ εισάγεις δηλαδή πάντα στην ίδια θέση του πίνακα σβήνοντας τα προηγούμενα. Αυτά είναι τα πολύ χοντρά που έπιασε το μάτι μου. Μπράβο ρε TheELF!!!Τόση ώρα το είχα μπροστά μου αλλά δεν τα έβλεπα τα λάθη!!!Ευχαριστώ πολύ!!! Μήπως μπορείς να βοηθήσεις ώστε το φτιάξουμε και με While αντί για Do...Loop Until??
vivaki5 Δημοσ. 15 Μαΐου 2011 Μέλος Δημοσ. 15 Μαΐου 2011 Υπάρχει κάποιος που ίσως θα μπορούσε να βοηθήσει ώστε να αλλάξουμε τη δομή επανάληψης του προγράμματος σε While...End While???Το πρόγραμμα είναι το παρακάτω!!! Dim A As Integer A = InputBox("ποιο θα είναι το μέγεθος των πινάκων?", "Μέγεθος πινάκων") Dim Onoma(A) As String Dim Vathmos(A) As Integer Dim I As Integer For I = 0 To (A - 1) Onoma(I) = InputBox("ΠΑΡΑΚΑΛΩ ΕΙΣΑΓΕΤΕ ΦΟΙΤΗΤΗ", "ΟΝΟΜΑΤΑ ΦΟΙΤΗΤΩΝ") Vathmos(I) = InputBox("ΠΟΙΟΣ ΕΙΝΑΙ Ο ΒΑΘΜΟΣ ΤΟΥ ΦΟΙΤΗΤΗ" & (I + 1), "ΒΑΘΜΟΙ ΦΟΙΤΗΤΩΝ") Next Dim OnomaAnazitisis As String OnomaAnazitisis = TxtOnomaAnazitisis.Text Dim N As Integer N = -1 Do N = N + 1 Loop Until (Onoma(N) = OnomaAnazitisis) Or (N = Onoma.GetUpperBound(0)) Dim Apotelesma As String Apotelesma = "Δεν υπάρχει ο φοιτητής" If N < Onoma.GetUpperBound(0) Then LblApotelesma.Text = CStr(Vathmos(N)) Else LblApotelesma.Text = CStr(Apotelesma) End If
_tasos Δημοσ. 16 Μαΐου 2011 Δημοσ. 16 Μαΐου 2011 Όταν λες δομή επανάληψης, εννοείς αυτό; > Dim N As Integer N = -1 Do N = N + 1 Loop Until (Onoma(N) = OnomaAnazitisis) Or (N = Onoma.GetUpperBound(0)) Αυτό μπορεί να γίνει έτσι: > Dim N As Integer N = -1 While (Not ((Onoma(N) = OnomaAnazitisis) Or (N = Onoma.GetUpperBound(0)))) N = N + 1 End While ή κάπως έτσι: > Dim N As Integer N = -1 While ((Onoma(N) <> OnomaAnazitisis) And (N <> Onoma.GetUpperBound(0)) N = N + 1 End While Οι δύο συνθήκες είναι ισοδύναμες.
vivaki5 Δημοσ. 16 Μαΐου 2011 Μέλος Δημοσ. 16 Μαΐου 2011 Ναι αυτό εννοώ!!!Ευχαριστώ πολύ!!!Δεν είχα καταλάβει πως μπορούσε απλά να γίνει με ένα Not!!!Αυτό θα μου χρειαστεί και για τη συνέχεια του μαθήματος που παρακολουθώ!!!Και πάλι ευχαριστώ!!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.