Entwickler-Ecke
Sonstiges (Delphi) - Aufgabe Zensurenberechnung
cyberrambo2810 - Do 04.03.10 19:03
Titel: Aufgabe Zensurenberechnung
Hallo,
In der Schule haben wir vor kurzem mit Delphi begonnen und ich komm nicht mit der Aufgabe klar und bitte daher um Hilfe.
Aufgabe:
Eingabe 1: mögliche Punktzahl '60'
Eingabe 2: erreichte Punktzahl z.B:'30'
Ausgabe der Zensur: '4+'
(Verarbeitung Prozentwert berechnen und runden)
Prozent Note
0..8: 6
9..35: 5
36..54: 4
55..69: 2
85..100: 1
3 Editfenster/1 Abbruchbutton(close;)/1 Rechnenbutton
Da ich noch Amateur in Bereich Delphi bin, bitte ich um einfache,verständnisvolle Erklärung.
PS: Ich habe kein Delphi und es wäre toll, wenn ihr es so anordnet wie im Programm ( u.a. zum drucken).
MfG,cyberrambo2810
martin300 - Do 04.03.10 19:12
Zitat: |
PS: Ich habe kein Delphi und es wäre toll, wenn ihr es so anordnet wie im Programm ( u.a. zum drucken).
|
Dann wäre es vielleicht gar nicht so schlecht sich Delphi zu besorgen? Oder was meint dein Lehrer, bzw. wie solltest du es machen?
Bergmann89 - Do 04.03.10 19:36
Hey
@martin300: ich glaub er meint das so, das er kein Delphi daheim hat un das erst in der Schule machen kann, wires ihm also erklären müssen un kein Code hochladen können...
@cyberrambo2810: Wo hast du denn Probleme? Die Komponenten die du brauchst sind ja schon vorgegeben, die klickst du dir einfach auf deni Formular und gibts ihnen einen gescheiten Namen. Mit StrToInt kannst du aus den Strings im Edit eine Zahl (Integer) machen. Mit StrToInt geht das ganze rückwärts. Runden kann man mit Round, oder gleich mit der Ganzzahlingen Division "div". Das sollte alles sein was du dazu brauchst. Ansonsten ist
HIER [
http://www.christian-stelzmann.de/artikel/crashkurs.htm] alles wunderbar ausführlich beschrieben...
MfG Bergmann
cyberrambo2810 - Do 04.03.10 20:41
Erstmal Danke an alle die geantwortet haben. ;) Ich werde jetzt Lazarus installieren und probieren. Sollte es mir nicht gelingen (Aufgabe), dann mache ich vom Quelltext Screenshorts, damit ihr mir die Fehler beschreiben könnt.
Mfg, cyberrambo2810
Bergmann89 - Do 04.03.10 21:11
Hey,
du musst keine Bilder vom Code machen, den kannst du auch einfach hier posten setz einfach den Code in folgende Tags: <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG6a8c04f5e2825fb46f3f25d9e682d73f}</span></span>
MfG Bergmann
cyberrambo2810 - Do 04.03.10 21:13
So hier ist mein Quelltext, der falsch ist... Was hab ich falsch gemacht?
Quelltext:
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:
| unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
procedure TForm1.Button2Click(Sender: TObject); begin close; end;
procedure TForm1.Button1Click(Sender: TObject); var Punkte1:Integer; Punkte2:String; Punkte3:Real; begin Punkte:StrToInt(Edit1.Text); case Punkte of 0..8:='6'; 9..35:='5'; 36..54:='4'; 55..69:='2';
85..100:='1'; end; Edit3.Text: initialization {$I unit1.lrs}
end. |
MfG,cyberrambo2810
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Delete - Do 04.03.10 21:15
cyberrambo2810 hat folgendes geschrieben : |
So hier ist mein Quelltext, der falsch ist... Was hab ich falsch gemacht? |
Du benutzt keine Delphi Tags für deinen Code hier im Forum.
Du verschweigst uns die Fehlermeldung.
Und das Ergebnis springt von alleine in das Eingabefeld?
cyberrambo2810 - Do 04.03.10 21:23
Ich kann ja keine Delphi Tags anwenden da ich ja Lazarus anwende, oder verfügt Lazarus über diese Tags? Nicht böse sein, wie gesagt das ist für mich alles komplett neu.
Delete - Do 04.03.10 21:28
IM FORM, beim Erstellen deines Beitrages sollst du Delphi-Tags verwenden.
FinnO - Do 04.03.10 21:31
Luckie hat folgendes geschrieben : |
IM FORM |
fail.
Was Luckie meint ist, dass du den Quelltext den du programmiert hast, kopierst und dann, wenn du hier einen Beitrag schreibst, diesen einfügst und jeweils vor und hinter diesen Code
<span class="inlineSyntax"><span class="codecomment">{PROTECTTAG44cb3ffd453ffed6b2e7cfab3f6057e4}</span></span> schreibst.
cyberrambo2810 - Do 04.03.10 21:34
Jetzt weiß ich zukünftig bescheid ;) Dank Gausi habe ich nun die richtige Delphi-Form.
PS: Mir fehlt bestimmt noch die Formel zur Prozentberechnung p=w*100/G d.h. z.B. p=54*100/60=90 Daraus folgt: Note:1
Delete - Do 04.03.10 21:46
Mist diese blöde U.
Ja, da hast du doch deine Formel. Für
w und
G musst du jetzt eben noch die Werte aus den Eingabefeldern nehmen:
Delphi-Quelltext
1:
| p := StrToInt(Edit2.Text) * 100 div StrToInt(Edit1.Text); |
Und mit dem Ergebnis gehst du dann in deine
case-Verzweigung und bestimmst die Note.
cyberrambo2810 - Do 04.03.10 21:59
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:
| unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
procedure TForm1.Button2Click(Sender: TObject); begin close; end;
procedure TForm1.Button1Click(Sender: TObject); var Punkte1:Integer; Punkte2:String; Punkte3:Real; begin p := StrToInt(Edit2.Text) * 100 div StrToInt(Edit1.Text); case Punkte of 0..8:='6'; 9..35:='5'; 36..54:='4'; 55..69:='2'; 85..100:='1'; end; Edit3.Text: initialization {$I unit1.lrs}
end. |
Und wie sieht's jetzt aus, ich hab das Gefühl, dass die Variablen falsch sind...
Delete - Do 04.03.10 22:11
Du verstehst absolut nicht, was du machst oder? Wo ist p deklariert? Wozu die Variablen Punkt1, Punkt2 und Punkt3? Und das Ergebnis springt immer noch in Edit3 rein oder wie?
cyberrambo2810 - Do 04.03.10 22:19
Luckie hat folgendes geschrieben : |
Du verstehst absolut nicht, was du machst oder? Wo ist p deklariert? Wozu die Variablen Punkt1, Punkt2 und Punkt3? Und das Ergebnis springt immer noch in Edit3 rein oder wie? |
Das dritte Editfenster zeigt die Note an. Das erste Editfenster die möglichen Punkte. Und im zweiten Editfenster wird die optionale Punktzahl eingegeben.
Ich wendete mich nicht aus Spaß im Forum, sondern das Forum soll da sein um andere mit ihren Problemen zu helfen...
Delete - Do 04.03.10 22:24
Jetzt rate mal, was ich hier die ganze Zeit versuche. Aber wenn du nicht wem falls versuchst zu verstehen, was du machst und was man dir sagt, wird das nichts. Fertigen Quellcode wirst du hier nicht bekommen.
Noch ein Tipp:
Delphi-Quelltext
1: 2: 3: 4: 5:
| case p of 0..8: note := '6'; 9..35: note := '5'; end; Edit3.Text := note; |
PS: Du wendest dich nicht aus Spaß ans Forum und wir machen nicht zum Spaß die Hausaufgaben anderer.
cyberrambo2810 - Do 04.03.10 22:31
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:
| unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
procedure TForm1.Button2Click(Sender: TObject); begin close; end;
procedure TForm1.Button1Click(Sender: TObject); var note:Integer; p := StrToInt(Edit2.Text) * 100 div StrToInt(Edit1.Text); begin case p of 0..8:note:='6'; 9..35:note:='5'; 36..54:note:='4'; 55..69:note:='3'; 70..84:note:='2'; 85..100:note:='1'; end; Edit3.Text:note; initialization {$I unit1.lrs}
end. |
Hab jetzt den ganzen Quatsch mit den Punkten bei den Variablen erstmal gelöscht...
ALF - Do 04.03.10 22:42
Hi, mal ne Frage:
Gibt es bei den Zensuren keine 3 mehr, bin schon lange raus!? :?
Gruss Alf
cyberrambo2810 - Do 04.03.10 22:45
Hi ALF, Habe ich übersehen, werde es sofort korrigieren...
Delete - Do 04.03.10 22:48
cyberrambo2810 hat folgendes geschrieben : |
Hab jetzt den ganzen Quatsch mit den Punkten bei den Variablen erstmal gelöscht... |
Und jetzt?
cyberrambo2810 - Do 04.03.10 22:55
Mein Programm zeigt mir nur noch ein Fehler an und zwar p := StrToInt(Edit2.Text) * 100 div StrToInt(Edit1.Text)
Delete - Do 04.03.10 23:01
Schön.
cyberrambo2810 - Do 04.03.10 23:01
Danke an alle die mir versucht haben zu helfen, besonders Luckie! ;)
Delete - Do 04.03.10 23:04
Funktioniert es denn jetzt?
patrick - Do 04.03.10 23:07
nimm es Luckie nicht übel. Im Moment ist es für ihn(uns) so als müsstet du einem Fisch das bellen beibringen.
Du solltest dir wirklich erst mal ein gewisses Grundwissen erarbeiten, damit man dir hier helfen kann. Momentan kopierst du nämlich nur zusammen was man dir hin wirft, ohne zu verstehen wieso.
erste Hilfe [
http://www.delphi-library.de/topic_Crashkurs+Delphi_37446.html]
cyberrambo2810 - Do 04.03.10 23:13
patrick hat folgendes geschrieben : |
nimm es Luckie nicht übel. Im Moment ist es für ihn(uns) so als müsstet du einem Fisch das bellen beibringen.
Du solltest dir wirklich erst mal ein gewisses Grundwissen erarbeiten, damit man dir hier helfen kann. Momentan kopierst du nämlich nur zusammen was man dir hin wirft, ohne zu verstehen wieso.
erste Hilfe [http://www.delphi-library.de/topic_Crashkurs+Delphi_37446.html] |
Danke patrick für den nützlichen Link! Mache jetzt sowieso Feierabend... Wünsche noch n' schönen Abend ;)
MfG, cyberrambo2810
Bergmann89 - Fr 05.03.10 16:38
Hey,
was ich dir auch dringend ans Herz legen will: gewöhn dir ne ordentliche Quelltextformatierung an. Bedeutet nach jedem
begin (oder ähnlichen Sachen wie
case,
if-
then,
for,
while,
repeat, ...) wird der Quelltext eingerückt. So behält man die Übersicht un dir würde auffallen, das bei dir ein
end; fehlt. Des Weiteren muss du darauf achten was du für Variablen deklariert hast, du hast weiter oben Variablennamen benutzt, die du gar nich hattest. Außerdem sollte man Deklaration und Initialisierung trennen. Heißt die Deklaration (
var p: Integer;) kommt zwischen
procedure und
begin. Initialisieren kannst du das dann nach dem
begin!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button1Click(Sender: TObject); var note, p: Integer; begin p := StrToInt(Edit1.Text)*100 div StrToInt(Edit2.Text); case p of 00.. 08: note:='6'; 09.. 35: note:='5'; 36.. 54: note:='4'; 55.. 69: note:='3'; 70.. 84: note:='2'; 85..100: note:='1'; end; Edit3.Text := IntToStr(note); end; |
so würde das Ganze aussehen wenn du die Tipps befolgst. Ich weiß jetzt hab ich dir zwar deine Hausaufgaben abgenommen, aber ich hab die Erfahrung gemacht, das es am Anfang das besser ist sich Code anzusehen und zu verstehen eh man selber welchen schreiben kann. Man muss erst verstehen wie das ganze abläuft. Deshalb Tipps durchlesen, verstehen und das nächste mal anwenden. Quelltext durchlesen, verstehen und selber umsetzten (nicht kopieren, beim selber schreiben gehts besser in Kopf). Und das wichtigste von alles
CHRASHKURS LESEN [
http://www.christian-stelzmann.de/artikel/crashkurs.htm] (zumindest 3-7 mehr solltest du erstmal nicht brauchen).
Frohes Schaffen.
MfG Bergman
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!