23.12.2013 Aufrufe

Lösungen für den Aufgabenkomplex: Struktogramme 1. 2. 3.

Lösungen für den Aufgabenkomplex: Struktogramme 1. 2. 3.

Lösungen für den Aufgabenkomplex: Struktogramme 1. 2. 3.

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Lösungen für <strong>den</strong> <strong>Aufgabenkomplex</strong>: <strong>Struktogramme</strong><br />

<strong>1.</strong><br />

A("Eingabe <strong>1.</strong>Zahl: ")<br />

E(a)<br />

A("Eingabe <strong>2.</strong> Zahl: ")<br />

E(b)<br />

summe=a+b<br />

A("Summe: ",summe)<br />

<strong>2.</strong><br />

E(r)<br />

PI=<strong>3.</strong>14<br />

S=4*PI*r*r<br />

V=S*r/3<br />

A(S,V)<br />

<strong>3.</strong><br />

A("Erste Waehrung:")<br />

E(w1)<br />

A("Zweite Waehrung:")<br />

E(w2)<br />

A("Wechselkurs:")<br />

E(wk)<br />

A("Betrag in der ersten Wahrung:")<br />

E(b1)<br />

b2=0.995*b1*wk<br />

A(b1,w1,"= ", b2,w2)<br />

1


4.<br />

A("Eingabe <strong>1.</strong>Zahl: ")<br />

E(a)<br />

A("Eingabe <strong>2.</strong> Zahl: ")<br />

E(b)<br />

dif=a-b<br />

dif b<br />

max=b<br />

N<br />

A (max)<br />

E (a, b, c)<br />

Y<br />

Y<br />

max=a<br />

a > c<br />

max=c<br />

a > b<br />

N Y<br />

max=b<br />

b > c<br />

max=c<br />

N<br />

N<br />

A (max)<br />

6.<br />

E (p,q)<br />

d=p*p/4-q<br />

d>=0<br />

Y<br />

d > 0<br />

Y N<br />

X1= - p/2+Wurzel(d) X= - p/2<br />

X2= - p/2-Wurzel(d)<br />

A("reelle<br />

Lösungen:",X1,X2)<br />

A("Doppel-Wurzel<br />

X1=X2", X)<br />

XR= - p/2<br />

XI=Wurzel(-d)<br />

A("2 Komplexe<br />

Lösungen:",<br />

XR,"+-",XI,"i")<br />

N<br />

2


7.a) Datenmodell: Alle Werte wer<strong>den</strong> der Reihe nach in eine einfache Variable x eingegeben<br />

- Lösung mit Abweisschleife:<br />

A("Anzahl der Zahlen: ")<br />

E(n)<br />

sum = 0<br />

i = 1<br />

i


7.b) Anderes Datenmodell: Zahlen wer<strong>den</strong> in Feld (=Vektor) eingelesen.<br />

A("Anzahl der Zahlen: ")<br />

E(n)<br />

i = 1, n, 1<br />

A(i, "-te Zahl eingeben: ")<br />

E( x[i] )<br />

sum = 0<br />

i = 1, n, 1<br />

sum = sum + x[i]<br />

A("Summe der ", n, " Zahlen = ", sum)<br />

8.<br />

A("Gib Anzahl der Werte ein (Anzahl >1!): ")<br />

E(n)<br />

n < 2<br />

E(x)<br />

max=x<br />

i=2,n,1<br />

E(x)<br />

Ja<br />

max=x<br />

x>max<br />

Nein<br />

A("Groesster Wert: ",max)<br />

9.<br />

E (x)<br />

Y<br />

y=1/(1+x*x)<br />

x


10.<br />

A(" x x²")<br />

x=1<br />

x


1<strong>3.</strong><br />

a)<br />

A("Eingabe n und x:: ")<br />

E(n, x)<br />

xhn=1<br />

nfak=1<br />

i=1,n,1<br />

xhn=xhn*x<br />

nfak=nfak*i<br />

g=xhn/nfak<br />

A("Funktionswert: ",g)<br />

A("Eingabe n und x : ")<br />

E(n,x)<br />

g=x<br />

i=2,n,1<br />

g=g*x/i<br />

A("Funktionswert : ",g)<br />

6


)<br />

fak(n)<br />

ja<br />

n==0<br />

nein<br />

fak=1 fak=n* fak(n-1)<br />

xhochn(x,n)<br />

ja<br />

n==0<br />

