AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Anzahl verschiedener Werte im Array ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl verschiedener Werte im Array ermitteln

Ein Thema von Tim-94 · begonnen am 18. Jun 2013 · letzter Beitrag vom 20. Jun 2013
 
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
 

 

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 03:58 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