AGB  ·  Datenschutz  ·  Impressum  







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

Variablen sortieren

Ein Thema von the_source · begonnen am 16. Jun 2006 · letzter Beitrag vom 19. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
the_source

Registriert seit: 16. Jun 2006
12 Beiträge
 
#1

Variablen sortieren

  Alt 16. Jun 2006, 23:12
Hallo,

bei meinem derzeitigen Programm handelt es sich um ein Kryptoanalyse-tool. Seine Hauptfunktion besteht darin, die Häufigkeit von Buchstaben in einem Text zu zählen und eine Statistik zu erstellen.
In einer Schleife wird bei jeden Buchstaben ein entsprechender Zähler erhöht, bis das Textende erreicht ist. Die die Werte der Zähler (countA, countB....) werden dann ausgegeben, sodass über jeden Buchstaben eine Häufigkeitsinformation vorliegt.
Um ein Diaramm und eine ausführliche Statistik zu erstellen, brauche ich nun die Variable, die den höchsten Wert hat.
Dazu meine Frage: Wie kann ich die höchste Variable bestimmen?


MfG
the_source
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Variablen sortieren

  Alt 16. Jun 2006, 23:22
Hast du für jeden Buchstaben eine eigene Zählvariable? Dann hast du doch haufenweise Variablen und ein paar zu viele IF Bedingungen - oder nicht? Warum nutzt du kein Array?

Nun noch zu deiner Frage: Schau dir doch einfach mal die Funktion Max() an oder mach es logisch selber: Mit einer IF Bedingung um dem grösser/kleiner Vergleich (> <) kannst du es leicht selber machen...
  Mit Zitat antworten Zitat
the_source

Registriert seit: 16. Jun 2006
12 Beiträge
 
#3

Re: Variablen sortieren

  Alt 16. Jun 2006, 23:24
Hmm, ja, dann werd ich wohl doch nochmal alles ummodeln. Ich bin zu spät auf die Idee gekommen, ein array zu machen.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Variablen sortieren

  Alt 16. Jun 2006, 23:27
Ist aber wirklich ein guter Schritt der sich lohnt, weil sonst schreibst du den Code wirklich für jeden Buchstaben einzelnd. Ein Array macht das ganze recht komformtabel.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Variablen sortieren

  Alt 16. Jun 2006, 23:41
Nein, ein Array macht das ganze erst brauchbar
  Mit Zitat antworten Zitat
the_source

Registriert seit: 16. Jun 2006
12 Beiträge
 
#6

Re: Variablen sortieren

  Alt 17. Jun 2006, 11:32
hmm, also ich hab mir das jetzt mal zurechtgelget, aber es ergibt sich ein neues Problem.
ich hatte ja vorher ne schleife, in der für jeden Buchstaben eine if-anweisung befand

Delphi-Quellcode:
   for counter:= 1 to laenge do
    begin
     if UpperCase(s[counter]) = 'Athen
      begin
       countA:= countA + 1;
       countDEF:= countDEF + 1;
      end;
     if UpperCase(s[counter]) = 'Bthen
      begin
       countB:= countB + 1;
       countDEF:= countDEF + 1;
      end;
und so weite..

jetzt habe ich diese count-Variablen rausgeschmissen und ein Array von 1 bis 26 erstellt.
jetzt habe ich aber das Problem, dass ich ja ne schleife mit möglichst nur einer if-Anweisung möchte.


Delphi-Quellcode:
   for counter:= 1 to laenge do
    begin
     if UpperCase(s[counter]) = 'Athen
      begin
       countArray[1]:= countArray[1] + 1;
       countDEF:= countDEF + 1;
      end;
     if UpperCase(s[counter]) = 'Bthen
      begin
       countArray[2]:= countArray[2] + 1;
       countDEF:= countDEF + 1;
      end;
wie bekomm ichs jetzt hin, dass ich, wenn ich für das countArray einen counter einsetze, auch die Buchstaben in eine Art Liste zusammenfasse. Diese müssen ja sonst immer einzeln angegeben werden.

bin grad, während ich das schreibe, auf die Idee gekommen, das mit Ascii-codes zu machen.
Aber es gibt dann noch ein kleines Problem.

Am Ende werden die einzelnen Einträge Labels zugeordnet.

Delphi-Quellcode:
OutA.Caption:= IntToStr(countA);
  OutB.Caption:= IntToStr(countB);
  OutC.Caption:= IntToStr(countC);
Wie kann ich das nun mit den Namen der Labels automatisieren. Ist zwar nicht überlebenswichtig, wäre aber gut.

[edit=Sharky]Code-Tags in Delphi-Tags geändert. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Variablen sortieren

  Alt 17. Jun 2006, 11:42
Hai the_source,

"Herzlich Willkommen in der Delphi-PRAXiS"