nein<br />

xhochn=1<br />

xhochn=x* xhochn(x,n-1)<br />

A(„ n und x eingeben“)<br />

E( n,x)<br />

nfak=<br />

fak(n)<br />

xhn=<br />

xhochn(x,n)<br />

g= xhn/nfak<br />

A(„Funktionswert:“, g)<br />

7


14.<br />

E(x,epsilon)<br />

s=0; g=1<br />

i=1<br />

|g|>=epsilon<br />

s=s+g<br />

g=g*x/i<br />

i=i+1<br />

A ("exp(", x, ")=", s)<br />

15.<br />

E(x,epsilon)<br />

s=0; g=x<br />

i=2<br />

|g|>=epsilon<br />

s=s+g<br />

g= -g*x*(i-1)/i<br />

i=i+1<br />

A ("ln(1+", x, ")=", s)<br />

16.<br />

E(n)<br />

i=1,n,1<br />

E(x[i])<br />

max=x[1]<br />

sum=x[1]<br />

i=2,n,1<br />

Ja<br />

max=x[i]<br />

x[i]>max<br />

sum=sum+x[i]<br />

Nein<br />

A("Größter Wert: ",max, "Summe: ",sum)<br />

8


17.<br />

- Formeln:<br />

-- Mittelwert: in der Statistik als N bezeichnet; in der Informatik besser z.B. mw<br />

1<br />

mw =<br />

n<br />

-- Streuung (oder auch: Varianz): in der Statistik als s 2 bezeichnet; in der Informatik besser z.B. var<br />

1<br />

2<br />

n<br />

1<br />

2<br />

var = ( x[<br />

i]<br />

−mw)<br />

= ( (<br />

x[<br />

i])<br />

− n * mw*<br />

mw)<br />

n −1<br />

n −1<br />

Bemerkung: Die zweite Formel für var ist rechentechnisch güstiger. Bei der algorithmischen Berechnung von mw<br />

wird man zuerst die enthaltene Summe berechnen, dieses „Zwischenresultat“ auch in mw speichern und schließlich<br />

durch n dividieren. Entsprechend geht man bei der Berechnung von var vor: zunächst wird die enthaltene Summe<br />

berechnet, dieses „Zwischenresultat“ auch in var gespeichert und anschließend n*mw*mw abgezogen und alles<br />

durch (n-1) dividiert.<br />

n<br />

<br />

i=<br />

1<br />

x[<br />

i]<br />

- Datenmodell: x[1], x[2], ..., x[n] reeller Vektor („Feld“, „Array“); n bekannt<br />

mw, var, min, max<br />

reelle Zahlen<br />

n, i ganze Zahlen („Integer“)<br />

- Struktogramm:<br />

1=<br />

1<br />

A("Eingabe der Anzahl der Messwerte (>=1): ")<br />

E(n)<br />

i = 1, n, 1<br />

A(i, "-ten reellen Wert eingeben: ")<br />

E(x[i])<br />

min = x[1]<br />

max = x[1]<br />

i = 2, n, 1<br />

x[i] > max<br />

Y<br />

max = x[i]<br />

x[i] < min<br />

Y<br />

min = x[i] %<br />

mw = 0<br />

var = 0<br />

i = 1, n, 1<br />

mw = mw + x[i]<br />

var = var + ( x[i] * x[i] )<br />

mw = mw / n<br />

var = ( var - n * mw * mw ) / ( n - 1 )<br />

A("Minimum = ", min, "Maximum = ", max)<br />

A("Mittelwert = ", mw, "Varianz = ", var)<br />

N<br />

N<br />

9


18.<br />

A("Reelles Endeerkennungszeichen eingeben: ")<br />

E(ende)<br />

n = 0<br />

n = n+1<br />

A(n, "-te reelle Zahl eingeben: ")<br />

E( x[n] )<br />

x[n] != ende<br />

n = n -1<br />

j= 1, n-1, 1<br />

min = x [ j ]<br />

k = j<br />

i = j+1,n,1<br />

Y<br />

min = x [ i ]<br />

k = i<br />

x[ k ] = x [ j ]<br />

x [ j ] = min<br />

A("Sortierte Folge:")<br />

i = 1, n, 1<br />

A( x [ i ] )<br />

x [ i ] < min<br />

%<br />

N<br />

10


19.<br />

Bubblesort I<br />

E(n)<br />

i=1,n,1<br />

ok=0<br />

