turbo pascal fehler stack overflow hilfe

  • Hallo ich soll einen Lotto Zahlen Generator für die Schule machen, doch leider bekomme ich folgende Fehlermeldung : "Fehler 202 Stack-Überlauf "


    Hier der Quellcode :


    Program Lottozahlen;
    uses crt ;


    var spieldauer,zaehler : integer;
    glueckszahl,ziehung,n,i : longint;


    procedure einlesen;


    begin
    write('Wie oft möchten Sie spielen: ') ;
    read(Spieldauer) ;
    writeln('Es kostet ',Spieldauer* 9,90 , ' Euro');
    glueckszahl:=0;
    for i:=1 to 6 do write('Bitte 6 verschiedene Zahlen aus 49 eingeben');
    readln; inc(glueckszahl,1 shl n);
    end;



    procedure ziehen;


    begin
    ziehung:=0;
    for i:=1 to 6 do begin
    repeat n:=1 shl random(49);
    until (n and ziehung)=0;
    end;
    for zaehler:=1 to spieldauer do begin ziehen;
    if ziehung= glueckszahl then writeln('6 richtige in der',Spieldauer,' .Woche');
    end;
    end;


    begin
    einlesen;
    ziehen;
    end.

  • ich glaub es liegt daran, dass du die spieldauer mit 9,9 multiplizierst und spieldauer als integer deklariert hast. integer sind aber zahlen ohne komma. also musst du die spieldauer entweder mal 9 nehmen oder spieldauer zu einer anderen variable machen als integer.

  • Re: turbo pascal fehler stack overflow hilfe


    AFAIK liegt der Fehler dort:

    Zitat

    Original geschrieben von Azur
    for zaehler:=1 to spieldauer do begin ziehen;


    Du rufst aus dieser procedure immer wieder sie selbst auf, irgendwann ist dann der stack voll, da diese vor dem Aufruf nicht beendet wird.
    Am besten, Du rufst die procedure von ausserhalb - am besten vom Hauptprogramm aus.-

  • vielen dank , das war der fehler aber laufen tut es nicht :D aber den fehler find ich schon :top:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!