| Autor |
Beitrag |
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 24.06.03 20:02
Hallo,
ich habe Drei variabeln:
Schuss = (z.b) 40
Treffer = 30
Nicht treffer = 10
und nun möchte ich gerne ein die schuss genauikkeit ausrechnen und in prozent anzeigen. wie geht das ?
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 20:04
Prozentanteil von a an b ist
(a/b)*100
oder als function:
Delphi-Quelltext 1: 2: 3: 4:
| function prozent(a,b: Double): Double; begin result := (a/b)*100; end; |
Die Klammern sind eigentlich unnötig, aber zum besseren verständnis durchaus angebracht.[/delphi]
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 20:11
Geht auch so:
Prozentsatz a an b
Delphi-Quelltext
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 24.06.03 20:13
ich habe sie so angewendet:
Delphi-Quelltext 1:
| Label18.Caption:=IntToStr(Round(prozent(Treffe,keine_treffer) )); |
und es kommen fehler auf, die zahl liegt nicht mehr zwischen 0 und 100.
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 20:16
???
(a/b)*100 ist garantiert richtig...
Debugge mal und seh dir die Werte von Treffer, keine_Treffer und dem ausgerechneten Prozentsatz an.
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 24.06.03 20:18
ich lasse mir sie in labls alle anzeigen.
hier mal beispiel werte aus der anwendung(ohne %)
Schuss = 32
Treffer = 16
Keine Treffer = 16
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 20:25
ja und das gibt falsche werte?
also
16 an 32 =
16/32 *100 =
0,5*100 =
50
Stimmt doch! du musst in das Treffer% label reinschreiben den Prozent(Treffer, Schüsse) und in KeineTreffer% Prozent(KeineTreffer, sChüsse)
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 24.06.03 20:30
| Zitat: |
du musst in das Treffer% label reinschreiben den Prozent(Treffer, Schüsse) und in KeineTreffer% Prozent(KeineTreffer, sChüsse)
|
wie meinst du das ?
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 20:36
Hmm, sagen wir
LTrefferProz ist das Label das die Treffer on Prozent anzeigt,
LKeineTrefferProz ist das Lable das die Nichttreffer in Prozent anzeigt,
Schuesse sind die Schüsse,
Treffer und KeineTreffer sind die jeweiligen Werte.
Delphi-Quelltext 1: 2:
| LTrefferProz.Caption := IntToStr(MulDiv(Treffer,100,Schuesse)); LKeineTrefferProz.Caption := IntToStr(MulDiv(KeineTreffer,100,Schuesse)); |
Dann sind in den zwei labeln die jeweiligen Werte angezeigt. Wenn du genauer gehen willst, dann nimm die Funktion von oben (a/b*100) und FloatToStr.
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 24.06.03 20:48
es scheint zu Klappen aber ich habe es jetzt so gemacht:
Delphi-Quelltext 1:
| Label18.Caption:=IntToStr(100-MulDiv(keine_treffer,100,schuss));; |
und es sieht wirklich so aus als ob es funktionierten würde:)
muss es aber noch mehr testen ob es wirklich geht
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 20:52
Wie gesagt, das MulDiv ist deswegen praktisch weil es gleich rundet. Wenn du es übersichtlich machen willst, dann
Delphi-Quelltext 1: 2: 3:
| PrzTreffer := MulDiv(keine_Treffer,100,schuss); Label17.Caption:=IntToStr(PrzTreffer); Label18.Caption:=IntToStr(100-PrzTreffer); |
Nehme einfach mal an Label17 ist die anzeige der getroffenen. Falls du die gar nicht brauchst dann kannst du es auch so machen wie du jetzt, aber ich würde meinen Quellcode übersichtlich gestalten. Außerdem ein Kommentar, sonst weißt du irgendwann nichtg mehr was zum Teufel MulDiv(keine_Treffer,100,schuss) bewirken soll 
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 24.06.03 20:56
doch das weiß ich nacher noch, ohen es mit einem kometar zuweisen zu müssen:)
ich habe vor den labenl noch ein label mit der bezeichnus: Trefferqute
ob das richtig geschrieben ist das wort weiß ich jetzt nicht, aber egal:)
danke für deine schnelle hilfe
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 21:00
>> doch das weiß ich nacher noch, ohen es mit einem kometar zuweisen zu müssen:)
>> ich habe vor den labenl noch ein label mit der bezeichnus: Trefferqute
Nagut, war ja nur ein Tip
>> ob das richtig geschrieben ist das wort weiß ich jetzt nicht, aber egal:)
Trefferquote
>>danke für deine schnelle hilfe
Kein Problem, bin doch froh wenn ich irgendwo helfen kann 
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 24.06.03 22:05
mir sind noch einige fehler aufgefallen in der rechnung, nun mache ich es so:
Delphi-Quelltext 1:
| Label18.Caption:=IntToStr( Round(treffe / schuss* 100) ); |
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|