Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Delphi Noten aus Punkten berechnen
katzemageis - Do 15.03.18 18:32
Titel: Delphi Noten aus Punkten berechnen
Hallo ich gehe gerade in die 10. Klasse und wir haben als HAusaufgabe aufbekommen, dass wir für eine bestimmte Punktzahl die Note berechnen sollen.
ALso zb von 40-38 Punkten gibt es eine 1.
Jetzt könnte ich das einfach mit vielen If Anweisungen machen, aber wir sollen Arrays verwenden.
Kann mir vllt jemand erklären wie das geht, gegebenenfalls auch mti Quellecode? Verzweifle gerade echt.
Narses - Do 15.03.18 18:38
Moin und :welcome: in der EE!
Ist nicht persönlich gemeint, aber gleich zu Anfang, damit es keine Missverständnisse gibt: wir machen nicht deine Hausaufgaben. :nixweiss: Wir helfen dir gerne dabei, deine Hausaufgaben selbst zu machen. :zustimm:
Was hast du denn schon? Evtl. mal was ausprobiert, auch wenn der Code nicht läuft, stell ihn einfach mal hier rein. :idea:
cu
Narses
katzemageis - Do 15.03.18 18:45
Kann ich natürlich verstehen, weiß jedoch gar nicht wie ich da rangehen soll. Habe halt nur die Oberfläche und einen Array für die Noten 1-6 definiert (
var Noten : array[1..6] of String;), weiß jedoch nicht wie ich weitermachen soll.
Moderiert von Narses: Komplettzitat des vorigen Beitrags entfernt.
Moderiert von Narses: Delphi-Tags hinzugefügt
Narses - Do 15.03.18 18:55
Moin!
katzemageis hat folgendes geschrieben : |
weiß jedoch gar nicht wie ich da rangehen soll. |
Euer Lehrer hat also einfach den Raum betreten, Zeitung gelesen und kurz vor Schluss eine Aufgabe rausgehauen, evtl. mit einem diabolischen Grinsen garniert, richtig? 8) Ja, so ähnlich war das damals auch, als ich noch in die Schule ging... :lol:
:suspect: Jetzt mal Spaß bei Seite: irgendwas müsst ihr doch besprochen haben. :les: :lupe:
katzemageis hat folgendes geschrieben : |
Jetzt könnte ich das einfach mit vielen If Anweisungen machen |
Dann fangen wir doch einfach mal hier an. Wenn du das kannst, dann mach das doch einfach mal. Später...
katzemageis hat folgendes geschrieben : |
aber wir sollen Arrays verwenden. |
...schauen wir dann mal, wie man das anders/einfacher machen könnte. :idea: ;)
cu
Narses
katzemageis - Do 15.03.18 19:23
Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91:
| unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TForm1 = class(TForm) Button_Berechne: TButton; Button_Close: TButton; Edit_Note: TEdit; Edit_Punkte: TEdit; Label1: TLabel; Label2: TLabel; procedure Button_BerechneClick(Sender: TObject); procedure Button_CloseClick(Sender: TObject); private
public
end;
var Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.Button_CloseClick(Sender: TObject); begin close; end;
procedure TForm1.Button_BerechneClick(Sender: TObject); var punkte: Integer; var Noten : array[1..6] of Integer;
begin
punkte:=StrToInt(Edit_Punkte.Text);
Noten[1]:=1; Noten[2]:=2; Noten[3]:=3; Noten[4]:=4; Noten[5]:=5; Noten[6]:=6;
if punkte = 10 then begin Edit_Note.Text:=IntToStr(Noten[1]); end
else if(punkte<10) AND (punkte>=8) then begin Edit_Note.Text:=IntToStr(Noten[2]); end
else if punkte>=6 then begin Edit_Note.Text:=IntToStr(Noten[3]); end
else if punkte>=4 then begin Edit_Note.Text:=IntToStr(Noten[4]); end
else if punkte>=2 then begin Edit_Note.Text:=IntToStr(Noten[5]); end
else if punkte < 2 then begin Edit_Note.Text:=IntToStr(Noten[6]); end;
end;
end. |
Achso bei der 2. If Anweisung wird hier im Forum aus irgendeinem Grund ein Smiley angezeigt. Dort steht jedoch eine 8.
Ja ich habe die grundlegende Ansicht nicht sehr schön gestaltet, da ich es eig erstmal nur probieren wollte.
Ich könnte auch als ich die Noten definiert habe einfach eine for Schleife machen, was ich jetzt auch hinzugefügt habe.
Moderiert von Narses: Delphi-Tags hinzugefügt
Moderiert von Narses: Komplettzitat... entfernt.
Narses - Do 15.03.18 20:16
Moin!
katzemageis hat folgendes geschrieben : |
Achso bei der 2. If Anweisung wird hier im Forum aus irgendeinem Grund ein Smiley angezeigt. Dort steht jedoch eine 8. |
Das liegt daran, dass du keine Delphi-Tags verwendest. :idea: Wenn du den Quelltext mit [
delphi]..[/delphi] umschließt, wird er auch hübsch formatiert. ;)
katzemageis hat folgendes geschrieben : |
Ja ich habe die grundlegende Ansicht nicht sehr schön gestaltet, da ich es eig erstmal nur probieren wollte. |
Wurst, das ist Optik. :nixweiss:
katzemageis hat folgendes geschrieben : |
Ich könnte auch als ich die Noten definiert habe einfach eine for Schleife machen, was ich jetzt auch hinzugefügt habe. |
Ich seh keine for-Schleife... :lupe: :?:
cu
Narses
katzemageis - Do 15.03.18 20:20
hier nochmal die kleine for Schleife:
Delphi-Quelltext
1: 2: 3: 4:
| for i :=1 to 6 do begin Noten[i]:=i; end; |
Dient halt ledeglich dazu den folgenden Ausdruck zu vereinfachen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Noten[1]:=1; Noten[2]:=2; Noten[3]:=3; Noten[4]:=4; Noten[5]:=5; Noten[6]:=6; |
An sich funktioniert das Programm zwar, aber die ganzen If Anweisungen gefallen mir da irwie nicht, das kann man bestimmt noch anders darstellen, oder?
Narses - Do 15.03.18 20:27
Moin!
katzemageis hat folgendes geschrieben : |
hier nochmal die kleine for Schleife:
[...]
Dient halt ledeglich dazu den folgenden Ausdruck zu vereinfachen. |
Jup, schon klar. ;) Aber: die grundlegenden Sachen hast du doch schonmal drauf, das ist doch was. :zustimm:
katzemageis hat folgendes geschrieben : |
An sich funktioniert das Programm zwar, aber die ganzen If Anweisungen gefallen mir da irwie nicht, das kann man bestimmt noch anders darstellen, oder? |
Ja, ich würde das auch anders gestalten. :nixweiss: Allerdings kann ich noch nicht so richtig den Sinn in dem Array sehen, so wie du das konzeptionell verwendet hast. :gruebel: Schau doch mal genau hin, irgendwie wäre es ohne das Array ja sogar deutlich einfacher, du könntest auch direkt die Ziffer der Note als Textkonstante ausgeben, statt jedes mal die Verrenkung mit dem IntToStr usw. :?
Bist du sicher, dass der Lehrer
das gemeint hat, als er sagte, "da soll ein Array rein"? :lupe:
Fällt dir vielleicht - rein konzeptionell gedacht, ohne dass du wissen müsstest, wie das geht - eine Variante ein, bei der das Array auch einen wirklichen Sinn hat? :idea:
cu
Narses
katzemageis - Do 15.03.18 20:31
Ja ich weiß, dass mein Array eigentlich eher sinnlos ist, wollte jedoch halt wenigstens irgendwie ein Array einbringen.
Naja sonst wüsste ich um ehrlich zu sein keine Variante mit einem Array, welche ich umsetzen könnte. Bis jetzt hatten wir auch noch keine mehrdimensionalen Arrays, mit denen man vielleicht auch verwirklichen könnte. Weiß leider echt nicht mehr weiter, wie ich dies anders, vor allem besser schreiben könnte.
Moderiert von Narses: Komplettzitat... entfernt.
Narses - Do 15.03.18 20:36
Moin!
Gebe ich Anlass zu der Vermutung, ich könnte mich an meinen letzten Beitrag nicht erinnern oder das mein Scrollrad an der Maus kaputt ist? :P
katzemageis hat folgendes geschrieben : |
Naja sonst wüsste ich um ehrlich zu sein keine Variante mit einem Array, welche ich umsetzen könnte. |
Wären die Punkte-Grenzen nicht ein interessanter Ansatz? :idea: :zwinker:
katzemageis hat folgendes geschrieben : |
Bis jetzt hatten wir auch noch keine mehrdimensionalen Arrays, mit denen man vielleicht auch verwirklichen könnte. |
Holla :shock: erst gar keine Ahnung und dann gleich Klotzen... :lol: immer langsam. ;)
cu
Narses
Delete - Do 15.03.18 20:48
- Nachträglich durch die Entwickler-Ecke gelöscht -
Narses - Do 15.03.18 20:53
Moin!
@
Frühlingsrolle:
Frühlingsrolle hat folgendes geschrieben : |
schreib' die Noten einfach als Konstante an: |
Wo ist der konzeptionelle "Fortschritt" ggü. der Array-Verwendung des TE? :nixweiss: Bist du sicher, dein Beitrag hat hilfreiche/aufklärende Wirkung? :?
cu
Narses
ub60 - Do 15.03.18 20:54
Ich vermute mal. dass der Lehrer mit dem Array eher so etwas meint:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Noten[1]:=38; Noten[2]:=32; Noten[3]:=24; Noten[4]:=16; Noten[5]:=8; Noten[6]:=0; |
Also ab 38 Punkten eine 1, ab 32 eine 2 usw.
Das lässt sich dann mit einer Schleife abfragen.
ub60
katzemageis - Do 15.03.18 21:01
Also hiermit könnte ich ja dann die angesprochenen Punktegrenzen realisieren, aber ich weiß trotzdem nicht wie ich damit fortfahren kann. Wir haben bis jetzt erst eine Aufgabe mit Arrays gemacht, bei denen wir Zahlen sortieren mussten. Dabei hatte aber jeder Index einen speziellen Wert.
Wie genau kann ich denn jetzt damit abfragen, ob mein eingegebener Wert in dieser Punktegrenze ist, damit ich dann letztlich die Note ausgeben kann?
Moderiert von Narses: Komplettzitat... entfernt.
Narses - Do 15.03.18 21:04
Moin!
Da du den sachten Hinweis offensichtlich nicht verstanden hast: klick doch bitte einfach auf "Antworten", statt immer alles zu zitieren. Das macht deine Beiträge leichter zu lesen. :idea:
@Thema: Wie würdest du es denn als Mensch machen? Mal in Mauseschrittchen gedacht... :lupe:
cu
Narses
Delete - Do 15.03.18 21:09
- Nachträglich durch die Entwickler-Ecke gelöscht -
katzemageis - Do 15.03.18 21:10
Naja die Punktegrenzen haben wir ja jetzt schon. Jetzt müsste man ja nur schauen ob die eingegebene Punktzahl in einer diese Punktemenge liegt
katzemageis - Do 15.03.18 21:19
Also ich würde dieses andere Array mit den Punktegrenzen halt auch nur wieder mit einer If Anweisung abfragen lassen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Noten[1]:=38; Noten[2]:=32; Noten[3]:=24; Noten[4]:=16; Noten[5]:=8; Noten[6]:=0;
if punkte>=Noten[1] then begin Edit_Note.Text:='1' end else if punkte>=Noten[2] then begin Edit_Note.Text:='2' end ; |
Naja diese If Anweisungen dienen übrigens nur als Beispiel, da man dies einfach mit einer Schleife abkürzen könnte.
ub60 - Do 15.03.18 22:10
... und jetzt das if ... then ... in einer Schleife.
Pseudocode:
Quelltext
1: 2: 3:
| Für i gehe ich von 6 bis 1. (Schleife rückwärts) Dann frage ich ab, ob die Punktzahl größer oder gleich Noten[i] ist. Ist das der Fall, setze ich die Note auf den Wert i. |
Bei guten Noten überschreibe ich den Wert Note zwar einige male, aber am Ende bleibt der richtige Wert übrig.
ub60
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!