Pascal Voting Programm Probleme

Soop4Fly

Grünschnabel
Hallo!
Habe für den Informatik Unterricht ein Lehrervotingprogramm (ich weiß sehr kreativ ^^ ) in Turbo Pascal geschrieben.
Ich bin soweit eigentlich fertig es fehlen nur noch 2 wichtige Sachen die ich allerdings nicht hinbekomme bzw. nicht verstehe warum.
Also das Programm besteht aus 2 Teilen, aus einem Admin Programm und einem User Programm.
Beim Voting im User Programm funktioniert alles soweit nur das er nicht sortiert nach abgegeben Stimmen und auch nicht die Namen dazu anzeigt also zu den Stimmen zum Schluss beim Anzeige/Ergebnisschirm.
Es würde mir sehr helfen wenn mir hier geholfen werden kann ;-)
Den Quelltext kann ich entweder hier posten oder per PM euch schicken.
MFG
~~~
Soop4Fly
 
Den Quelltext kann ich entweder hier posten oder per PM euch schicken.
Ich würde vorschlagen, du postest ihn hier. Sonst musst du ihn ja jedem, der dir helfen will, separat schicken - das wäre eine zu grosse Belastung für die ohnehin schon überforderte (;-]) tutorials.de-Datenbank.
 
hm ok hier das user programm, aber nur das grundprogramm, rahmen etc. habe ich weggelassen das wäre zuviel quelltext das also die wichtigen proceduren die mir noch fehler bereiten:
erst Vereinbarungen falls dort etwas falsch sein sollte

PROGRAM Userprogramm_Lehrervote;
USES crt;

VAR
Lehrer : ARRAY [1..5] OF string; {Variablenvereinbarungen}
rang : ARRAY [1..5] OF integer;
score : ARRAY [1..5] OF integer;
scorenew : ARRAY [1..5] of integer;
Lehrerliste : ARRAY [1..5] OF string;
lehrer1 : string;
lehrer2 : string;
lehrer3 : string;
lehrer4 : string;
lehrer5 : string;
lehrer1file : text;
lehrer2file : text;
lehrer3file : text;
lehrer4file : text;
lehrer5file : text;
Summe : integer;
Tausch : integer;
Tausch2 : string;
Zaehler : integer;
Zaehler2 : integer;
scfile : text;
key : char;
votekey : char;
eins : integer;
F : text;
{titel.dat varies}
Zaehler3 : integer;
Zaehler4 : integer;
Zaehler5 : integer;
sfile : text;
{Lehrer1 : ARRAY [1..5] OF string;
Lehrer2 : ARRAY [1..5] OF string;
Lehrer3 : ARRAY [1..5] OF string;
Lehrer4 : ARRAY [1..5] OF string;
Lehrer5 : ARRAY [1..5] OF string;}
name : string;
namefile : text;
{votelog varies}
log : string;
vfile : text;
{temporaer}
testzahl : integer;
{-------------------------------------------------------------------------------------}
{------------------------------------------------------------------------------------}
PROCEDURE ladenvotesc; {speicherprozedur}
BEGIN
assign (scfile,'C:\votesc.dat');
{$I-} reset (scfile); {$I+}
IF ioresult = 0 THEN
BEGIN
readln(scfile);
FOR Zaehler := 1 TO 5 DO
BEGIN
readln(scfile,Zaehler);
readln(scfile,score[Zaehler]);

END;
END;
close(scfile);
END;
{-------------------------------------------------------------------------------------}
PROCEDURE anzeige;
BEGIN
clrscr;
ladentiteldat;
ladenvotesc;
writeln;
writeln('Votingergebnisse:');
writeln('gesamte votes:',summe);
writeln;
writeln;
writeln(' Rang Lehrer Stimmen');
writeln('------------------------------------------');
FOR Zaehler := 1 TO 5 DO hier haut irgendwas nich hin
writeln(Zaehler:4,'. ',Lehrer[Zaehler]:15,' ',scorenew[Zaehler]); <========
writeln;
writeln;
gotoxy(1,24); writeln(' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');
gotoxy(1,25); writeln(' º º');
gotoxy(1,26); writeln(' º º');
gotoxy(1,27); writeln(' º Programm beenden mit esc º');
gotoxy(1,28); writeln(' º º');
gotoxy(1,29); writeln(' º º');
gotoxy(1,30); writeln(' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ');
writeln;
writeln;
writeln;
key := readkey;

CASE key OF {CASE beinhaltet ein BEGIN}
#27: halt;
END;
END;

{--------------------------------------------------------}
{----------------------------------------------------------------------------------}
PROCEDURE ladenl1;
BEGIN
assign (lehrer1file,'C:\lehrer1.dat');
{$I-} reset (lehrer1file); {$I+}
IF ioresult = 0 THEN
readln(lehrer1file,lehrer1);
close(lehrer1file);

END;
es folgt laden2 -laden5
... ----> ladet alle 5 lehrernamen einzeln aus den einzelnen dateien da es meiner ansicht nach wenn das prog die lehrer aus einem array gelesen hat ich nicht für jeden einzelnen voten kann

und das problem mit dem sortieren kann ich mir ebenfalls nicht erklären:
{--------------------------------------------------------------------------------------------------------}
PROCEDURE Sortieren;
BEGIN
Zaehler := 0;
Zaehler2 := 0;
FOR Zaehler2 := 1 TO 3 DO
FOR Zaehler := (Zaehler2+1) TO 3 DO
IF score[Zaehler2] > score[Zaehler] THEN {Stueckweise Vertauchen zur gewuenschten Reihenfolge}
BEGIN
Tausch := score[Zaehler2];
score[Zaehler2] := score[Zaehler];
score[Zaehler] := Tausch;
Tausch2 := Lehrer[Zaehler2];
Lehrer[Zaehler2] := Lehrer[Zaehler];
Lehrer[Zaehler] := Tausch2;
END;
END;
 
Dein Posting hat zwei Probleme: Erstens hast du den Quellcode nicht in Codetags eingeschlossen, so dass er quasi unlesbar ist, zweitens hast du nicht gesagt, welches Output dein Programm erzeugt. Die Information "es funktioniert nicht" ist nichts wert!

Zum Thema Sortieren kann ich vom kurzen Ansehen deines Codes nur sagen, dass ich nicht weiß, weshalb deine Schleifen bis 3 zählen. Und überhaupt verstehe ich diese Schleifen nicht. Was soll das für ein Algorithmus sein?

Der Einfachheit halber präsentiere ich hier mal ein einfaches Bubble Sort (direktes Austauschen), das zwar sehr langsam ist, aber dafür schnell zu implementieren:

Code:
var
  i,j: Integer ;
  a: array[1..N] of Item ;
  x: Item ;
.
.
.
for i:=2 to N do
  for j:=N downto i do
    if( a[j-1].key>a[j].key ) then begin
      x := a[j-1] ;
      a[j-1] := a[j] ;
      a[j] := x ;
    end ;

Vielleicht hilft das ja.
-Gawayn
 

Neue Beiträge

Zurück