AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array abfragen

Ein Thema von rambospike · begonnen am 31. Mär 2007 · letzter Beitrag vom 31. Mär 2007
Antwort Antwort
rambospike

Registriert seit: 29. Nov 2006
13 Beiträge
 
Delphi 7 Personal
 
#1

Array abfragen

  Alt 31. Mär 2007, 17:59
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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Array abfragen

  Alt 31. Mär 2007, 18:22
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:
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 ;
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.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Array abfragen

  Alt 31. Mär 2007, 18:29
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:
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;
Wenn dich nur die Häufigkeit der Zahlen interessiert, wäre vielleicht folgende Deklaration besser:

Delphi-Quellcode:
var
  Anzahl : array [0..36] of Integer;
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.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz