[gelöst] Zwei Fragen zu Arrays

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

Moderator: Moderatoren

Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

[gelöst] Zwei Fragen zu Arrays

Beitrag von jkl »

Hallo,

ich habe zwei Fragen zu Arrays, die ich schon länger mit mir herumtrage, für die ich aber keine Antwort gefunden habe:

1. Gibt es eine einfache Möglichkeit ein Array zu mischen? (Vorher sortiert - nachher unsortiert)
2. Gibt es eine einfache Möglichkeit einzelne Werte aus einem Array herauszunehmen und das Array damit zu verkleinern?

Sollte die Antwort schon irgendwo stehen, sorry, aber ich hab sie wirklich nicht gefunden.


Danke schon mal...


J. Kleis

___
Meine OpenOffice-Vorlagen für die Schule unter http://www.schulzeug-online.de
Zuletzt geändert von jkl am So, 20.04.2008 13:04, insgesamt 1-mal geändert.
http://www.schulzeug-online.de OpenOffice in der Förderschule...
stoni
*
Beiträge: 14
Registriert: Fr, 28.03.2008 22:47

Re: Zwei Fragen zu Arrays

Beitrag von stoni »

2. Gibt es eine einfache Möglichkeit einzelne Werte aus einem Array herauszunehmen und das Array damit zu verkleinern?
du könntest dir die benötigten Werte in einer Schleife in ein neues Array schreiben und zum Schluss das alte Array löschen:

Code: Alles auswählen

n=0
for i=LBound(AltesArray() to UBound(AltesArray())
   if DeineBedingung then
      ReDim Preserv NeuesArray(n)
      n=n+1
   end if
next
Prinzipiell könnte man ähnliches für deine 1. Frage auch realisieren.

Gruß stoni
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Re: Zwei Fragen zu Arrays

Beitrag von jkl »

Hallo,

danke für die Antwort. Leider ist das nicht genau das, was ich gemeint habe, deshalb nochmal genauer:

1. Eine einfache Möglichkeit ein Array zu mischen benötigt nicht viel Code, wobei ich es natürlich in eine Sub auslagern kann, und dann gehts auch wieder.... :lol:

2. Ich meine dass ich zum Beispiel ein Array mit 50 Zahlen habe, dann die 33. Stelle des Arrays auslese und sie gleichzeitig auch Löschen möchte, da ich sie bereits benutzt habe... Ich brauche das z.B. für das Generieren von Aufgaben, wobei eben die Zahlen nicht doppelt verwendet werden sollen. Auch hier ist mir klar, dass das mit genügend Code geht... Aber geht das auch einfach? :lol:

Ich hoffe es ist etwas klarer geworden...

Trotzdem Danke...

J. Kleis
http://www.schulzeug-online.de OpenOffice in der Förderschule...
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: Zwei Fragen zu Arrays

Beitrag von Karolus »

Hallo
jkl hat geschrieben:......
2. Ich meine dass ich zum Beispiel ein Array mit 50 Zahlen habe, dann die 33. Stelle des Arrays auslese und sie gleichzeitig auch Löschen möchte, da ich sie bereits benutzt habe... Ich brauche das z.B. für das Generieren von Aufgaben, wobei eben die Zahlen nicht doppelt verwendet werden sollen. Auch hier ist mir klar, dass das mit genügend Code geht... Aber geht das auch einfach? :lol:
Klingt so, als ob du eine Reihe einmaliger Zufallszahlen erzeugen möchtest ?

Falls ja - schau mal im Lottozahlenthema

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Re: Zwei Fragen zu Arrays

Beitrag von jkl »

Hallo nochmal,

habe folgende Idee:

Ich habe ein Array mit Begriffen aBegriffe() z.B. 20 Stück.... Ich habe einen Begriff der aus dem Array gelöscht werden soll....

Ich übergebe das Array und den Begriff an eine Function und die Function soll den Begriff aus dem Array löschen...
Mittels einer Schleife durchlaufe ich alle Array-Einträge und vergleiche sie mit dem Begriff. Für den Fall, dass der Begriff nicht gleich dem Eintrag im Array ist, wird der Begriff in einem neuen Array gespeichert, ansonsten eben nicht. Am Ende Überschreibe ich das erste Array mit dem neuen Array und gebe es wieder zurück.

Meine Frage:
1. Wie übergebe ich Arrays an eine Funktion? Wenn das nicht geht kann ich ja ein notfalls das Array als String übergeben und ihn wieder in ein array verwandeln.
2. Warum kann ich das nicht vernünftig programmieren? :oops: Kann mir vielleicht jemand helfen?

Danke....

J. Kleis
http://www.schulzeug-online.de OpenOffice in der Förderschule...
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Zwei Fragen zu Arrays

Beitrag von Toxitom »

Hey J. Kleist,

also, du kannst mit Arrays (oder Listen) genauso arbeiten wie mit Variablen - also sie auch an Funktionen übergeben.

Überdenke noch mal den komplwetten Weg deiner Aufgabe: vielleicht findest du andere Lösungen? Es wüerde m.A. absolut ausreichen, eine Kopie einer "Master-Liste" zu erstellen und dann daraus die gewählten Einträge zu löschen ( also durch leere Strings zu ersetzen). Dadurch wird das Array nicht kürzer - aber das ist auch nicht nötig.

Um eine Liste zufällig zu mischen, schau dir mal das beiligende Beispiel an. Das tut genau das. Ich denke, aus den Fragmenten und den Tipps von Stoni und Karolus solltest du deine Aufgaben lösen können :-)

Viele Grüße
Thomas
Dateianhänge
Beispiel.zip
Liste zufälig mischen - Beispiel
(8.8 KiB) 79-mal heruntergeladen
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Re: Zwei Fragen zu Arrays

Beitrag von jkl »

Hallo,

vielen Dank!!!!! :lol:

Die Idee war nur eine kranke Geburt meines Kopfes, da ich deine einfache Lösung nicht hinbekommen habe... Ich brauche tatsächlich nur deine Funktion und schon läuft alles... Nochmal danke.

Das einfache Übergeben von Arrays hat bei mir auch nicht richtig funktioniert, keine Ahnung warum... wahrscheinlich hab ich einfach ein paar Gehirnwindungen zu wenig aktiviert :mrgreen:

J. Kleis
http://www.schulzeug-online.de OpenOffice in der Förderschule...
Antworten