AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie aus Daten ganze prozentuale Ergebnisse berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Wie aus Daten ganze prozentuale Ergebnisse berechnen

Ein Thema von Matze · begonnen am 15. Feb 2009 · letzter Beitrag vom 15. Feb 2009
 
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Wie aus Daten ganze prozentuale Ergebnisse berechnen

  Alt 15. Feb 2009, 11:19
Himis erster Vorschlag, der ja doch irgendwie am "Gerechtesten" klingt, lässt sich so vereinheitlichen:
"percent" seien die ungerundeten, "rounded" die gerundeten Prozentzahlen.
"dir" = CompareValue(100, Sum(rounded)) gibt an, ob aufgefüllt (1) oder abgezogen (-1) werden muss.
  • Erstelle aus percents eine neue Liste, indem jedem x "dir * (0.5 - Frac(x))" zugeordnet wird
  • Schmeiße aus ihr alle Einträge < 0 raus (=> falsche Rundungsrichtung)
  • Sortiere sie aufsteigend
  • Nimm davon die ersten "Abs(100 - Sum(rounded))" - das sind die Zahlen, deren gerundete Werte um dir erhöht werden müssen.
Getippt und getestet .

Das einzige Problem ist, dass Delphi für solche mathematischen Spielereien nicht sehr geeignet ist; wer bei meiner Beschreibung an funktionale Funktionen ( ) wie map und filter denkt, denkt genau richtig. Die gibt es in Delphi von Haus aus zwar nicht, aber wenigstens könnte man sie nun - im Gegensatz zu so komischen Sprachen wie Java - mithilfe von Generics, Class Helpers und anonymen Methoden nachbilden. Da dürfte es aber trotzdem schneller sein, meine Beschreibung in ein paar imperative Schleifchen zu übersetzen .

/Edith: Ihr seid einfach zu schnell .

Zitat von Matze:
Danke, aber ich habe wohl vergessen zu erwähnen, dass das performant sein muss. *g*
Wenn man davon ausgeht, dass die Anzahl der auszubessernden Zahlen proportional zur Arraygröße steigt, ist Himis Algo O(n²), meiner O(n log n) (nur das Sortieren fällt ins Gewicht).
Sebastian
Moderator in der EE
  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 15:43 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