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

Werbung
Lösungen für den Aufgabenkomplex: Struktogramme
1.
A("Eingabe 1.Zahl: ")
E(a)
A("Eingabe 2. Zahl: ")
E(b)
summe=a+b
A("Summe: ",summe)
2.
E(r)
PI=3.14
S=4*PI*r*r
V=S*r/3
A(S,V)
3.
A("Erste Waehrung:")
E(w1)
A("Zweite Waehrung:")
E(w2)
A("Wechselkurs:")
E(wk)
A("Betrag in der ersten Wahrung:")
E(b1)
b2=0.995*b1*wk
A(b1,w1,"= ", b2,w2)
1
4.
A("Eingabe 1.Zahl: ")
E(a)
A("Eingabe 2. Zahl: ")
E(b)
dif=a-b
dif<0
Ja
dif=dif * -1
Nein
A("absolute Differenz= ",dif)
5.
E (a,b)
a>b
Y
max=a
N
max=b
A (max)
E (a, b, c)
a>b
Y
N
a>c
Y
max=a
b>c
N
max=c
Y
max=b
N
max=c
A (max)
6.
E (p,q)
d=p*p/4-q
d>=0
Y
N
d>0
Y
X1= - p/2+Wurzel(d) X= - p/2
X2= - p/2-Wurzel(d)
A("reelle
Lösungen:",X1,X2)
N
A("Doppel-Wurzel
X1=X2", X)
XR= - p/2
XI=Wurzel(-d)
A("2 Komplexe
Lösungen:",
XR,"+-",XI,"i")
2
7.a) Datenmodell: Alle Werte werden der Reihe nach in eine einfache Variable x eingegeben
- Lösung mit Abweisschleife:
A("Anzahl der Zahlen: ")
E(n)
sum = 0
i=1
i<=n
A(i, "-te Zahl eingeben: ")
E(x)
sum = sum + x
i=i+1
A("Summe der ",n," Zahlen= ",sum)
- Lösung mit Nichtabweisschleife:
A("Anzahl der Zahlen: ")
E(n)
sum = 0
i=1
A(i, "-te Zahl eingeben: ")
E(x)
sum = sum + x
i = i+1
i<=n
A("Summe der ", n, " Zahlen = ", sum)
- Lösung mit Zählschleife:
A("Anzahl der Zahlen: ")
E(n)
sum = 0
A("Eingabe der Zahlen")
i=1,n,1
A(i, "-te Zahl eingeben: ")
E(x)
sum = sum+x
A("Summe der ",n," Zahlen= ",sum)
3
7.b) Anderes Datenmodell: Zahlen werden in Feld (=Vektor) eingelesen.
A("Anzahl der Zahlen: ")
E(n)
i = 1, n, 1
A(i, "-te Zahl eingeben: ")
E( x[i] )
sum = 0
i = 1, n, 1
sum = sum + x[i]
A("Summe der ", n, " Zahlen = ", sum)
8.
A("Gib Anzahl der Werte ein (Anzahl >1!): ")
E(n)
n<2
E(x)
max=x
i=2,n,1
E(x)
x>max
Ja
max=x
Nein
A("Groesster Wert: ",max)
9.
E (x)
x<=0
Y
y=1/(1+x*x)
N
x<=5
Y
y=1-(x*x/10)
N
x<=30
Y
N
y=15/4*x
A("f (",x, ")=", y)
4
y=1/8
10.
A("
x
x²")
x=1
x<=10
y=x*x
A(x,y)
x=x+1
11.
A("Geben Sie Anfangs-, Endwert und Schrittweite ein")
E(xa,xe,xs)
A("x
y")
x=xa
x<=xe
2*x-1 != 0
Y
N
y= (3*x+4) / (2*x-1)
A (x,"Funktion ist nicht
bestimmt")
A (x,y)
x=x+xs
12.
E (a, operator, b)
ok=1
operator
'+'
'-'
'*','.'
ja
erg=a+b
erg=a-b
sonst
'/',':'
b= =0
nein
ok=0
erg=a*b
erg=a/b
A("Fehler:
Divion
durch Null")
ok= =1
ja
A ("Ergebnis=", erg)
5
ok=0
A("Unzulässiges
Operationszeichen")
nein
13.
a)
A("Eingabe n und x:: ")
E(n, x)
xhn=1
nfak=1
i=1,n,1
xhn=xhn*x
nfak=nfak*i
g=xhn/nfak
A("Funktionswert: ",g)
A("Eingabe n und x : ")
E(n,x)
g=x
i=2,n,1
g=g*x/i
A("Funktionswert : ",g)
6
b)
fak(n)
n==0
ja
nein
fak=1
fak=n*
fak(n-1)
xhochn(x,n)
n==0
ja
xhochn=1
nein
xhochn=x*
xhochn(x,n-1)
A(„ n und x eingeben“)
E( n,x)
nfak=
fak(n)
xhn=
xhochn(x,n)
g= xhn/nfak
A(„Funktionswert:“, g)
7
14.
E(x,epsilon)
s=0; g=1
i=1
|g|>=epsilon
s=s+g
g=g*x/i
i=i+1
A ("exp(", x, ")=", s)
15.
E(x,epsilon)
s=0; g=x
i=2
|g|>=epsilon
s=s+g
g= -g*x*(i-1)/i
i=i+1
A ("ln(1+", x, ")=", s)
16.
E(n)
i=1,n,1
E(x[i])
max=x[1]
sum=x[1]
i=2,n,1
x[i]>max
Ja
Nein
max=x[i]
sum=sum+x[i]
A("Größter Wert: ",max, "Summe: ",sum)
8
17.
- Formeln:
-- Mittelwert: in der Statistik als N bezeichnet; in der Informatik besser z.B. mw
mw =
1 n
å x[i]
n i =1
-- Streuung (oder auch: Varianz): in der Statistik als s2 bezeichnet; in der Informatik besser z.B. var
var =
n
2
2
1
1
=
(
− n * mw * mw)
(
x
[
i
]
mw
)
(
x
[
i
])
−
å
å
n −1
n − 1 1=1
Bemerkung: Die zweite Formel für var ist rechentechnisch güstiger. Bei der algorithmischen Berechnung von mw
wird man zuerst die enthaltene Summe berechnen, dieses „Zwischenresultat“ auch in mw speichern und schließlich
durch n dividieren. Entsprechend geht man bei der Berechnung von var vor: zunächst wird die enthaltene Summe
berechnet, dieses „Zwischenresultat“ auch in var gespeichert und anschließend n*mw*mw abgezogen und alles
durch (n-1) dividiert.
- Datenmodell: x[1], x[2], ..., x[n]
mw, var, min, max
n, i
reeller Vektor („Feld“, „Array“); n bekannt
reelle Zahlen
ganze Zahlen („Integer“)
- Struktogramm:
A("Eingabe der Anzahl der Messwerte (>=1): ")
E(n)
i = 1, n, 1
A(i, "-ten reellen Wert eingeben: ")
E(x[i])
min = x[1]
max = x[1]
i = 2, n, 1
x[i] > max
Y
N
x[i] < min
max = x[i]
Y
min = x[i]
mw = 0
var = 0
i = 1, n, 1
mw = mw + x[i]
var = var + ( x[i] * x[i] )
mw = mw / n
var = ( var - n * mw * mw ) / ( n - 1 )
A("Minimum = ", min, "Maximum = ", max)
A("Mittelwert = ", mw, "Varianz = ", var)
9
N
%
18.
A("Reelles Endeerkennungszeichen eingeben: ")
E(ende)
n=0
n = n+1
A(n, "-te reelle Zahl eingeben: ")
E( x[n] )
x[n] != ende
n = n -1
j= 1, n-1, 1
min = x [ j ]
k=j
i = j+1,n,1
x [ i ] < min
Y
N
min = x [ i ]
%
k=i
x[ k ] = x [ j ]
x [ j ] = min
A("Sortierte Folge:")
i = 1, n, 1
A( x [ i ] )
10
19.
Bubblesort I
E(n)
i=1,n,1
E (x[i])
ok=0
ok==0
ok=1
i=1,n-1,1
x[i]>x[i+1]
Ja
h=x[i]
Nein
x[i]=x[i+1]
x[i+1]=h
ok=0
i=1,n,1
A (x[i])
Bubblesort II
j=n-1,1,-1
i=1,j,1
x[i]>x[i+1]
Ja
h=x[i]
Nein
x[i]=x[i+1]
x[i+1]=h
11
20.
A ("Geben Sie ein:")
A ("1 - Transponieren einer Matrix")
A ("2 - Addition zweier Matrizen")
A ("3 - Multiplikation zweier Matrizen")
E (ant)
eingabe (zA,spA,A)
ja
ant= =2 oder ant= =3
nein
eingabe (zB,spB,B)
ok=1
ant
1
2
ja
trans
(zA,spA,A,
zC,spC,C)
sonst
3
zA= =zB und
spA= =spB
add (zA,
spA,A,B,
zC,spC,C)
nein
A("Berechnung
nicht möglich")
spA= =zB
ja
mult (zA,
spA,spB,A,
B,zC,spC,C)
ok=0
i=1,zC,1
A (i, " Zeile")
j=1,spC,1
A (c [i,j])
12
A ("Unzulässiges Zeichen")
A("Berechnung
nicht möglich")
ok=0
ok = = 1
ja
nein
ok=0
nein
eingabe (zA, spA, A)
E (zA)
E (spA)
i= 1, zA, 1
j= 1, spA, 1
E(a[i,j])
trans (zA, spA, A, zC, spC, C)
zC = s pA
spC =zA
i = 1, zC, 1
j = 1, spC, 1
c [ i,j ] = a [ j,i ]
add (zA, spA, A, B, zC, spC, C)
zC= zA
spC=spA
i= 1, zC, 1
j= 1, spC, 1
c [i,j]= a [i,j] + b [i,j]
13
mult (zA, spA, spB, A, B, zC, spC, C)
zC= zA
spC=spB
i= 1, zC, 1
j= 1, spC, 1
c[i,j]=0
k=1,spA,1
c[i,j]=c[i,j]+a[i,k]*b[k,j]
21.
A("Geben Sie die Information für einen Artikel ein")
E(Art.Kategorie)
E( Art.Bezeichnung)
E(Art.Preis)
E(Art.Anzahl)
Art.Kategorie==1 or Art.Kategorie==2
Ja
Nein
A(" Der Wert für die Kategorie
Ja
Nein ist unzulässig")
kf=Art.Preis*Art.Anzahl kf=Art.Preis*Art.Anzahl
*1.07
*1.16
Artl.Kategorie==1
A("Kaufpreis= ",kf)
14
22.
A("Wieviele Kunden ? ")
E(anz)
i=1,anz,1
E(best[i].datum.tag, best[i].datum.monat,
best[i].datum.jahr)
E(best[i].artnr)
E(best[i].stueckzahl)
E(best[i].preis)
gespreis=0
i=1,anz,1
gespreis=gespreis+best[i].stueckzahl*best[i].preis
A("Gesamtpreis für alle",anz,"Kunden= ",gespreis)
15
23.
a)
A("Eingabe Integer-Zahl: ")
E(ele.zahl)
ele.pz=''
ele.zahl>=51
ele.zahl=ele.zahl-51
ele.pz=ele.pz+'T'
ele.zahl>=29
ele.zahl=ele.zahl-29
ele.pz=ele.pz+'L'
ele.zahl>=11
ele.zahl=ele.zahl-11
ele.pz=ele.pz+'E'
ele.zahl>=3
ele.zahl=ele.zahl-3
ele.pz=ele.pz+'N'
ele.zahl>=1
ele.zahl=ele.zahl-1
ele.pz=ele.pz+'K'
A(ele.zahl, "entspricht der pascalinischen Ziffer ",ele.pz)
16
b)
i=1,10,1
A("Eingabe", i,". Integer-Zahl: ")
E(f[i].ele.zahl)
f[i].ele.pz=''
f[i].ele.zahl>=51
f[i].ele.zahl=f[i].ele.zahl-51
f[i].ele.pz=f[i].ele.pz+'T'
f[i].ele.zahl>=29
f[i].ele.zahl=f[i].ele.zahl-29
f[i].ele.pz=f[i].ele.pz+'L'
f[i].ele.zahl>=11
f[i].ele.zahl=f[i].ele.zahl-11
f[i].ele.pz=f[i].ele.pz+'E'
f[i].ele.zahl>=3
f[i].ele.zahl=f[i].ele.zahl-3
f[i].ele.pz=f[i].ele.pz+'N'
f[i].ele.zahl>=1
f[i].ele.zahl=f[i].ele.zahl-1
f[i].ele.pz=f[i].ele.pz+'K'
A(f[i].ele.zahl, "entspricht der pascalinischen Ziffer ",f[i].ele.pz)
17
24.
a)
gewinn=0
i=1,1000,1
w1= Zufallszahl zw. 1 und 6
w2= Zufallszahl zw. 1 und 6
w3= Zufallszahl zw. 1 und 6
w=w1+w2+w3
w==15
Y
gewinn=
gewinn+2
N
w==16
Y
gewinn=
gewinn+5
N
w==17
Y
N
gewinn=
gewinn+10
w==18
Y
gewinn=
gewinn+100
gewinn=gewinn-1
A(gewinn)
18
N
b)
i=1,1000,1
w1= Zufallszahl zw. 1 und 6
w2= Zufallszahl zw. 1 und 6
w3= Zufallszahl zw. 1 und 6
w[i]=w1+w2+w3
A(w[i])
gewinn=0
i=1,1000,1
w[i]==15
Y
gewinn=
gewinn+2
N
w[i]==16
Y
gewinn=
gewinn+5
N
w[i]==17
Y
N
gewinn=
gewinn+10
w[i]==18
Y
gewinn=
gewinn+100
gewinn=gewinn-1
A(gewinn)
c)
i=3,18,1
inhalt[i]=0
i=1,1000,1
w1= Zufallszahl zw. 1 und 6
w2= Zufallszahl zw. 1 und 6
w3= Zufallszahl zw. 1 und 6
w=w1+w2+w3
inhalt[w]=inhalt[w]+1
i=3,18,1
A(i,inhalt[i])
gewinn=inhalt[15]*2+inhalt[16]*5+inhalt[17]*10+inhalt[18]*100-1000
A(gewinn)
19
N
25.
E(kleinst, groest)
zahl=Zufallszahl zw. kleinst und groest
n=0
v=kleinst-1
v!=zahl
n=n+1
A(n,"te Versuch:")
E(v)
v>zahl
Y
N
A("Ihre Zahl ist zu gross!")
v<zahl
Y
A("Ihre Zahl ist zu klein!") A("Erraten beim",n,"ten
Versuch!!")
N
26)
r
a
91
65
26
13
26
13
0
- Ausgabe:
b
65
26
13
0
ggT = 13
- Beim zugrunde liegenden Algorithmus handelt es sich um den aus der Schule bekannten Euklidischen Algorithmus zur Bestimmung des größten gemeinsamen Teilers (ggT) zweier ganzer
Zahlen. (Als größter gemeinsamer Teiler wurde im Trockentest 13 ermittelt.)
-Wenn der kleinere Wert zuerst eingelesen wird, wird die Schleife nur einmal mehr durchlaufen.
Beim ersten Durchlauf werden dabei die Werte von a und b vertauscht. Danach geht es wie oben
weiter.
20
Herunterladen