Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Durschnitt berechnen (https://www.delphipraxis.net/55423-durschnitt-berechnen.html)

bigpoopapizza 20. Okt 2005 16:46


Durschnitt berechnen
 
Delphi-Quellcode:
  gksumme := gk1+gk2+gk3+gk4+gk5+gk6+gk7+gk8+gk9+gk10+gk11+gk12+gk13+gk14+gk15+gk16+gk17+gk18+gk19+gk20+gk21+gk22;
  Label78.Caption := IntToStr (gksumme);



  if not(CheckBox2.Checked) then NoteFA:=0;
  if not(CheckBox1.Checked) then NoteBLL:=0;


  Label22.Caption := IntToStr((SummeLK1+SummeLK2+NoteFA)*2);
  Label30.Caption := IntToStr((SummeLK1+SummeLK2+NoteFA)*2);
  Label64.Caption := IntToStr(QualiLK1+QualiLK2+QualiLK3+QualiLK4+NoteBLL);
  Label32.Caption := IntToStr(QualiLK1+QualiLK2+QualiLK3+QualiLK4+NoteBLL);
  Label31.Caption := IntToStr (gksumme);
  Label34.Caption := IntToStr ((QualiLK1+QualiLK2+QualiLK3+QualiLK4+NoteBLL)+((SummeLK1+SummeLK2+NoteFA)*2)+(gksumme));
  abi := ((QualiLK1+QualiLK2+QualiLK3+QualiLK4+NoteBLL)+((SummeLK1+SummeLK2+NoteFA)*2)+(gksumme));
 

  if ((abi > 281) and (abi < 296)) then abinote := 3.9;
das is mein erstes delphiprogramm!!
und zwar soll das zur berechnung zur abinote dienen soll!!
mein problem ist, dass man wenn man jetzt z.b. 281-296 punkte gesamt hat und dann ne durschnittsnote 3.9 hat wie geht das??
ich habs probiert indem was da als letztes steht!! if ((abi > 281) and (abi < 296)) then abinote := 3.9;

[edit=Luckie]Code auf das nötigste reduziert. Delphi-Tags gesetzt und Titel angapasst. Mfg, Luckie[/edit]

Kroko1999 20. Okt 2005 16:48

Re: Hilfe!!!!!
 
(1) Toller Titel
(2) es gibt Code-Tgas
(3) Wer soll dir da helfen?

hanselmansel 20. Okt 2005 16:50

Re: Hilfe!!!!!
 
Hi!

bitte formuliere einen aussagekräftigen Titel für den Thread und setzte den Quellcode in [ delphi ] tags. Dann ist er besser lesbar.

MfG,

hanselmansel

Nikolas 20. Okt 2005 16:52

Re: Hilfe!!!!!
 
Du hast ~100 Labels auf deinem Form? Und auch so viele Edits? Und die alle ohne sinnvollen Namen? Wie willst du jemals wieder dein Programm verstehen?

Such mal nach dynamischen erstellen von Komponenten und FIndcomponent, damit kannst du vieles abkürzen.
Die ganzen GK-Noten kannst du z.B. auch in ein Array packen, da hast du wieder 20 Zeilen weniger.

glkgereon 20. Okt 2005 17:17

Re: Hilfe!!!!!
 
Delphi-Quellcode:
gk1 := StrToInt (Edit28.Text);
gk2 := StrToInt (Edit27.Text);
gk3 := StrToInt (Edit26.Text);
gk4 := StrToInt (Edit38.Text);
gk5 := StrToInt (Edit36.Text);
gk6 := StrToInt (Edit35.Text);
gk7 := StrToInt (Edit34.Text);
gk8 := StrToInt (Edit33.Text);
gk9 := StrToInt (Edit32.Text);
gk10 := StrToInt (Edit41.Text);
gk11 := StrToInt (Edit18.Text);
gk12 := StrToInt (Edit19.Text);
gk13 := StrToInt (Edit20.Text);
gk14 := StrToInt (Edit22.Text);
gk15 := StrToInt (Edit21.Text);
gk16 := StrToInt (Edit25.Text);
gk17 := StrToInt (Edit24.Text);
gk18 := StrToInt (Edit31.Text);
gk19 := StrToInt (Edit30.Text);
gk20 := StrToInt (Edit29.Text);
gk21 := StrToInt (Edit40.Text);
gk22 := StrToInt (Edit23.Text);
wtf?

ich versuch mal das programm vernünftig zu schreiben....

Stanlay Hanks 20. Okt 2005 18:46

Re: Durschnitt berechnen
 
Zitat:

Zitat von bigpoopapizza
mein problem ist, dass man wenn man jetzt z.b. 281-296 punkte gesamt hat und dann ne durschnittsnote 3.9 hat wie geht das?? ich habs probiert indem was da als letztes steht!! if ((abi > 281) and (abi < 296)) then abinote := 3.9;

1. Groß und klein, das wär' fein :stupid: (Groß-und Kleinschreibung und Interpunktion ;) )
2. Was genau geht denn nun nicht? Du schreibst zwar, was du möchtest, aber du sagst nicht, was nicht funktioniert. Prinzipiell stimmt dein Ansatz doch :gruebel: (Wenn Punkte > 281 und < 296 sind, dann 3,9)

Man liest sich, Stanlay :hi:

bigpoopapizza 20. Okt 2005 21:00

Re: Durschnitt berechnen
 
das wenn ein wert von 296-281 eben dann bei dem text im programm nicht 3.9 erscheinen!!

Eichhoernchen 20. Okt 2005 21:05

Re: Durschnitt berechnen
 
du musst auch irgendwo den wert von "abinote" einer anderen Variablen zuweisen.

glkgereon 20. Okt 2005 21:07

Re: Durschnitt berechnen
 
ich hab übrigens folgende Formel gefunden:

17/3 - Punkte/168

mal kurz in Excel übertragen:
Zitat:

=WENN((17/3)-(B1/168)<1;1;WENN((17/3)-(B1/168)>4;"Nicht bestanden";(17/3)-(B1/168)))

bigpoopapizza 20. Okt 2005 21:13

Re: Durschnitt berechnen
 
wie isn dann der befehl??
Label35.Caption := StrToSingle (abinote); aber wie is die abkürzung von Single??
Zitat:

Zitat von glkgereon
ich hab übrigens folgende Formel gefunden:

17/3 - Punkte/168

mal kurz in Excel übertragen:
Zitat:

=WENN((17/3)-(B1/168)<1;1;WENN((17/3)-(B1/168)>4;"Nicht bestanden";(17/3)-(B1/168)))

vertseh ich net!!

hanselmansel 20. Okt 2005 21:16

Re: Durschnitt berechnen
 
Delphi-Quellcode:
Label5000.Caption := FloatToStr(Abinote); //Wenn die Abinote ne Kommazahl sein kann
Label5000.Caption := IntToStr(Abinote); //Wenn die abinote auf jeden Fall ganzzahlig ist.
P.S.: Bin zu faul, in der Berechnung zu gucken, welche Werte Abinote annehmen kann...

glkgereon 20. Okt 2005 21:17

Re: Durschnitt berechnen
 
sorry, aber kauf dir maln gutes buch über delphi ;)
Delphi-Quellcode:
note:=17/3 - punkte/168;
if Note<1.0 then Note:=1.0;
if Note>4.0 then
  Label21238.Caption:='Nicht bestanden'