ok==0<br />

E (x[i])<br />

ok=1<br />

i=1,n-1,1<br />

Ja<br />

h=x[i]<br />

x[i]=x[i+1]<br />

x[i+1]=h<br />

ok=0<br />

i=1,n,1<br />

A (x[i])<br />

x[i]>x[i+1]<br />

Nein<br />

Bubblesort II<br />

j=n-1,1,-1<br />

i=1,j,1<br />

Ja<br />

h=x[i]<br />

x[i]=x[i+1]<br />

x[i+1]=h<br />

x[i]>x[i+1]<br />

Nein<br />

11


20.<br />

A("Geben Sie ein:")<br />

A("1-Transponieren einer Matrix")<br />

A ("2 - Addition zweier Matrizen")<br />

A("3-Multiplikation zweier Matrizen")<br />

E(ant)<br />

eingabe(zA,spA,A)<br />

ja ant= =2 oder ant= =3<br />

nein<br />

eingabe (zB,spB,B)<br />

ok=1<br />

1 2 3<br />

zA= =zB und<br />

ja<br />

spA= =spB<br />

spA= =zB<br />

nein ja nein<br />

trans<br />

(zA,spA,A,<br />

zC,spC,C)<br />

add (zA,<br />

spA,A,B,<br />

zC,spC,C)<br />

A("Berechnung<br />

nicht möglich")<br />

ok=0<br />

mult (zA,<br />

spA,spB,A,<br />

B,zC,spC,C)<br />

ant<br />

A("Berechnung<br />

nicht möglich")<br />

ok=0<br />

ok=0<br />

sonst<br />

A("Unzulässiges<br />

Zeichen")<br />

ja<br />

ok==1<br />

nein<br />

i=1,zC,1<br />

A(i,"Zeile")<br />

j=1,spC,1<br />

A(c[i,j])<br />

12


eingabe (zA, spA, A)<br />

E (zA)<br />

E (spA)<br />

i= 1, zA, 1<br />

j= 1, spA, 1<br />

E ( a [ i , j ] )<br />

trans (zA, spA, A, zC, spC, C)<br />

zC = spA<br />

spC =zA<br />

i= 1, zC, 1<br />

j= 1, spC, 1<br />

c [ i,j ] = a [ j,i ]<br />

add (zA, spA, A, B, zC, spC, C)<br />

zC= zA<br />

spC=spA<br />

i= 1, zC, 1<br />

j= 1, spC, 1<br />

c [i,j]= a [i,j] + b [i,j]<br />

13


mult (zA, spA, spB, A, B, zC, spC, C)<br />

zC= zA<br />

spC=spB<br />

i= 1, zC, 1<br />

j= 1, spC, 1<br />

c[i,j]=0<br />

k=1,spA,1<br />

c[i,j]=c[i,j]+a[i,k]*b[k,j]<br />

2<strong>1.</strong><br />

A("Geben Sie die Information für einen Artikel ein")<br />

E(Art.Kategorie)<br />

E( Art.Bezeichnung)<br />

E(Art.Preis)<br />

E(Art.Anzahl)<br />

Ja<br />

Ja<br />

kf=Art.Preis*Art.Anzahl<br />

*<strong>1.</strong>07<br />

A("Kaufpreis= ",kf)<br />

Artl.Kategorie==1<br />

Art.Kategorie==1 or Art.Kategorie==2<br />

Nein<br />

kf=Art.Preis*Art.Anzahl<br />

*<strong>1.</strong>16<br />

Nein<br />

A(" Der Wert für die Kategorie<br />

ist unzulässig")<br />

14


2<strong>2.</strong><br />

A("Wieviele Kun<strong>den</strong> ? ")<br />

E(anz)<br />

i=1,anz,1<br />

E(best[i].datum.tag, best[i].datum.monat,<br />

best[i].datum.jahr)<br />

E(best[i].artnr)<br />

E(best[i].stueckzahl)<br />

E(best[i].preis)<br />

gespreis=0<br />

i=1,anz,1<br />

gespreis=gespreis+best[i].stueckzahl*best[i].preis<br />

A("Gesamtpreis für alle",anz,"Kun<strong>den</strong>= ",gespreis)<br />

15


2<strong>3.</strong><br />

a)<br />

A("Eingabe Integer-Zahl: ")<br />

E(ele.zahl)<br />

ele.pz=''<br />

ele.zahl>=51<br />

ele.zahl=ele.zahl-51<br />

ele.pz=ele.pz+'T'<br />

ele.zahl>=29<br />

ele.zahl=ele.zahl-29<br />

ele.pz=ele.pz+'L'<br />

ele.zahl>=11<br />

ele.zahl=ele.zahl-11<br />

ele.pz=ele.pz+'E'<br />

ele.zahl>=3<br />

ele.zahl=ele.zahl-3<br />

ele.pz=ele.pz+'N'<br />

ele.zahl>=1<br />

ele.zahl=ele.zahl-1<br />

ele.pz=ele.pz+'K'<br />

A(ele.zahl, "entspricht der pascalinischen Ziffer ",ele.pz)<br />

16


)<br />

i=1,10,1<br />

A("Eingabe", i,". Integer-Zahl: ")<br />

E(f[i].ele.zahl)<br />

f[i].ele.pz=''<br />

f[i].ele.zahl>=51<br />

f[i].ele.zahl=f[i].ele.zahl-51<br />

f[i].ele.pz=f[i].ele.pz+'T'<br />

f[i].ele.zahl>=29<br />

f[i].ele.zahl=f[i].ele.zahl-29<br />

f[i].ele.pz=f[i].ele.pz+'L'<br />

f[i].ele.zahl>=11<br />

f[i].ele.zahl=f[i].ele.zahl-11<br />

f[i].ele.pz=f[i].ele.pz+'E'<br />

f[i].ele.zahl>=3<br />

f[i].ele.zahl=f[i].ele.zahl-3<br />

f[i].ele.pz=f[i].ele.pz+'N'<br />

f[i].ele.zahl>=1<br />

f[i].ele.zahl=f[i].ele.zahl-1<br />

f[i].ele.pz=f[i].ele.pz+'K'<br />

A(f[i].ele.zahl, "entspricht der pascalinischen Ziffer ",f[i].ele.pz)<br />

17


24.<br />

a)<br />

gewinn=0<br />

i=1,1000,1<br />

w1= Zufallszahl zw. 1 und 6<br />

w2= Zufallszahl zw. 1 und 6<br />

w3= Zufallszahl zw. 1 und 6<br />

w=w1+w2+w3<br />

Y<br />

gewinn=<br />

gewinn+2<br />

Y<br />

gewinn=<br />

gewinn+5<br />

w==15<br />

w==16<br />

Y<br />

gewinn=<br />

gewinn+10<br />

w==17<br />

w==18<br />

Y<br />

gewinn=<br />

gewinn+100<br />

N<br />

N<br />

N<br />

N<br />

gewinn=gewinn-1<br />

A(gewinn)<br />

18


)<br />

