Pr¨ufung — Informatik D-MATH/D-PHYS
26. 01. 2009 09:00–11:00
! #"
$&%')(+*-,
.
Kandidat/in:
/
$0!1 233232332323323233234322234334322234322233432223432223433432223432223433432223432223433222343222343343222343222343343
567
$071 233232332323323233234322234334322234322233432223432223433432223432223433432223432223433222343222343343222343222343343
8
9;:
/
31 233232332323323233234322234334322234322233432223432223433432223432223433432223432223433222343222343343222343222343343
<>=@?BADCEFCGH)CIKJML9IKCJON'CPRQ6NSLTCP@UT=V?PVJMW2LX!Y[Z UTUJO=V?\YJOC6]^P)_GW3G[NH`G'NLTCP9PVCH)Ga>_ZbPVCNdceCY'JONH)G'NH)CNfZbA'aOCH)CN
g)h N'NLTCiG'N'YjYkZbUVUfJO=V?lYJOC0G[NSLTCN'UTLTC?'CN'Y'CNmZbaMaMH)CIKCJON'CNncRCIKCP g G'NH)CNjH)CaOCUVCNoG'N'Yqp)CP@ULVZ N'Y'CN
?[ZbADCsr
tu[ v
.Fw
*xxs133232332323323233234322234334322234322234334322234323433432223432223433432223432223433432223432223343222343222343343
Allgemeine Bemerkungen und Hinweise:
y
t{z^ |}s 8 *xo*xl5~3xv)
*x7%'s*2
v s*x2s7}vkb
s - `s*
z *xvs*3*3z
.
%k
zsv@
w
s
v
y
B
.
%+vs*3q}
z vs*3s
$0*3`*3vsv
$}
z^sb
x3v 8 *xf
w
s ~}D
.Fw
*3 s*3#
w
*xbkb 8 S7z^ss*x+:
!.Fw
*x7R` s9S$0sxs 8 *x*x vRz*3~v}7 u}v*
.Fw
v|^ v9 8 |R
`
%s*
.w
%+s |*3 `` s9
+
Dz
"
*x3}v$0*3 -1
W¨orterb¨ucher sind erlaubt; sonst keine
{ v(' v
.Fw 0 w
slslv}7*x $vv
.w
xvvj%9sq
.w
x*
.Fw
&Dx
w z e
u}
z*xv
w
.w
vsv\s*33*x\5~bv*x s*xsv\¡vv(' v
.w
sv\s
vv*xD
8 s*
.Fw
s 8 *x&2*x¡vv('bv
.Fw
&%¢
D
.Fw
8
.Fw
s*2zs 8 *x
#vb|
-
¢*
.w
R*x\u}
zskz-
vv v{*2b£¢|x*xs*3#('b
7b
+ 8 *x}sl*3¤}
z q*xqzs3*x z*x \¥{ *
w
s}xvs9¦ss[*xbs 8 *x&v*
.Fw
`s*3xv
§s*xK}
z7
z^ `s*xx 8 *xKv*
.Fw¨-w
© *3s*x9
ª /
.w
{z
~ 7}vss*3\('
vvs 8 *xz*3sl¥
$«j
vvs 8 *3¤¢D
*x
¨-w
s$
x*x s9*3 uz
zdzsv@*x$0$v*x9
Diese m¨ussen alle mit Ihrem Namen beschriftet sein. Die Pr¨ufungsbl¨atter sind dabei mit abzugeben!
¬
B*xK}&*3v`zsv
s9D`s 8 *x\('
y)
s*
.Fw z
s6D%¢s *xsxs9
® ¯ ° ± ² ³
P
Aufgabe 1. (5 / 10 / 5 Punkte)
s
.Fw
K }x s vv
s ^s s V
~sv|b%¢*3('*
.Fw
` /
*xus+:
s
8
*xl*xjs[v|
.Fw
ss [V`7s *3 %k
s$ }
z^skz
8
*x
$qvv %'s*xfs7
zs9
/ s*x
-*> ¢ 7
w
sxv!Dzx*
.Fw
ssvv7s 7| *x s $0*30s*3 $ }
w
xv@:
v
!! ¥s*xv $
v .Fw
*xs+: 8 |
.w
7)*x 8 *x*xf §5~7xsvu%'s+:
sisx [
w
z e'v
w
B
!w
3*
.Fw
*xv[*x 7
$0$ $vv [
$0*2
svfsDv w
s %
9R bvd*x *3sv svv7: 8 |
!.Fw
Dz vb u`bs9
e e
*x*> 6*3 ¥s*xvb$
v .Fw
*xs+:T7
$0$ u*3 *x$0$0 ©^s*xxqD ©^s*x3
v@:
s w
6v{*3z`%'s*xj3*
.Fw
%' *3Ds*x\©^s*xxKs Dzbv|*xs9
e e
-*x*3*>
xxv~s*x ¥{s*3v $
v .Fw
*3 D:7
$0$ %'s*xs s}
w
If... then...
sk
w
3D*xvsv{*
.Fw
{$x*
.Fw
¢
vv*xsvsv{ x*
.w
x
e e
*3( 6*30x7*3
w
$v¦$vvD s{%'7 %¢B6*3
z{*3&sx*
.Fw
#©^s*2
v
%'7 %kf¥sv3
{3*xs} 9
e e
( 6*3 x7*3
w
$v*xv
s*3%'D%¢bd7
$0$0*xbv|
!.Fw
B zs
-7u K %
*
.Fw
w
`s*3 sv*x *x
8 |
.w
Dz
s` e
e e
z 8 s*3s
a
b
`s*9|v*3*3('
sf©
!w
x e¢*3\*x
Register(1)
Register(2)
s*3 xsvsn` e#K z
8
*x
96
v0
v0}xs7
$0$ z^
.Fw #
v
w
s*xvv
.Fw
%¢ *xv*x s 8 *3B*xiuz
w
*37%'s*36('
a
b
v#*xis©^s*xxs d ªvs z *3e
1. Read into Register(1) 2. Read into Register(2) 3. Register(3) ← 0 4. Register(4) ← 1
5. If Register(2)
Register(1), then go to line 9 6. Output ← Register(3)
7. Output ← Register(1) 8. End
9. Register(1) ← Register(1) - Register(2) 10. Register(3) ← Register(3) + Register(4) 11. Go to line 5
.
s *3Ks
vvs99
vv
a
b
.Fw0
vs*xq%s9 % qzs*s$!:7
$0$
vRs*x
}
z^z s*3 v
.Fw
`b*x s v7zxs$
xbs9esv
.Fw s*3z^s
8 *xK v{7zx $ %k *3v*x 8 *xKs 9+ sv x*3s
Aufgabe 2. (6 / 6 / 6 Punkte)
s 8 *x*3f}xssvD .%'f('
"u
vu
z 8 *x
z^s*
xx6© *3v
.Fw v
.w
*26s*xssx
& -s*3v
.w
x*3svvx*
.w
k|sD%'k(' v*xsd
5
*
z3s
v` sb¦s}xs 8 *x
zs*`*xD
.Fw
vvs*
*2(+*3
n)
ss
}svsxs7&¥{s*
w
s}xlf
!w
xs 8 *3¤*x&¥s*
w
s}xbDz*xs 8
.Fw
*3¤xs* ¦B*x
5
*
z3
y
*3v('$ ¢|bool
w sfalse
s*bk(' v*x0('bool
sint
*2true
s1
false
s0
$0 s2
3 + 3 / 2 + 3.0 / 2
z
y * 7.0 + (y - 1) * 3.0
.
! ! y || (y = true)
Aufgabe 3. (30 Punkte)
¨ $&|x $0sk*3 s 8 *x*3}x DD%k*x9*xsvsjvx-7z s*x¤©!w
n
v }s*3 }xssq*x$0w
3s v
$0$0ssv K*xve©^$ *xv|*xs
*xv
105 = 3
5
7
s*3v.Fw i© !w -`s*x3
5
7
s*3 . %'sxv&Dx('o*3$0!w
xs
vsx3[9
s 8 s*3B*3v`s$ s*xv|*x
21 = 3
7
%'s*xBv.Fw K© !w -k`s*3 *x5
}
w
3D¢6v`v|*x 3#
zs*%'s*x¥{x37[u*xx`s*3
%k7#('7%'$0$'
v w *xvv
24 = 2 3
3
*xv
.Fw
s*x
} *x
b}xs0©
!w
-
¨
vz^sv fv*3
Dx*
.Fw
3xK*3$0
!w
xs
*x$0
!w
3|7sss
}s*x
}x 9B*x
1
vs* .w }s*x }xs9// PRE: n > 0
// POST: Der Rueckgabewert ist true g.d.w. die Primfaktorzerlegung // von n nur aus aufeinanderfolgenden Primzahlen besteht.
bool aufeinanderfolgend(unsigned int n);
8 *x%
('
v
w
s9
vv 8 *x }xss*3$ vuv
.w
*x$&|xs$0 k*xb
w
:
zs9e
v w
s*xvvs 8 *3%s *3DD%¢*3
prim
*xq DD%k*xaufeinanderfolgend
(' ` s9
// PRE: n > 0
// POST: Der Rueckgabewert ist true g.d.w. n eine Primzahl ist.
bool prim(unsigned int n);
Aufgabe 4 (8 / 8 Punkte)
¨ $©v $0$0s w 0$0*2 8 . vKjB vvs w z^s u*3K*38
.Fw
vvs3d7
public
private
%'sssx [ sv .w
*3zs 8 *x
xxs$0 *x sn56 ` v `
.
%n*x v 8
.Fw
vvs27b
w
s
8
*x*3v@zsv
¢s*x9)
$ sv¦v*x[('x'vs*xf%
9
v 8 .w
vvs3`7
private
szskDss9z ¨
x3v@*x s 8 *x0sl5~b`svb`
. % v
b¦*xs$ 8 *30s*x&%'D%¢ 8
.
:
kb{B
vvs*3*x
bzs9+*x `$0*xsvsv *xsv`b 8
.w
vvs37 #('7:
%'$0$¢ %+ s
8
*x7 vu7('7%'$0$s
Aufgabe 5 (10 / 10 Punkte)
!.Fw
8 *x*3}3s{D%k*x
f
& zs¤v*x
97
v~v*xz^
.Fw
`s
e - b
q5
w RD%¢ vxx 8 *x
sj*x
b[0]
b[1]
3sb[4]
!.Fw
s$ uz
ebDD%¢*x
w
*xv
.Fw
s*3zs9
// PRE: [b, e) ist ein gueltiger Bereich void f(unsigned int* b, unsigned int* e) {
int n = e - b;
for (int i = 0; i < n; ++i) { b[i] = 1;
for (int j = i - 1; j > 0; --j) b[j] += b[j - 1];
} }
z zs 8 *3*x
/
.w
zs*x D\*xD%¢*x
f
99 v w s*3vv$ !.Fw s 8 *x*xuz
w
*x7%'s*2('d {$0sk s*x
xxs$0 *x¦vv
!*x6
vR56
w
2s
DD%¢*x ('xxv
*3
.w
%¢b*xv*xbK -*x\uvv
K$vv`*
.Fw
z u*xsvs ` sb
Aufgabe 6 (16 Punkte)
*3 w zs *3 5~7xsv ss*x7# vvsv Bss*x$ 3 !w xs*3z'*xu%'s*3us3*
.Fw
B*xe
vsxx
w
z^s9k7u¢*x©
w
0.1
ktu$0 %' w -sn v@s x*
.
%l(+*3sxxs*
.w
Dz
v .Fw
*x3
z s1 s*xe
!w
w
s*x x*
.w
Bss*x$
x
v xxD[ `s*xv 8 *xB*xsvKuvv
7Dkb{3*xs} 8 *xs$0*xsv# *x |
v*2:
zxsvBu$0 kD7$
9`xxsu*3Bv
v ^s
¨
k (
x
(0, 1)
z^sv .Fw ) D%'s}xssvss*x e1sbzsv *Rs*3
k
:v@sxx*3*3e
!w
BD7$
b = X k
i = 1
b i 2 − i , b 1 , b 2 , . . . , b k {0, 1}.
*3zsvKs*x
`
v vvb
xv`
:v@sxx*3dBss*x$
3
!w
§sv
.w
*3 zs `bs %
e
v
w
s*xvv@