else
  Label21238.Caption:=FormatFloat('0.0',Note);

hanselmansel 20. Okt 2005 21:22

Re: Durschnitt berechnen
 
Hey Gereon,

ich hab's gerade mal in den Taschenrechner gehauen. Deine Formel stimmt ja sogar! :shock: (Auch wenn die von mir angestrebten 780 Punkte danach nur eine 1,02 ergeben würden... :? )

MfG und gute N8,

hanselmansel

Stanlay Hanks 20. Okt 2005 21:28

Re: Durschnitt berechnen
 
[/OT]
Zitat:

Zitat von hanselmansel
Auch wenn die von mir angestrebten 780 Punkte danach nur eine 1,02 ergeben würden...

...bekommst du trotzdem eine 1,0 (Es gibt nur eine Nachkommastelle und Runden ist ja nicht nötig ;) )

Oder wolltest du 0,9? [/OT]

bigpoopapizza 20. Okt 2005 21:38

Re: Durschnitt berechnen
 
ja danke!!

jetzt noch ne frage!!(sorry)

kann ich das jetzt noch so machen dass die note die da raus kommt auf nur eine nachkommastelle kommt und abgerundet wird??weil wenn ich jetzt 325 punkte eingeb 3.7321.... rauskommt un das sieht irgendwie n bisschen blöd aus!!

wie bist du auf diese formel gekommen??

glkgereon 20. Okt 2005 21:39

Re: Durschnitt berechnen
 
Zitat:

Zitat von Stanlay Hanks
[/OT]
Zitat:

Zitat von hanselmansel
Auch wenn die von mir angestrebten 780 Punkte danach nur eine 1,02 ergeben würden...

...bekommst du trotzdem eine 1,0 (Es gibt nur eine Nachkommastelle und Runden ist ja nicht nötig ;) )

Oder wolltest du 0,9? [/OT]

also diese formel kommt von irgendeiner schulseite...

Bei Google suchenabiturnote berechnen irgendwo erste oder zweite seite ;)

aber ein bisschen suspekt is sie mir noch :(
weil da kommt manchmal 0,666 und so raus...
aber das liegt imho an folgendem:

die blöden ministerien haben ne tabelle aufgestellt wo drinsteht "Punkte -> Note"
dann wurde daraus eine möglichst ähnliche formel entwickelt
überall sind die sprünge von einer zur nächsten note (zb 2.1 zu 2.2 und 2.2 zu 2.3) 17(+-1) Punkte entfernt.
nur nil(*g*)->1.0 und 1.0 -> 1.1 sind "paar" mehr, locker über 50 mein ich.
daher muss man abfragen ob die note <1 ist :(

hanselmansel 21. Okt 2005 08:46

Re: Durschnitt berechnen
 
HiHo,

ich weiß nicht, ob du das Delphi-Referenz durchsuchenFormatFloat von Gereon benutzt hast, aber eigentlich ist es genau das, was du brauchst.
Delphi-Quellcode:
function FormatFloat(const Format: string; Value: Extended): string;
Du könntest es dir natürlich in der OH ansehen, aber ich poste es hier einfach mal, da die OH für "gerade reingestolperte" mitunter etwas kryptisch ist.
  • Als Format übergibt Gereon den String '0.0'. Hierbei sind die Nullen Platzhalter für Ziffern. Sprich: Die erste Null sagt uns, dass der Vorkommateil deiner Abinote in einen String umgewandelt wird, dann kommt das Komma und dann eine Null für eine gerundete Nachkommastelle.
  • Value ist ein Gleitkommawert (also deine Abinote) die du der Funktion übergeben musst.
  • Der Rückgabewert ist vom Typ String. Also genau das, was du brauchst, um es in einer TEdit.Text oder einer TLabel.Caption auszugeben.
Sollte die Berechnung mit der Formel bei guten Noten wirklich nicht mehr Stimmen, kannst du ja für niedrige Punktzahlen die Note per Formel bestimmen lassen, und für extrem hohe mit einer Verzweigung. Das spart Codieraufwand beim Tippen der CaseOf-Anweisung.

MfG,

hanselmansel


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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