i=1,1000,1<br />

w1= Zufallszahl zw. 1 und 6<br />

w2= Zufallszahl zw. 1 und 6<br />

w3= Zufallszahl zw. 1 und 6<br />

w[i]=w1+w2+w3<br />

A(w[i])<br />

gewinn=0<br />

i=1,1000,1<br />

Y<br />

gewinn=<br />

gewinn+2<br />

Y<br />

gewinn=<br />

gewinn+5<br />

w[i]==15<br />

w[i]==16<br />

Y<br />

gewinn=<br />

gewinn+10<br />

w[i]==17<br />

w[i]==18<br />

Y<br />

gewinn=<br />

gewinn+100<br />

N<br />

N<br />

N<br />

N<br />

gewinn=gewinn-1<br />

A(gewinn)<br />

c)<br />

i=3,18,1<br />

inhalt[i]=0<br />

i=1,1000,1<br />

w1= Zufallszahl zw. 1 und 6<br />

w2= Zufallszahl zw. 1 und 6<br />

w3= Zufallszahl zw. 1 und 6<br />

w=w1+w2+w3<br />

inhalt[w]=inhalt[w]+1<br />

i=3,18,1<br />

A(i,inhalt[i])<br />

gewinn=inhalt[15]*2+inhalt[16]*5+inhalt[17]*10+inhalt[18]*100-1000<br />

A(gewinn)<br />

19


25.<br />

E(kleinst, groest)<br />

zahl=Zufallszahl zw. kleinst und groest<br />

n=0<br />

v=kleinst-1<br />

v!=zahl<br />

n=n+1<br />

A(n,"te Versuch:")<br />

E(v)<br />

Y<br />

A("Ihre Zahl ist zu gross!")<br />

v>zahl<br />

v

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!