{ Gewerbeoberschule „Max Valier“ Bozen Thomas Gummerer 3ia} PROGRAM loesch; USES Crt; TYPE t_tab = ARRAY[1..1000] OF INTEGER;
{ Prozedur zum loeschen der angegebenen Stelle} PROCEDURE loeschen(stelle : INTEGER; anz : INTEGER; VAR tab : t_tab);
{Variablen der Prozedur} VAR i : INTEGER; BEGIN FOR i:= 1 TO anz DO BEGIN IF i < stelle THEN tab[i] := tab[i] ELSE tab[i] := tab[i+1] END; END;
FUNCTION Suchen (such : INTEGER; groesse : INTEGER; arr : t_tab) : INTEGER;
VAR i : INTEGER; ende : BOOLEAN;
BEGIN ende := FALSE; i := 1; (* Laufvariable initialisieren *) WHILE NOT(ende) AND (i <= groesse) DO BEGIN (* Ist der aktuelle Wert im Array der gesuchte *) IF arr[i] = such THEN ende := true (* Wenn die Zahl gefunden wurde soll die Schleife beendet werden*) ELSE i := i + 1; (* Laufvariable erhoehen *) END; (* OF WHILE *) Suchen := i; (* Rueckgabewert uebergeben *) END; (* OF FUNCTION *)
{Variablen des Hauptprogrammes} VAR stelle, i, n : INTEGER; tab : t_tab; such : INTEGER;
{Beginn des Hauptprogrammes} BEGIN ClrScr; {Generiert Zufallszahlen neu} RANDOMIZE; {Fuellen des ARRAYs mit Zufallszahlen von 1 bis 20} Write('Wie viele Zahlen wollen Sie im Array haben: '); Readln(n); FOR i:= 1 TO n DO BEGIN tab[i] := Random(20) + 1; {Ausgabe des vollstaendigen ARRAYs} Write(' ',tab[i]); END; Readkey; Writeln; Writeln('Welche Zahl im ARRAY wollen sie loeschen?'); Readln(such);
stelle := Suchen (such, n, tab); {Wurde die Zahl gefunden} IF stelle <> -1 THEN loeschen(stelle,n,tab) ELSE WriteLn ('Die Zahl wurde nicht gefunden.');
{Ausgabe des ARRAYs ohne die geloeschte Stelle} FOR i := 1 TO n-1 DO Write(' ',tab[i]);
Readkey END.
|