Az alábbi algoritmusok a képernyő egy tetszőleges vonallal határolt részének befestésére alkalmasak. Melyik eljárás milyen sorrendben fest be egy bekerített 5x5-ös "négyzetet" a közepéről indulva, ha a szélei már be vannak festve (9 befestetlen pontja van)?
A: Festés(x,y): Pontrajz(x,y) Ha üres(x-1,y) akkor Festés(x-1,y) Ha üres(x,y-1) akkor Festés(x,y-1) Ha üres(x+1,y) akkor Festés(x+1,y) Ha üres(x,y+1) akkor Festés(x,y+1) Eljárás vége B: Festés(x,y): Pontrajz(x,y): Sorba(x,y) Ciklus amíg Sor nem üres Sorból(x,y) Ha üres(x-1,y) akkor Pontrajz(x-1,y): Sorba(x-1,y) Ha üres(x,y-1) akkor Pontrajz(x,y-1): Sorba(x,y-1) Ha üres(x+1,y) akkor Pontrajz(x+1,y): Sorba(x+1,y) Ha üres(x,y+1) akkor Pontrajz(x,y+1): Sorba(x,y+1) Eljárás vége C: Festés(x,y): Pontrajz(x,y): Verembe(x,y) Ciklus amíg Verem nem üres Veremből(x,y) Ha üres(x-1,y) akkor Pontrajz(x-1,y): Verembe(x-1,y) Ha üres(x,y-1) akkor Pontrajz(x,y-1): Verembe(x,y-1) Ha üres(x+1,y) akkor Pontrajz(x+1,y): Verembe(x+1,y) Ha üres(x,y+1) akkor Pontrajz(x,y+1): Verembe(x,y+1) Eljárás vége Sor: Olyan adatszerkezet, amelynek végére lehet új elemet betenni, illetve az elején állót lehet kivenni.
Verem: Olyan adatszerkezet, amelynek a végére lehet új elemet tenni, illetve az utoljára betettet lehet kivenni.
Minek a közelítő értékét határozza meg a következő programrészlet?
100 S=0 110 FOR I=1 TO 1000 120 X=2*RND(1)-1: Y=2*RND(1)-1 130 IF X*X+Y*Y<1 THEN S=S+1 140 NEXT I 150 PRINT S/250
Az a kijelentés, hogy "az egyszerű mondat alanyból és állítmányból áll", formális szabályokkal például így írható le:
(1) <egyszerű mondat> ::= <alany><állítmány> (2) <egyszerű mondat> ::= <állítmány><alany> Megadhatunk néhány további szabályt is:
(3) <alany> ::= <névelő><főnév> (4) <alany> ::= <jelző><főnév> (5) <alany> ::= <főnév> (6) <állítmány> ::= <jelző> (7) <állítmány> ::= <jelző> vagyok (8) <névelő> ::= a (9) <főnév> ::= Pista (10) <főnév> ::= tengeralattjáró (11) <főnév> ::= fiú (12) <jelző> ::= okos (13) <jelző> ::= sárga E szabályok alapján az alábbi mondatok közül melyek helyesek és melyek hibásak?
Válaszodban sorold föl azokat a szabályokat, amelyek alapján az egyes mondatok elfogadhatók!
A: Pista okos
B: Pista okos fiú
C: a tengeralattjáró sárga
D: sárga a tengeralattjáró
E: okos vagyok
A következő algoritmus egy kifejezés zárójelezésének helyességét ellenőrzi. A kifejezésben gömbölyű és szögletes zárójelek is lehetnek. Milyen hibajelenségek tartoznak az egyes HIBAx utasításokhoz?
Ellenőrzés(X$): DB1:=0: DB2:=0 Ciklus I=1-től hossz(X$)-ig Y$:=X$ I.betűje Ha Y$="(" akkor DB1:=DB1+1: Verembe(Y$) Ha Y$="[" akkor DB2:=DB2+1: Verembe(Y$) Ha Y$=")" akkor Ha DB1=0 akkor HIBA1 különben DB1:=DB1-1: Veremből(Z$) Ha Z$="[" akkor HIBA2 elágazás vége Ha Y$="]" akkor Ha DB2=0 akkor HIBA3 különben DB2:=DB2-1: Veremből(Z$) Ha Z$="(" akkor HIBA4 elágazás vége Ciklus vége Ha DB1>0 akkor HIBA5 Ha DB2>0 akkor HIBA6 Eljárás vége.
Számítógéppel titkosítottak egy értelmes magyar SZÓ-t. A program lefutása után közölték velünk az előállított KÓD-ot, de a használt KULCS-ot nem. A kódoláskor használt algoritmus a következő volt:
Kódolás: KÓD(0):=KULCS Ciklus I=1-től HOSSZ-ig KÓD(I):=SZÓ(I) művelet KÓD(I-1) Ciklus vége Eljárás vége. Az 1-től HOSSZ-ig indexelt SZÓ tömb a kódolandó, a 0-tól HOSSZ-ig indexelt KÓD tömb pedig a kódolt szót tartalmazza.
A KÓD (1-től HOSSZ-ig) ez lett: HIKJFG. Az alábbi igazságtáblával megadott műveletet a számítógép az operandusokon bitenként végzi el (A és B az operandusok, C az eredmény).
Művelet:
A 0 1 0 1 B 0 0 1 1 C 0 1 1 0 A használható betűk és kódjaik:
- 0000 A 0001 B 0010 C 0011 D 0100 E 0101 F 0110 G 0111 H 1000 I 1001 J 1010 K 1011 L 1100 M 1101 N 1110 O 1111 Mi volt az eredeti, értelmes magyar szó (megjegyzés: az első betű kitalálásához az algoritmus nem ad segítséget), és mi volt a KULCS? Magyarázd meg, hogyan jöttél rá a megoldásra!
A következő kártyakeverő programban a megjelölt helyen 4 különböző programrész állhat:A négy beilleszthető rész a következő:
FOR I:=1 TO 32 DO LAP[I]:=I; FOR I:=1 TO 32 DO BEGIN (* *) KIRAJZOL(J) END A program egy 32 lapból álló, megkevert pakli lapjait rajzolja ki. Az egyes kártyalapokat az 1, 2, ..., 32 számok képviselik, a KIRAJZOL eljárás egy lapot rajzol ki a képernyőre, a VÉLETLEN(SZÁM) függvény pedig egy 0-nál nagyobb és SZÁM-nál nem nagyobb véletlen egész számot állít elő. Szabályosnak akkor számít a keverés, ha minden lap egyszer és csak egyszer fordul elő, mégpedig bármelyik helyen azonos eséllyel.
(*1*) J:=VÉLETLEN(32); (*2*) REPEAT
J:=VÉLETLEN(32)
UNTIL LAP[J]>0;
LAP[J]:=0;(*3*) K:=VÉLETLEN(32);
J:=LAP[K];
LAP[K]:=LAP[I];
LAP[I]:=J;(*4*) IF I<32 THEN BEGIN
K:=VÉLETLEN(32-I)+I;
J:=LAP[K];
LAP[K]:=LAP[I];
LAP[I]:=J;
END
ELSE J:=LAP[I];A: Melyik algoritmus kever szabályosan, és melyik nem?
B: A szabálytalanul keverő változatokról írd le, hogy mit csinálnak!
C: Tudsz-e valamit mondani arról, hogy a szabályosan keverő változatok, a FOR-ciklus magjának egy-egy végrehajtása során hányszor hívják meg a VÉLETLEN() függvényt?
Adott a következő BASIC nyelvű program:
10 DIM D(300) : FOR I=1 TO 300 : D(I)=0 : NEXT I 20 INPUT "Hány szám lesz"; N 30 FOR I=1 TO N 40 INPUT J: IF J<>INT(J) OR J<1 OR J>300 THEN PRINT "HIBÁS!" : GOTO 40 50 D(J)=D(J)+1 60 NEXT I 70 FOR I=1 TO 300 80 IF D(I)>0 THEN FOR J=1 TO D(I) : PRINT I : NEXT J 90 NEXT I Mit csinál a program a beadott számokkal (egy mondatban, a lényeget)?
A FONTOSKODÓ vállalat nyilvántartásában szerepel ez a 2 táblázat:
Alkalmazottak azon név munkakör főnöke fizu oszt 544 Álmos szállító 545 7000 2 545 Éber osztvez 550 9800 2 546 Élő osztvez 550 15000 3 547 Dolgos munkás 546 11000 3 550 Főfő igazgató NULL 20000 4 551 Buzgó munkavéd 550 10500 2
osztályok kód osztnév hely 2 szállítás Pécs 3 termelés Pécs 4 igazgatás Győr Lekérdezésükre használható a SELECT utasítás:
A logikai kifejezésben állhat konstans (pl. "Pécs"), oszlopnév (pl. hely) vagy zárójelben újabb, beágyazott SELECT utasítás.
SELECT oszlopnév, osztlopnév, ...
FROM táblázatnév, táblázatnév, ...
WHERE logikai kifejezés;
A lekérdezés azokat a sorokat (két táblázat esetén sorpárokat) választja ki a táblázat(ok)ból, amelyekre a logikai kifejezés teljesül. Minden kiválasztott sorból, illetve sorpárból csak a megnevezett oszlopokba eső adatokat kapjuk eredményül. A nem beágyazott SELECT utasítás eredménye kiíródik a képernyőre. Példáulkiírja a pécsi és a győri osztályok nevét.
SELECT osztnév FROM osztályok WHERE hely="Pécs" OR hely="Győr"; A: Milyen parancs írja ki
A1: a 10000-nél többet kereső osztályvezetők nevét és fizetését?B: Mit ír ki?
A2: a Pécsett dolgozók nevét és osztályuk nevét?
SELECT név FROM alkalmazottak WHERE főnöke=(SELECT azon FROM alkalmazottak WHERE név="Főfő");