hier mal ein Grundgerüst wie ich da ran gehen würde:
Delphi-Quellcode:
type
  TCounterArray = array [1..255] of Cardinal;


procedure InitCounterArray(var aArray: TCounterArray);
var
  ndx: Integer;
begin
  for ndx := Low(aArray) to High(aArray) do
  begin
    aArray[ndx] := 0;
  end;
end;

procedure CountChars(var aArray: TCounterArray; aValue: string);
var
  ndx: Integer;
begin
  for ndx := 1 to Length(aValue) do
  begin
    aArray[Ord(aValue[ndx])] := aArray[Ord(aValue[ndx])] + 1;
  end;
end;

procedure TDemoForm.btn_testClick(Sender: TObject);
var
  s: string;
  myArray: TCounterArray;
begin
  InitCounterArray(myArray);
  s := 'sdöfljösdlafjpoweiurpowejrsnadöflkasdfsdf';
  CountChars(myArray, s);
end;
In dem Array hast Du jetzt für jeden Buchstaben den Wert wie oft er in dem String s vorkommt. Dieses Array könntest Du jetzt zum Beispiel sortieren.

[edit]aArray als Var-Parameter übergeben
Stephan B.
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: Variablen sortieren

  Alt 17. Jun 2006, 11:54
@Sharky

Wenn du das Array als var-Parameter übergibst, klappt es besser...

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Variablen sortieren

  Alt 17. Jun 2006, 11:57
Zitat von Hawkeye219:
... als var-Parameter übergibst, ...
Wie peinlich
Stephan B.
  Mit Zitat antworten Zitat
the_source

Registriert seit: 16. Jun 2006
12 Beiträge
 
#10

Re: Variablen sortieren

  Alt 17. Jun 2006, 12:09
hmm, also ich habs jetzt mal provisorisch gemacht mit nen labels, aber das ist nicht das Problem.
Das Problem besteht darin, dass ich am Ende für jeden Buchstaben die Häufigkeit "0" rausbekomme. Der "counterDEF", der die Anzahl aller zulässigen Buchstaben zählt, stimmt.

Ich verstehe einfach nict, woran es liegt.

Delphi-Quellcode:
procedure TForm1.StartClick(Sender: TObject);
 var
  s:String;
  counterMAIN:Integer;
  counterSET:Integer;
  counterCHAR:Integer;
  countDEF:Integer;
  laenge:Integer;
  countArray: Array[1..26] of Integer;
 begin
  for counterSET:= 1 to 26 do
   begin
    countArray[counterSET]:= 0;
   end;
  countDEF:= 0;
  s:= eingabe.Text;
  laenge:= Length(s);
  ProgressBar1.Max:= laenge;
   for counterMAIN:= 1 to laenge do
    begin
     for counterCHAR:= 65 to 90 do
      begin
       if UpperCase(s[counterMAIN]) = CHR(counterCHAR) then
        begin
         countArray[counterCHAR]:= countArray[counterCHAR] + 1;
         countDEF:= countDEF + 1;
        end;
      end;
     ProgressBar1.Position:= ProgressBar1.Position + 1;
    end;
  OutA.Caption:= IntToStr(countArray[1]);
  OutB.Caption:= IntToStr(countArray[2]);
  OutC.Caption:= IntToStr(countArray[3]);
  OutD.Caption:= IntToStr(countArray[4]);
  OutE.Caption:= IntToStr(countArray[5]);
  OutF.Caption:= IntToStr(countArray[6]);
  OutG.Caption:= IntToStr(countArray[7]);
  OutH.Caption:= IntToStr(countArray[8]);
  OutI.Caption:= IntToStr(countArray[9]);
  OutJ.Caption:= IntToStr(countArray[10]);
  OutK.Caption:= IntToStr(countArray[11]);
  OutL.Caption:= IntToStr(countArray[12]);
  OutM.Caption:= IntToStr(countArray[13]);
  OutN.Caption:= IntToStr(countArray[14]);
  OutO.Caption:= IntToStr(countArray[15]);
  OutP.Caption:= IntToStr(countArray[16]);
  OutQ.Caption:= IntToStr(countArray[17]);
  OutR.Caption:= IntToStr(countArray[18]);
  OutS.Caption:= IntToStr(countArray[19]);
  OutT.Caption:= IntToStr(countArray[20]);
  OutU.Caption:= IntToStr(countArray[21]);
  OutV.Caption:= IntToStr(countArray[22]);
  OutW.Caption:= IntToStr(countArray[23]);
  OutX.Caption:= IntToStr(countArray[24]);
  OutY.Caption:= IntToStr(countArray[25]);
  OutZ.Caption:= IntToStr(countArray[26]);
  OutGES.Caption:= IntToStr(countDEF);
 end;
[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:44 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