Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.441 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: pronzentberechungsproblem

  Alt 12. Mai 2009, 14:36
Ich bezweifle das deine Anwendung so richtig funktioniert.
Deine Variablen für die Summen werden nicht mit 0 initialisiert, bevor du mit dem Zählen beginnst.
Die Ausgabe der Prozente erfolgt zum Teil gerundet, zum Teil werden einfach die Kommastellen abgeschnitten.

Hier mal ein Beispiel nicht getestet:
Delphi-Quellcode:
{Funktionalität von der Oberfläche trennen, eventuell eigene Unit}
type
  TBuchstabenSumme = array['A'..'Z'] of integer;

function ZaehleBuchstaben(const AText: string; out ASumme: TBuchstabenSumme): integer;
var
  i: integer;
  c: Char;
begin
  {Anzahl der Zeichen zurückgeben}
  Result := Length(AText);
  {Anfangswerte für die Summen auf 0 setzen}
  for c := Low(ASumme) to High(ASumme) do
    ASumme[c] := 0;
  {die entsprechende Summe für jedes gültige Zeichen im Text erhöhen}
  for i := 1 to Result do
  begin
    c := UpCase(AText[i]);
    if (c >= Low(ASumme)) and (c <= High(ASumme)) then
      Inc(ASumme[c], 1);
  end;
end;

procedure TForm1.startClick(Sender: TObject);
var
  Zeichen: integer;
  Summe: TBuchstabenSumme;
  y: Integer;
  c: Char;
begin
  {Eingabeparameter an die Funktion übergeben und Ergebnis übernehmen}
  Zeichen := ZaehleBuchstaben(Eeingabe.Text, Summe);
  {Ergebnisausgabe}
  Ezeichen.Caption:= IntToStr(Zeichen);
  {mit erster Zeile im Memo beginnen, ein Grid wäre vieleicht besser}
  y := 0;
  for c := Low(Summe) to High(Summe) do
  begin
    memo3.Lines[y] := c + ': ' + IntToStr(Summe[c]);
    memo4.Lines[y] := IntToStr(Round((100 * Summe[c]) / Zeichen)) + '%';
    Inc(y);
  end;
end;
  Mit Zitat antworten Zitat