Einzelnen Beitrag anzeigen

Mo53

Registriert seit: 16. Mai 2021
59 Beiträge
 
Delphi 10.3 Rio
 
#25

AW: Erstellung einer Schleife mit drei Überprüfungen

  Alt 24. Mai 2021, 23:09
Das sieht sehr gut aus, ich habe in der zwischenzeit auch meinen code bearbeitet, jedoch wird auf einmal nur bis 1 ausgegeben.
Bevor ich die zwei neuen repeat schleifen eingefügt hab hat es bis 50 geklappt, siehst du vielleicht woran es liegt.

Delphi-Quellcode:
program ueb04;

{$APPTYPE CONSOLE}
{$R+,Q+,X-}

uses
  System.SysUtils;

const
  LOWER_BORDER = 0;
  UPPER_BORDER = 50;

var
  even: boolean;
  fib: boolean;
  twinprim: boolean;
  NextPrim: boolean;
  PrevPrim: boolean;
  zahl: integer;
  Primzahl: boolean;
  teiler: integer;
  uebrig: integer;
  a: integer;
  b: integer;
  c: integer;

begin
  for zahl := LOWER_BORDER to UPPER_BORDER do
  begin
    even := false;
    fib := false;
    twinprim := false;

    if zahl > 1 then
    begin
      // Überprüfung ob gerade:
      even := (zahl mod 2 = 0);

      // Überprüfung ob Primzahl:
      teiler := 1;
      repeat
        teiler := teiler + 1;
        uebrig := zahl mod teiler;
      until (uebrig = 0);

      Primzahl := (zahl = teiler);
    end;

    if Primzahl then
    begin
      Teiler:= 1;
      repeat
        teiler := teiler + 1;
        uebrig := zahl + 2 mod teiler;
      until (uebrig = 0);
      NextPrim := (zahl + 2) = teiler;
    end;

    if Primzahl and (zahl > 3) then
    begin
      Teiler:= 1;
      repeat
        teiler := teiler + 1;
        uebrig := zahl - 2 mod teiler;
      until (uebrig = 0);
      PrevPrim := (zahl - 2) = teiler;
    end;

    twinprim := Primzahl and (NextPrim or PrevPrim);

    // Überprüfung ob Teil der Fibonacci-Folge:
    a := 0;
    b := 1;
    c := 0;
    while (a < zahl) and not fib do
    begin
      c := a + b;
      a := b;
      b := c;
      fib := c = zahl;
    end;
    WriteLn(zahl, ' even: ', even, ' fib: ', fib, ' twinprim: ', twinprim);
  end;
  readln;

end.
  Mit Zitat antworten Zitat