Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich weiß das ist nicht so das passende Forum, aber vieleicht kann mir trotzdem jemand auf die Schnelle helfen, der sich in Pascal auskennt.

Hab da 2 Aufgaben durch die ich nicht durchsteige. :(

Ich bin mal so frech und poste Sie.

Bin für jede Hilfe mehr als Dankbar, da mal wieder mächtig unter Zeitdruck

mit den Aufgaben

Snowman

1. Aufgabe:

In einem PASCAL-Programm soll eine 5×5 Matrix transponiert werden. Das heisst, die Zeilen und Spalten der Matrix sind zu vertauschen, wie im folgenden Beispiel gezeigt ist:

Wir geben folgende Typdefinition und Variablendeklaration an:

const

GROESSE = 5;

type

tIndex = 1..GROESSE;

tMatrix = array [tIndex,tIndex] of integer;

var

A : tMatrix;

hilf,

i,

j : integer;

Das Lesen der Matrixwerte in A wird folgendermaßen durchgeführt:

{ Lesen der Matrixwerte in A: }

for i := 1 to GROESSE do

for j := 1 to GROESSE do

readln (A[i,j]);

Welche der fünf folgenden Programmstücke führen das Transponieren der Matrix A korrekt aus?

A

begin

for i := 1 to GROESSE-1 do

for j := i+1 to GROESSE do

begin

hilf := A[i,j];

A[i,j] := A[j,i];

A[j,i] := hilf

end

end;

B

begin

for i := 0 to GROESSE-1 do

for j := 2 to GROESSE+1 do

if (i+j) <= GROESSE then

begin

hilf := A[i+1,j+i];

A[i+1,j+i] := A[j+i,i+1];

A[j+i,i+1] := hilf

end

end;

C

begin

for i := 1 to GROESSE-1 do

for j := GROESSE downto i+1 do

begin

hilf :=A[i,j];

A[j,i] := A[i,j];

A[i,j] := hilf

end

end;

D

begin

for i := 1 to GROESSE-1 do

begin

j := i+1;

while j <= GROESSE do

begin

hilf := A[i,j];

A[i,j] := A[j,i];

A[j,i] := hilf;

j := j+2

end;

end;

for i := 1 to GROESSE-1 do

begin

j := i+2;

while j <= GROESSE do

begin

hilf := A[i,j];

A[i,j] := A[j,i];

A[j,i] := hilf;

j := j+2

end

end

end;

E

begin

for i := GROESSE-1 downto 1 do

begin

j := i+1;

while j <= GROESSE do

begin

hilf := A[i,j];

A[i,j] := A[j,i];

A[j,i] := hilf;

j := j+2

end;

j := i+2;

while j <= GROESSE do

begin

hilf := A[i,j];

A[i,j] := A[j,i];

A[j,i] := hilf;

j := j+2

end

end

end;

2. Aufgabe :

Die Funktion max findet in einem Feld ParFeld von integer-Werten das Maximum der Feldelemente ParFeld[von], ..., ParFeld[bis].Wir geben folgende Deklaration an:

function max (

ParFeld: tFeld;

von, bis: tIndex): integer;

{ bestimmt das Maximum im Teilfeld von ParFeld[von]

bis ParFeld[bis] }

var

Wert : integer;

i : tIndex;

begin

Wert := ParFeld[von];

for i := von + 1 to bis do

if ParFeld > Wert then

Wert := ParFeld;

max := Wert

end; { max }

Für welche der folgenden Programmstücke verlassen die Werte der aktuellen Parameter bei dem Aufruf bzw. den Aufrufen der Funktion max nicht den durch die formalen Parameter definierten gültigen Wertebereich, egal welche integer-Werte im Feld vorkommen? Gehen Sie dabei von folgenden Konstanten-, Typ- und Variablenvereinbarungen aus:

const

GRENZE = 10;

type

tIndex = 1..GRENZE;

tFeld = array [tIndex] of integer;

var

Feld : tFeld;

w,

w1,

w2 : integer;

A

w := max (Feld, Feld[1], Feld[GRENZE]);

B

w := max (Feld, (GRENZE-1) div 2,

(GRENZE-1) div 2);

C

if max (Feld, 1, (GRENZE-1) div 2) >

max (Feld, (GRENZE+1) div 2, GRENZE)

then

w := max (Feld, 1, (GRENZE-1) div 2)

else

w := max (Feld, (GRENZE+1) div 2, GRENZE);

D

w := max (Feld, 1, GRENZE);

if w <= GRENZE then

write (max (Feld, w, w));

E

w1 := max (Feld, 1, GRENZE);

w2 := max (Feld, 4, GRENZE-1);

if (0 < w2) and (w1 <= GRENZE) then

begin

w := max (Feld, 2, GRENZE);

w := max (Feld, 1, w)

end;

Das ist nicht nur nicht so ganz das richtige Forum, sondern das komplett falsche. Das hier sit weder ein Pascal noch ein Hausaufgaben Forum ;)

Also entweder sagst du wo genau deine Probleme bei den Aufgaben liegen und wie deine Ansätze bisher aussehen oder du sagst wieviel dufür bezahlst damit einer deine Aufgaben erledigt.

Das ist nicht nur nicht so ganz das richtige Forum, sondern das komplett falsche. Das hier sit weder ein Pascal noch ein Hausaufgaben Forum ;)

Also entweder sagst du wo genau deine Probleme bei den Aufgaben liegen und wie deine Ansätze bisher aussehen oder du sagst wieviel dufür bezahlst damit einer deine Aufgaben erledigt.

Sorry hab den ganzen Nachmittag an etlichen Aufgabe gesessen, nur diese beiden krieg ich einfach nicht hin. Jetzt Panik morgen ist Abgabetermin.

Hab mich darauf verlassen das mein Studienmaterial was ich bearbeitet habe

(fernuni) ausreicht - wurde eines besseren belehrt. Wahrscheinlich typischer

Fehler eines Erst Semestlers.

Bitte nochmals um Hilfe

Snowman

Zur Aufgabe 1)

Am besten betrachtest Du eine Matrix der Art

0 + + + +

- 0 + + +

- - 0 + +

- - - 0 +

- - - - 0

und gehst anhand von ihr jede Funktion durch. Es muss dabei natürlich folgendes herauskommen:

0 - - - -

+ 0 - - -

+ + 0 - -

+ + + 0 -

+ + + + 0

Auf die Schnelle (ich kann mich durchaus auch mal irren, bitte überprüfe es):

Variante A) Tauscht zuerst die Eintrage [2...5], dann [3...5], dann [4..5] usw. Damit wird die Matrix also erfolgreich transponiert.

B) Geht auch.

C) Vertauschungsteil falsch, sonst würde es gehen.

D) Geht im Schachbrettmuster vor, braucht damit zwei Durchläufe, funktionier aber.

E) Geht zeilenweise von unten nach oben vor, verwendet zwei Durchläufe für jede Zeile, wobei jeweils nur jede 2. Spalte vertauscht wird. Funktioniert.

Zum Überprüfen der Varianten: Am besten bereitest Du Dir ein Pascal-Programm vor, bei dem Du in jede Zelle der Matrix eine andere Zahl schreibst und die die Ergebnisse ausgeben lässt.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.