Quelle bei "Bubble Sort" ermitteln

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

LSH_Dackel
***
Beiträge: 53
Registriert: Do, 05.01.2006 17:40

Quelle bei "Bubble Sort" ermitteln

Beitrag von LSH_Dackel »

Moin, wie man sieht hab ich Probleme über Probleme :(
Mein neustes ist dieses

Code: Alles auswählen

sub ranking
Dim oSheets as Object 
Dim oSheet as Object 
Dim zelle as Object 
Dim Entry(1 To 4) as Double
Dim Count As Double
Dim Count2 As Double
Dim Temp As Double

oSheets = ThisComponent.Sheets 
oSheet = oSheets.getByName("HJLübersicht")
For zeile = 3 to 16
Entry(1) = oSheet.getCellByposition(1,zeile).value 'aus spalte 12_1
Entry(2) = oSheet.getCellByposition(2,zeile).value 'aus spalte 12_2
Entry(3) = oSheet.getCellByposition(3,zeile).value 'aus spalte 13_1
Entry(4) = oSheet.getCellByposition(4,zeile).value 'aus spalte 13_2
For Count = 1 To 4
For Count2 = Count + 1 To 4
If Entry(Count) < Entry(Count2) Then
Temp = Entry(Count)
Entry(Count) = Entry(Count2)
Entry(Count2) = Temp
End If
Next Count2
Next Count

   For Count = 1 To 4
     oSheet.getCellByposition(25 +count, zeile).value = (Entry (Count))
   Next
next zeile

   
   for vorn =1 to 4
   for hinten = 1to 4
if oSheet.getCellByposition(vorn,zeile).value = oSheet.getCellByposition(25 + hinten,zeile).value then
   oSheet.getCellByposition(29 + hinten,zeile).setformula(oSheet.getCellByposition(vorn,0).formula)
end if
   next hinten
   next vorn
end sub
Das sortieren funzt ja Einwand frei ( groß=>klein; links=>rechts),
aber ich will auch noch wissen welches woher kam.
Wenn ich nun aber meien "If-Abfrage" mache habe ich bei gleichen werten
eine Überschneidung.

z.B.
Wert aus der Spalte 12_1 =1 und wert aus der Spalte 13_2=1 => hinten steht bei beidem 13_2

Es soll aber jede Spaltenangabe pro Zeile nur einmal vorkommen.
Kann mir jemand helfen.

Jetz schon mal vielen herzlichen Dank
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich fürchte ich verstehe das Ganze nicht so recht, außer:
aber ich will auch noch wissen welches woher kam
soll wohl heißen wenn ein Wert nach dem Sortieren in Entry(3) steht, soll die Information vorhanden sei wo er vor dem Sortieren war?
Falls ja - erweitere das Array:

Code: Alles auswählen

'...
Dim Entry(1, 4)
'...
Entry(0,1) = oSheet.getCellByposition(1,zeile).value 'aus spalte 12_1 
Entry(0,2) = oSheet.getCellByposition(2,zeile).value 'aus spalte 12_2 
Entry(0,3) = oSheet.getCellByposition(3,zeile).value 'aus spalte 13_1 
Entry(0,4) = oSheet.getCellByposition(4,zeile).value 'aus spalte 13_2 
Entry(1,1) = "aus spalte 12_1" 
Entry(1,2) = "aus spalte 12_2" 
Entry(1,3) = "aus spalte 13_1" 
Entry(1,4) = "aus spalte 13_2" 
For Count = 1 To 4 
For Count2 = Count + 1 To 4 
If Entry(0,Count) < Entry(0,Count2) Then 
Temp = Entry(0,Count) 
Temp2 = Entry(1,Count)
Entry(0,Count) = Entry(0,Count2) 
Entry(1,Count) = Entry(1,Count2) 
Entry(0,Count2) = Temp 
Entry(1,Count2) = Temp2
End If 
Next Count2 
Next Count



Die Werte für Entry(1,x) kannst Du wählen wie sie sinnvoll sind, ich habe hier nur die verbalen Beschreibungen genommen, nur Du könntest die Werte ggf. auch ermitteln - ich verstehe nur die Spaltenbezeichnungen nicht, denn was soll Spalte 12_1 sein?
Nein, es geht mir nicht darum das das keine üblichen Bezeichnungen sind sondern das ja:

Code: Alles auswählen

Entry(0,1) = oSheet.getCellByposition(1,zeile).value
Entry(0,2) = oSheet.getCellByposition(2,zeile).value 
Entry(0,3) = oSheet.getCellByposition(3,zeile).value 
Entry(0,4) = oSheet.getCellByposition(4,zeile).value
4 Zellen einer Zeile, eines Blattes in 4 Spalten sind. Ich würde also 12_1 ... 12_4 verstehen oder 12_1 ... 15_1, nur 12_ und 13_ 'gemischt' verstehe ich nicht.
Wenn ich nun aber meien "If-Abfrage" mache habe ich bei gleichen werten
eine Überschneidung.
das kann sich meines Erachtens nur auf das erste IF beziehen, nur weiß ich nicht was erreicht werden soll. Was soll denn geschehen wenn zwei Werte gleich sind und warum?
Du kannst mit einem zweiten If die gleichen Werte finden, aber was dann - grundsätzlich vertauschen?
z.B.
Wert aus der Spalte 12_1 =1 und wert aus der Spalte 13_2=1 => hinten steht bei beidem 13_2


?


Gruß
Stephan
LSH_Dackel
***
Beiträge: 53
Registriert: Do, 05.01.2006 17:40

Beitrag von LSH_Dackel »

Danke Stephan :D
genau das hab ich gebraucht!

Naja zu deinen fragen

die heise "12_1;12_2;13_1;13_2"
weil desdie halbjahre in der kollegstufe in Bayern sin.f
dafür auch die tabelle und die ganzen makros wozu ich euch die ganze zeit mit fragen nerven muss :oops: Tschuldie

Und des mit den IFs hat sich in zwischen auch erledigt :lol:

noch ma vieln dank für die hilfe
Antworten