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.
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