Skip to content
xenforo

Aufgabenheft 02 Aufgabe 2 > kein Fehler bei geany aber auf website

Content

ich hatte die Aufgabe (Aufgabenheft 02 Aufgabe 2) gelöst und war ganz froh, dass meine Testläufe in Geany funktionierten. Ich habe daraufhin die Lösung im Online-Übungssystem eingegeben und dabei werden mir jede Menge Fehler angezeigt!

Unten steht der (zugegeben etwas unübersichtliche) Auszug.
Was mache ich falsch?
Wenn ich die Zahlen aus den hier angegebenen Testläufen angebe funktioniert alles fehlerfrei in Geany.

Das Online-Übungssystem schreibt z.B.

Ihre Einsendung ist fehlerhaft und führt zu einem Programmabsturz zur Laufzeit!

Ich habe absolut keinen Fehler in Geany...

Danke und Gruß
Simon


Ihre Eingaben:
Im ersten Eingabefeld:

{ ggf. weitere Deklarationen }

Im zweiten Eingabefeld:

i := 1;
j := 1;
for k := 1 to GRENZEPLUS1 do
begin
if (i <> GRENZE1PLUS1) and (j <> GRENZE2PLUS1) then
begin
if (Feld1 <= Feld2[j]) then
begin
Feld[k] := Feld1
;
i := i + 1;
end
else
begin
Feld[k] := Feld2[j];
j := j + 1;
end
end {if-Abfrage der Grenzen}
else
begin
if (i = GRENZE1PLUS1) then
begin
Feld[k] := Feld2[j];
j := j + 1
end
else
begin
Feld[k] := Feld1*;
i := i + 1
end
end {else}
end; {for Schleife}


Ihre Eingabe Testläufe Quellcode Bewertung
Ausgabe des Compilers:

GPC: Programm wurde erfolgreich compiliert.


Ihre Eingabe Compilerausgabe Quellcode Bewertung
Ergebnisse der Testläufe:
1. Testlauf:
Eingabedaten:

-182 -19 5 26 97 -210 18 19 20 86 102 117 128

erwartete Ausgabe:

-210, -182, -19, 5, 18, 19, 20, 26, 86, 97, 102, 117, 128

Ausgabe des Programms:

Ihre Einsendung ist fehlerhaft und führt zu einem Programmabsturz zur Laufzeit!
Typische Ursachen sind z.B. Dereferenzierungen von nil oder undefinierten Zeigern.
Z.B. Ein Zugriff der Art zeiger^.next^.info mit zeiger^.next = nil.
Bitte 5 Werte des ersten Feldes sortiert eingeben!
Bitte 8 Werte des zweiten Feldes sortiert eingeben!

Zufaellige Folgen werden nicht korrekt verschmolzen.

2. Testlauf:
Eingabedaten:

11 11 11 11 12 11 11 11 11 11 11 11 13

erwartete Ausgabe:

11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13

Ausgabe des Programms:

Ihre Einsendung ist fehlerhaft und führt zu einem Programmabsturz zur Laufzeit!
Typische Ursachen sind z.B. Dereferenzierungen von nil oder undefinierten Zeigern.
Z.B. Ein Zugriff der Art zeiger^.next^.info mit zeiger^.next = nil.
Bitte 5 Werte des ersten Feldes sortiert eingeben!
Bitte 8 Werte des zweiten Feldes sortiert eingeben!

Mehrfach vorkommende Elemente fuehren zu Fehlern.

3. Testlauf:
Eingabedaten:

0 0 0 0 0 0 0 0 0 0 0 0 0

erwartete Ausgabe:

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Ausgabe des Programms:

Ihre Einsendung ist fehlerhaft und führt zu einem Programmabsturz zur Laufzeit!
Typische Ursachen sind z.B. Dereferenzierungen von nil oder undefinierten Zeigern.
Z.B. Ein Zugriff der Art zeiger^.next^.info mit zeiger^.next = nil.
Bitte 5 Werte des ersten Feldes sortiert eingeben!
Bitte 8 Werte des zweiten Feldes sortiert eingeben!

Konstante Folgen werden nicht korrekt verarbeitet.

4. Testlauf:
Eingabedaten:

1 2 3 4 5 6 7 8 9 10 11 12 13

erwartete Ausgabe:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13

Ausgabe des Programms:

Ihre Einsendung ist fehlerhaft und führt zu einem Programmabsturz zur Laufzeit!
Typische Ursachen sind z.B. Dereferenzierungen von nil oder undefinierten Zeigern.
Z.B. Ein Zugriff der Art zeiger^.next^.info mit zeiger^.next = nil.
Bitte 5 Werte des ersten Feldes sortiert eingeben!
Bitte 8 Werte des zweiten Feldes sortiert eingeben!

