steve62742 Δημοσ. 30 Μαρτίου 2011 Δημοσ. 30 Μαρτίου 2011 Παιδια εχω ενα τρελο προβλημα με την visual basic. Προσπαθω να ταξινομησω εναν πινακα και βαση αυτου και αλλον εναν. Παρακατω εχω τον κωδικα για αυτο το πραγμα For i = 0 To 5 - 1 For j = i + 1 To 5 - 1 If b(i) > b(j) Then temp = b(i) b(i) = b(j) b(j) = temp temp2 = A(i) A(i) = A(j) A(j) = temp2 temp2 = A(i + 5) A(i + 5) = A(j + 5) A(j + 5) = temp2 temp2 = A(i + 10) A(i + 10) = A(j + 10) A(j + 10) = temp2 End If Next j Next i εχω δοκιμασει πολες παραλαγες της φυσσαλιδας αλλα οτι και να κανω δεν δουλευει σωστα....για καποιον ανεξηγητο πραγματικα λογο ξεκινησα το προγραμμα απο την αρχη,εκανα copy paste ακριβως τον ιδιο κωδικα και δουλεψε αλλα τελικα αφου προχωρησα λιγο ακομα το προγραμμα τωρα δεν τα ταξινομει σωστα παλι... Εγω εχω εναν μονοδιαστατο πινακα Α 15 θεσεων και εναν πινακα Β 5 θεσεων (ο Β βγενει απο τον πολλαπλασιασμο τον στοιχειων 0*5*10 κτλ του Α) και θελω να ταξινομησω τον Β και αντιστοιχα τα στοιχεια του Α απο τα οποια προηλθε..... Οποια βοηθεια μπορειτε να δωσετε ευπροσδεκτη
virxen75 Δημοσ. 31 Μαρτίου 2011 Δημοσ. 31 Μαρτίου 2011 1)ποια έκδοση χρησιμοποιείς? 2)σίγουρα δεν πειράζεις τα δεδομένα κάπου αλλού μέσα στο πρόγραμμα? εμένα δούλεψε σωστά με βάση αυτά που κατάλαβα αν πάλι θέλεις και τις τριάδες τιμών (0*5*10 κλπ) ταξινομημένες στον Α δες τον πιο κάτω κώδικα > Dim i, j, temp, temp1, temp2, temp3 As Integer Dim b(0 To 4) As Integer Dim A(0 To 14) As Integer For i = 0 To 15 - 1 A(i) = -3 * i Debug.Print "A(" + CStr(i) + ")=" + CStr(A(i)) Next i For i = 0 To 5 - 1 b(i) = A(i) * A(i + 5) * A(i + 10) Debug.Print "B(" + CStr(i) + ")=" + CStr(b(i)) Next i For i = 0 To 5 - 1 For j = i + 1 To 5 - 1 If b(i) > b(j) Then temp = b(i) b(i) = b(j) b(j) = temp temp1 = A(j) temp2 = A(j + 5) temp3 = A(j + 10) A(j) = A(i) A(j + 5) = A(i + 5) A(j + 10) = A(i + 10) If (temp1 > temp2) Then temp = temp1 temp1 = temp2 temp2 = temp End If 'mexri edo sigoura temp1<=temp2 If (temp1 > temp3) Then temp = temp1 temp1 = temp3 temp3 = temp End If 'mexri edo sigoura temp1<=temp2 k' temp1<=temp3 If (temp2 > temp3) Then temp = temp2 temp2 = temp3 temp3 = temp End If 'mexri edo sigoura temp1<=temp2<=temp3 A(i) = temp1 A(i + 5) = temp2 A(i + 10) = temp3 End If Next j Next i For i = 0 To 15 - 1 Debug.Print "A(" + CStr(i) + ")=" + CStr(A(i)) Next i For i = 0 To 5 - 1 Debug.Print "B(" + CStr(i) + ")=" + CStr(b(i)) Next i
steve62742 Δημοσ. 31 Μαρτίου 2011 Μέλος Δημοσ. 31 Μαρτίου 2011 φιλε πρωτα σε ευχαριστω που ασχολιθηκες πραγματικα δεν μπορω να καταλαβω γιατι δεν δουλευει...ο μονος προιγουμενος κωδικας που εκτελειτε ειναι αυτος > Randomize For i = 0 To 5 - 1 '' Ôõ÷áßá ôéìÞ ãéá ðñüùóç ìÝ÷ñé 1000 A(i) = Int((1000 - 0 + 0) * Rnd) + 0 Next i For i = 5 To 10 - 1 A(i) = Int((7000 - 10 + 10) * Rnd) + 0 ''Ôõ÷áßá ôéìÞ ãéá óôñïöÝò ìÝ÷ñé 7000 Next i For i = 10 To 15 - 1 ''Ôõ÷áßá ôéìÞ ãéá âÜèïò êïðÞò ìÝ÷ñé 5 A(i) = (Int((50) * Rnd) + 1) / 10 Next i For i = 0 To 4 b(i) = A(i) * A(i + 5) * A(i + 10) Next i και μετα εκτελειτε η ταξινομηση η οποια οτι και να κανω για καποιο λογο δεν γινετε σωστα....
virxen75 Δημοσ. 2 Απριλίου 2011 Δημοσ. 2 Απριλίου 2011 αποτελέσματα ΠΡΙΝ ΤΗΝ ΤΑΞΙΝΟΜΗΣΗ A(0)=125 A(1)=273 A(2)=358 A(3)=951 A(4)=315 A(5)=5136 A(6)=959 A(7)=2741 A(8)=6453 A(9)=2707 A(10)=0 A(11)=3 A(12)=3 A(13)=4 A(14)=4 b(0)=0 b(1)=785421 b(2)=2943834 b(3)=24547212 b(4)=3410820 ΜΕΤΑ ΤΗΝ ΤΑΞΙΝΟΜΗΣΗ A(0)=125 A(1)=273 A(2)=358 A(3)=315 A(4)=951 A(5)=5136 A(6)=959 A(7)=2741 A(8)=2707 A(9)=6453 A(10)=0 A(11)=3 A(12)=3 A(13)=4 A(14)=4 b(0)=0 b(1)=785421 b(2)=2943834 b(3)=3410820 b(4)=24547212 κώδικας > Dim b(0 To 4) As Long Dim A(0 To 14) As Long Randomize For i = 0 To 5 - 1 A(i) = Int(1000 * Rnd) Next i For i = 5 To 10 - 1 A(i) = Int(7000 * Rnd) Next i For i = 10 To 15 - 1 A(i) = (Int(50 * Rnd) + 1) / 10 Next i For i = 0 To 4 b(i) = A(i) * A(i + 5) * A(i + 10) Next i Debug.Print "ΠΡΙΝ ΤΗΝ ΤΑΞΙΝΟΜΗΣΗ" For i = 0 To 14 Debug.Print "A(" + CStr(i) + ")=" + CStr(A(i)) Next i For i = 0 To 4 Debug.Print "b(" + CStr(i) + ")=" + CStr(b(i)) Next i For i = 0 To 5 - 1 For j = i + 1 To 5 - 1 If b(i) > b(j) Then temp = b(i) b(i) = b(j) b(j) = temp temp2 = A(i) A(i) = A(j) A(j) = temp2 temp2 = A(i + 5) A(i + 5) = A(j + 5) A(j + 5) = temp2 temp2 = A(i + 10) A(i + 10) = A(j + 10) A(j + 10) = temp2 End If Next j Next i Debug.Print "ΜΕΤΑ ΤΗΝ ΤΑΞΙΝΟΜΗΣΗ" For i = 0 To 14 Debug.Print "A(" + CStr(i) + ")=" + CStr(A(i)) Next i For i = 0 To 4 Debug.Print "b(" + CStr(i) + ")=" + CStr(b(i)) Next i
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.