![]() |
Array abfragen
Hallo,
ich schreibe gerade an einem Programm, welches Roulettezahlen auswertet. Ich habe dabei folgendes Problem: Ich habe ein Array Zahl[1..400] angelegt. Hierein werden fortlaufend Zahlen geschrieben. Jetzt möchte ich abfragen, ob eine oder mehrere Zahlen schon in dem Array stehen. Kann ich nun beispielsweise prüfen, ob die Zahl 12 und 14 in einer der Arrays steht, ohne das ich wie unten jedes einzelne Array abfrage? So habe ich es bisher gemacht: if Zahl[1] = 12 then... if Zahl[2] = 12 then... if Zahl[3] = 12 then... ... ... ... if Zahl[400] = 12 then... Das muss doch auch einfacher gehen. Vielen Dank für eure Hilfe herzliche Grüße von rambospike |
Re: Array abfragen
Mit einem Array hast Du keine direkte Suchfunktion, das musst Du schon zu Fuss machen. Aber natürlich solltest Du die Suche in eine for-Schleife legen... Etwa so:
Delphi-Quellcode:
FindInArray liefert dir dann den Index zurück, an der die suchende Zahl steht. Wird keine Zahl gefunden, so liefert die Funktion -1 zurück.
type
TRouletteArray = array [1..40] of integer ; var Zahl : TRouletteArray ; function FindInArray (SearchFor : integer ; InArray : TRouletteArray) : integer ; begin for Result := low(InArray) to high(InArray) do begin if InArray[Result] = SearchFor then exit ; end ; Result := -1 ; end ; |
Re: Array abfragen
Hi,
wenn das Array immer sortiert ist, könntest du die Anzahl der Vergleichsoperationen durch die Verwendung einer binären Suche reduzieren. Benötigst du die doppelten Einträge? Falls nicht, könntest du über den Einsatz von Mengen (Sets) nachdenken:
Delphi-Quellcode:
Wenn dich nur die Häufigkeit der Zahlen interessiert, wäre vielleicht folgende Deklaration besser:
var
Menge : set of 0..36; begin Menge := []; // Menge löschen Include (Menge, 17); // Zahl 17 hinzufügen Exclude (Menge, 17); // Zahl 17 entfernen if (17 in Menge) then ... // Abfrage end;
Delphi-Quellcode:
Anstatt die Zahlen in das Array einzutragen inkrementierst du nur den zugehörigen Zähler. Ob eine Zahl überhaupt vorgekommen ist, kannst du so direkt ablesen.
var
Anzahl : array [0..36] of Integer; Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz