Einzelnen Beitrag anzeigen

Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#4

AW: Anzahl verschiedener Werte im Array ermitteln

  Alt 18. Jun 2013, 22:22
Von Anwendungsentwickler zu Anwendungsentwickler...
Wie kannst du einem anderen Menschen eine sichere "Anleitung" zur Lösung deines Problemes geben.
Diese Anleitung ist dann dein Algorithmus.

Angenommen deine Strings stehen auf Karteikarten in einer langen Reihe auf deinem Schreibtisch. Stell dir folgende Fragen:

-Wo fängst du an, dir deine Karteikarten durchzulesen
-Schreibst du dir eventuell Zwischenwerte auf
-Wann ist die Aufgabe vollständig gelöst
-Wie kannst du effektiver sein

Wenn du die Aufgabe hättest, rauszufinden wie viele Unterschiedliche Karten da liegen, wie würdest DU es in der echten Welt machen?


Delphi-Quellcode:
// will ich mal nicht so sein...
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  function StringDasErsteMalAufgetreten(MomentanerString : String) : Boolean;

var
  Form1: TForm1;
  SchonDaGewesen : array of String;
  Eingabe : array [0..4] of String;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  I : Integer;
  Count : Integer;
begin
  Eingabe[0]:='A';
  Eingabe[1]:='B';
  Eingabe[2]:='B';
  Eingabe[3]:='C';
  Eingabe[4]:='A';

  count := 0;
  // gehe alle Strings durch
  for I := Low(Eingabe) to High(Eingabe) do
  begin
    // schaue ob String das erste mal auftritt
    if StringDasErsteMalAufgetreten(Eingabe[I]) then
    begin
      Inc(Count);
    end;
  end;

  ShowMessage(IntToStr(Count))

end;

function StringDasErsteMalAufgetreten(MomentanerString : String) : Boolean;
var
  I: Integer;
begin
  Result := True;

  for I := Low(SchonDaGewesen) to High(SchonDaGewesen) do
  begin
    if MomentanerString = SchonDaGewesen[I] then
    begin
      Result := False;
    end;
  end;

  // String evtl in die "Schondagewesen-Liste" aufnehmen
  if Result then
  begin
    SetLength(SchonDaGewesen, Length(SchonDaGewesen) + 1);
    SchonDaGewesen[High(SchonDaGewesen)] := MomentanerString;
  end;

end;

end.
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!

Geändert von Jonas Shinaniganz (18. Jun 2013 um 22:46 Uhr)
  Mit Zitat antworten Zitat