![]() |
Notendurchschnitt erechnen!
Hallo liebe Community,
Ich habe ein Problem bei meienem Programm, welches den Notendurchschnitt erechnen soll. Das Problem liegt dadrin, dass wenn ein Fach nicht belegt wurde (sprich, wenn in dem Feld kein Eintrag ist), soll der Fächer Gesamtanzahl 1 Fach abgezogen werden!
Delphi-Quellcode:
Ich hoffe ihr könnt mir helfen.
var
Form1: TForm1; var eng,ma,de,lat,franz,span,bio,ch,ph,poli,ge,edk,mu,ku,sp,inf,ds,anzahl,anzahl2,gesamt : integer ; notendurchschnitt : real; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin eng:=strtoint (edit1.text) ; de:=strtoint (edit2.text) ; ma:=strtoint (edit3.text) ; lat:=StrToIntDef(Edit4.Text,0); franz:=StrToIntDef(Edit5.Text,0); span:=StrToIntDef(Edit6.Text,0); bio:=StrToIntDef(Edit8.Text,0); ch:=StrToIntDef(Edit9.Text,0); ph:=StrToIntDef(Edit10.Text,0); poli:=StrToIntDef(Edit11.Text,0); ge:=StrToIntDef(Edit12.Text,0); edk:=StrToIntDef(Edit13.Text,0); mu:=StrToIntDef(Edit14.Text,0); ku:=StrToIntDef(Edit15.Text,0); sp:=StrToIntDef(Edit16.Text,0); inf:=StrToIntDef(Edit17.Text,0); ds:=StrToIntDef(Edit18.Text,0); anzahl:=anzahl2; anzahl2:=17; if lat=0 then anzahl:=anzahl2-1 ; gesamt:=eng+ma+de+lat+franz+span+bio+ch+ph+poli+ge+edk+mu+ku+sp+inf+ds ; notendurchschnitt:=gesamt/anzahl; edit7.text:=floattostr (notendurchschnitt) ; mfg M. Botterbrodt! |
Re: Notendurchschnitt erechnen!
ich würde sprechende Namen für die Editfelder nehmen und die Zensuren in ein Array packen. Dann einfach in dem Array alle Zensuren durchgehen und addieren. Wenn eine Zensur <> 0 angegeben wurde die Zahl der angegebenen Zahlen erhöhen. Und hinter der schleife dann einfach die Summe durch die Anzahl der Noten teilen und darauf achten das nicht durch 0 geteilt wird.
|
Re: Notendurchschnitt erechnen!
Ich würde zunächst folgenden Typ deklarieren:
Delphi-Quellcode:
Dann kannst du ein Array machen machen
type
TSchulfaecher = (sfNone,sfEng,sfMa,sfDe{usw},sfInf,sfDs);
Delphi-Quellcode:
Byte, weil es wahrscheinlich performanter ist, in Punkten und nicht in Noten zu rechnen.
var
Noten: array[TSchulfaecher] of byte; PS: Ungetestet, sollte aber gehen! |
Re: Notendurchschnitt erechnen!
Hallo,
ansonsten kannst du ja es abhängig machen vom Inhalt. Ist der Inhalt =0 dann ist das Fach nicht belegt. Dann kannst du unter z.B if ma=0 then Anzahl:=anzahl-1; den Wert runterschrauben. muß dann unmittelbar vor demm errechnen des Notendurchschnitts kommen |
Re: Notendurchschnitt erechnen!
ich habe es nun so gemacht:
Delphi-Quellcode:
usw.
anzahl:=0;
if eng>0 then anzahl:=anzahl +1 ; trotzdem danke für eure Hilfe! |
Re: Notendurchschnitt erechnen!
Hi,
mit einer Schleife sieht das Ganze trotzdem übersichtlicher aus:
Delphi-Quellcode:
uses math;
procedure TForm1.Button1Click(Sender: TObject); type TNote = 0..6; PNoteArray = ^NoteArray; NoteArray = Array[0..0] of TNote; TSchulfach = record eng, ma, de, lat, franz : TNote; end; var Schulfach: TSchulfach; PNotAr: PNoteArray; Loop, Anzahl, Noten: integer; begin ZeroMemory(@Schulfach, SizeOf(Schulfach)); with Schulfach do//Beispiel begin eng := 4; ma := 2; de := 1; end; PNotAr:= @Schulfach; Anzahl:= 0; Noten:= 0; for loop := 0 to Pred(SizeOf(Schulfach)) do if PNotAr^[Loop]> 0 then begin inc(Anzahl); inc(Noten, PNotAr^[Loop]); end; Caption:= 'Notendurchschnitt: '+ FloatToStr(RoundTo(Noten / Anzahl, -1)); end; |
Re: Notendurchschnitt erechnen!
ich hab das auch mal gemacht ( mein erste prog ;) ), brauchst du wirklich für jedes fach ein Edit?
Ich poste mal wie ich es darmals gemacht habe.
Delphi-Quellcode:
count und noten sind Klassen Variabeln vom Form procedure TForm1.Button1Click(Sender: TObject); var a : real; begin if Edit1.Text = '' then Label1.Caption := 'Bitte die Noten oben eintragen.' else noten := noten + strtoint(edit1.text); count := count + 1; a := noten/count; label1.Caption := 'Ihr Notenschnitt ist: ' + Formatfloat('0.##', a); Edit1.text := ''; Edit1.SetFocus; end; Vll hillft dir das ja was ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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