Fehler, wenn die zweite Folge komplett groesser ist.

5. Testlauf:
Eingabedaten:

9 10 11 12 13 1 2 3 4 5 6 7 8

erwartete Ausgabe:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13

Ausgabe des Programms:

Ihre Einsendung ist fehlerhaft und führt zu einem Programmabsturz zur Laufzeit!
Typische Ursachen sind z.B. Dereferenzierungen von nil oder undefinierten Zeigern.
Z.B. Ein Zugriff der Art zeiger^.next^.info mit zeiger^.next = nil.
Bitte 5 Werte des ersten Feldes sortiert eingeben!
Bitte 8 Werte des zweiten Feldes sortiert eingeben!

Fehler, wenn die erste Folge komplett groesser ist.

6. Testlauf:
Eingabedaten:

12 12 12 12 12 2 4 5 7 8 9 10 12

erwartete Ausgabe:

2, 4, 5, 7, 8, 9, 10, 12, 12, 12, 12, 12, 12

Ausgabe des Programms:

Ihre Einsendung ist fehlerhaft und führt zu einem Programmabsturz zur Laufzeit!
Typische Ursachen sind z.B. Dereferenzierungen von nil oder undefinierten Zeigern.
Z.B. Ein Zugriff der Art zeiger^.next^.info mit zeiger^.next = nil.
Bitte 5 Werte des ersten Feldes sortiert eingeben!
Bitte 8 Werte des zweiten Feldes sortiert eingeben!

Mehrfach vorkommende Elemente fuehren zu Fehlern.


Ihre Eingabe Compilerausgabe Testläufe Bewertung
Quellcode:

program merge (input, output);
{ liest ohne Eingabeueberpruefung zwei sortierte Felder mit
integer-Zahlen ein; beide Felder werden in Feld sortiert
zusammengefuegt; das Ergebnis wird ausgegeben; ist die Ein-
gabe unsortiert, so ist das Ergebnisfeld nicht sortiert }
const
GRENZE1 = 5;
GRENZE2 = 8;
GRENZE = 13; { GRENZE1 + GRENZE2 }
GRENZE1PLUS1 = 6;
GRENZE2PLUS1 = 9;
GRENZEPLUS1 = 14;

type
tIndex1 = 1..GRENZE1;
tIndex2 = 1..GRENZE2;
tIndex = 1..GRENZE;
tIndex1Plus1 = 1..GRENZE1PLUS1;
tIndex2Plus1 = 1..GRENZE2PLUS1;
tIndexPlus1 = 1..GRENZEPLUS1;
tFeld1 = array [tIndex1] of integer;
tFeld2 = array [tIndex2] of integer;
tFeld = array [tIndex] of integer;

var
Feld1 : tFeld1;
Feld2 : tFeld2;
Feld : tFeld;
i : tIndex1Plus1;
j : tIndex2Plus1;
k : tIndexPlus1;
{ ggf. weitere Deklarationen }
begin
{ sortierte Felder einlesen }
writeln ('Bitte', GRENZE1:2, ' Werte des ersten Feldes ',
'sortiert eingeben!');
for i := 1 to GRENZE1 do
readln (Feld1*);
writeln ('Bitte', GRENZE2:2, ' Werte des zweiten Feldes ',
'sortiert eingeben!');
for j := 1 to GRENZE2 do
readln (Feld2[j]);
i := 1;
j := 1;
for k := 1 to GRENZEPLUS1 do
begin
if (i <> GRENZE1PLUS1) and (j <> GRENZE2PLUS1) then
begin
if (Feld1 <= Feld2[j]) then
begin
Feld[k] := Feld1
;
i := i + 1;
end
else
begin
Feld[k] := Feld2[j];
j := j + 1;
end
end {if-Abfrage der Grenzen}
else
begin
if (i = GRENZE1PLUS1) then
begin
Feld[k] := Feld2[j];
j := j + 1
end
else
begin
Feld[k] := Feld1*;
i := i + 1
end
end {else}
end; {for Schleife}
writeln('Das Ergebnisfeld ist:');
for k := 1 to GRENZE do
write(Feld[k]:8);
writeln
end. { merge }*******

Comments

Simon,

das gleiche Problem hatte ich auch. Hoffe meine Hilfe kommt nicht zu spät. Das Problem liegt in deiner 2. if-Anweisung. da du j aufsummierst, kann j 9 werden, aber Feld2[9 ] führt zu deinem Fehler, denn tFeld2 = array [tIndex2] of integer ist vorgeben. bin absolute Programmieranfängerin ;) aber es hilft dir vllt.

VG
Anja