Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Korrekturschlüssel Programmieren Hilfe!


Liesel - So 28.12.08 12:42
Titel: Korrekturschlüssel Programmieren Hilfe!
Hallo, ich habe über die Ferien eine schwierige Aufgabe aufbekommen, bzw. schwierig für mich.
In dieser Aufgabe soll man ein Korrekturschlüssel Programm programieren, ich habe auch damit schon angefangen, doch ich weiß einfach nicht mehr weiter.


Die Aufgabe ist: Es gibt zur Berechnung des Korrekturschlüssels eine Exel-Tabelle (siehe unten). Sie soll durch ein neu entwickelndes Pascal-Programm abgelöst werden.
Der Nutzer soll die maximal zu erreichenden Punktezhal eingeben und auf dem Bildschirm erscheinen die Punkte- Bereiche für die Noten 1 bis 6.
Das Programm soll wiederholt ausgeführt werden können.

Tabelle:

Maximale Bewertungspunkte eingeben: 100


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Note          Anteil in %             Punkte
           von unter     bis      von        bis
1              100       92       100        92
2              92        81        92        81
3              81        67        81        67
4              67        50        67        50
5              50        30        50        30
6              30         0        30         0




Das ist mein Ansatz:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
program Korrekturschluessel;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var max    :integer;

begin
    writeln('Korrekturschlüssel');
    writeln('******************');

    write('Maximale Bewertungspunkte eingeben:'); readln(max);

    writeln('     Note               Anteil in %              Punkte');
    writeln('                     von unter     bis         von      bis');



readln;
end.


Moderiert von user profile iconAXMD: Code- und Delphi-Tags hinzugefügt


Delete - So 28.12.08 12:51

Wenn ich das richtig verstehe, handelt es sich um einfache Prozentrechnung. Du kannst Dir nun ein konstantes Array mit den Grenzen der Noten in Prozent erstellen und damit dann einfach umrechnen (Note 1 = 92 bis 100 %, d.h. bei maximal 50 Punkten sind das also 46 bis 50 Punkte). Der Rest ist formatierte Ausgabe.

[edit] Ich habe mir mal den Spaß gemacht und das Programm geschrieben. Soll das so sein wie im Anhang? [/edit]


Liesel - So 28.12.08 18:01

wow...ja so soll das sein

wie hasten das gemacht? habe das dann noch mal versucht, doch irgendwie verstehe ich das nicht ganz da mir das ja sowieso sehr schwer fällt


freak4fun - So 28.12.08 18:11
Titel: Re: Korrekturschlüssel Programmieren Hilfe!

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Note          Anteil in %             Punkte
           von unter     bis      von        bis
1              100       92       100        92
2              92        81        92        81
3              81        67        81        67
4              67        50        67        50
5              50        30        50        30
6              30         0        30         0

Wobei ich sagen würde:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Note          Anteil in %             Punkte
           von unter     bis      von        bis
1              100       92       100        92
2              91        81        91        81
3              80        67        80        67
4              66        50        66        50
5              49        30        49        30
6              29         0        29         0

Denn was bekommt man sonst bei zB 92 Punkten, 1 oder 2? ;)


Delete - So 28.12.08 18:15

Ich habe mich nur an die Vorgabe gehalten ;)

[edit] Hier mal der Code mit Ausnahme des Hauptprogramms, das darfst Du selbst schreiben *g*:

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:
program Korrekturschluessel;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

//die vorgegebenen Prozentwerte inkl. der 0
const Grenzen: array[0..6of byte = (100,92,81,67,50,30,0);

var i, MaxPunkte, iErr: integer;
    Eingabe: string;
    valid, weiter: Boolean;

//die eigentliche Prozentrechnung
function Prozent(Index: byte): double;
begin
  Result := MaxPunkte / 100 * Grenzen[Index];
end;

//wandelt einen Ansi- in einen ASCII-String (Umlaute etc.)
function DOSString(const s: AnsiString): AnsiString;
begin
  SetLength(Result,Length(s));
  if not CharToOEM(PAnsiChar(s),PAnsiChar(Result)) then
    Result := s;
end;

//rundet die Variable d und füllt links bis zu iLen mit Leerzeichen auf
function FilledString(d: double; iLen: integer): AnsiString;
begin
  Result := Format('%.0f',[d]);
  while Length(Result) < iLen do
    Result := #32 + Result;
end;

begin
  //Hauptprogramm
end.
[/edit]


Liesel - Sa 03.01.09 12:06

Kann man das umwandeln von Ansi und Ascii auch weg lassen??


Delete - Sa 03.01.09 12:17

Natürlich, aber dann sehen Umlaute etwas komisch aus, Du müsstest also z.B. "Korrekturschluessel" schreiben.


Liesel - Sa 03.01.09 12:32

Achso okay...weil einiges was du das geschrieben hast kann ich nicht verwenden das, das sagt mir nix und hatten das auch noch garnicht^^


Delete - Sa 03.01.09 14:54

Dann schreib doch einfach mal, wo Du Verständnissschwierigkeiten hast.