Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Di 24.06.03 20:04 
Prozentanteil von a an b ist

(a/b)*100

oder als function:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Di 24.06.03 20:11 
Geht auch so:

Prozentsatz a an b

ausblenden Delphi-Quelltext
1:
Muldiv(a,100,b)					

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 24.06.03 20:13 
ich habe sie so angewendet:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: 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.

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 24.06.03 20:48 
es scheint zu Klappen aber ich habe es jetzt so gemacht:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Di 24.06.03 20:52 
Wie gesagt, das MulDiv ist deswegen praktisch weil es gleich rundet. Wenn du es übersichtlich machen willst, dann

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: 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 :mrgreen:

>> 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 :D

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 24.06.03 22:05 
mir sind noch einige fehler aufgefallen in der rechnung, nun mache ich es so:
ausblenden Delphi-Quelltext
1:
  Label18.Caption:=IntToStr( Round(treffe / schuss* 100) );					

_________________
MFG
Michael Springwald, "kann kein englisch...."