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

Visual Basic προβλημα με ταξινομηση


steve62742

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

Δημοσ.

Παιδια εχω ενα τρελο προβλημα με την 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 κτλ του Α) και θελω να ταξινομησω τον Β και αντιστοιχα τα στοιχεια του Α απο τα οποια προηλθε.....

Οποια βοηθεια μπορειτε να δωσετε ευπροσδεκτη

Δημοσ.

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

Δημοσ.

φιλε πρωτα σε ευχαριστω που ασχολιθηκες

πραγματικα δεν μπορω να καταλαβω γιατι δεν δουλευει...ο μονος προιγουμενος κωδικας που εκτελειτε ειναι αυτος

 

 

>
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



 

και μετα εκτελειτε η ταξινομηση η οποια οτι και να κανω για καποιο λογο δεν γινετε σωστα....

Δημοσ.

αποτελέσματα

ΠΡΙΝ ΤΗΝ ΤΑΞΙΝΟΜΗΣΗ

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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