1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Frage zu einem Pascal Programm

Discussion in 'Programmieren' started by Croyda, Nov 24, 2004.

Thread Status:
Not open for further replies.
  1. Croyda

    Croyda Byte

    Hallo,
    wir haben in der Schule ein Programm geschrieben (Pascal):


    program Epidemie;

    uses wincrt;

    const n=100;

    var p,k:real;
    i,j: integer;

    begin

    write ('Anteil der Infizierten p= ');
    readln (p);
    write ('Ansteckungsrate: k= ');
    readln (k);
    clrscr;
    writeln ('Verlaud der Epidemie')
    writeln;
    writeln ('Zeit Infizierte')
    writeln ('-----------------')
    for i=1 to 1 do
    begin
    p:=p+k*p(1-p);
    for j:=1 to 1 do
    begin
    writeln (i:3, ' ',p:10:4);
    readln;
    end;
    end;
    end.


    So, ich verstehe eigentlich alles bis auf folgenden Block:

    for i=1 to 1 do
    begin
    p:=p+k*p(1-p);
    for j:=1 to 1 do
    begin
    writeln (i:3, ' ',p:10:4);
    readln;
    end;
    end;

    für was steht das denn alles? Ihr könnt mir da doch sicherlich helfen, oder? Dankeschön!
     
  2. Sumo

    Sumo Kbyte

    So ganz fit bin ich in Pascal nicht mehr. Aber ein paar Dinge kann ich schon noch sagen.
    Code:
    for i=1 to 1 do begin
      p:=p+k*p(1-p);
      for j:=1 to 1 do begin
        writeln (i:3, ' ',p:10:4);
        readln;
      end;
    end;
    
    Die For-Schleifen sind hier eigentlich völlig fehl am Platz. Sie tun nichts anderes als den folgenden Programmblock einmal auszuführen. Es reicht deshalb nur die Befehle für die Berechnung und die Ausgabe hinzuschreiben.
    Code:
    p:=p+k*p(1-p);
    writeln (i:3, ' ',p:10:4);
    readln;
    
    p:=... ist eine Zuweisung. Ihr hattet in der Schule sicher die Formel für die Berechnung irgendwie hergeleitet oder so gesagt bekommen. Jedenfalls rechnet p:=p+k*p(1-p) den Wert für die eingegebenen Daten p und k aus.
    Bei writeln (i:3, ' ',p:10:4) bin ich mir nicht mehr ganz sicher. Der Doppelpunkt und die nachfolgenden Zahlen bewirkten bei Fliesskommazahlen glaube ich, dass die Zahl nach x stellen abgeschnitten wird.
    readln; wartet so lange bis der Benutzer die Eingabetaste drückt. Das wird eigentlich dafür benutzt, damit die DOS-Box nach der Ausgabe des Ergebnisses nicht sofort zu geht.
     
  3. Croyda

    Croyda Byte

    Aja, okay danke!
     
Thread Status:
Not open for further replies.

Share This Page