Gyakorl´o feladatok az 1. nagy z´arthelyire 2012. okt´ober 7.
1.
Egyszer˝ u, bevezet˝ o feladatok
1. K´erjen be a felhaszn´al´ot´ol egy sugarat. ´Irja ki az adott sugar´ u k¨or ker¨ ulet´et illetve ter¨ ulet´et! (Elegend˝o 3,14-dal sz´amolni, amely ak´ar egy double t´ıpus´ u v´altoz´oban is t´arolhat´o.) 2. K´erjen be a felhaszn´al´ot´ol n´egy eg´esz sz´amot (az A pontba mutat´o ~ a ´es a B pontba mutat´o b helyvektor koordin´at´ait)! ´Irja ki az AB helyvektor koordin´at´ait! 3. K´erjen be a felhaszn´al´ot´ol egy sz´amot! ´Irja ki, hogy negat´ıv”, ha a ” sz´am negat´ıv, ´es ´ırja ki, hogy pozit´ıv”, ha pozit´ıv! null´a”-t ´ırjon ki, ” ” ha a sz´am 0! 4. K´erjen be a felhaszn´al´ot´ol egy eg´esz sz´amot! ´Irja ki, hogy oszthat´o”, ” ha ez a sz´am oszthat´o n´eggyel, egy´ebk´ent ´ırja ki, hogy nem oszthat´o”. ” 5. K´erjen be a felhaszn´al´ot´ol h´arom eg´esz sz´amot (egy h´aromsz¨og oldalainak hossz´at)! D¨ontse el, hogy l´etezik-e ilyen h´aromsz¨og!1 6. ´Irja ki a p´aros sz´amokat 0-t´ol 100-ig! 7. ´Irja ki 1-t˝ol 100-ig az o¨sszes nyolccal oszthat´o sz´amot! 8. K´erje be a felhaszn´al´ot´ol egy h´onap nev´et! ´Irja ki, hogy ez a h´onap melyik ´evszakban van! 9. K´erje be a felhaszn´al´ot´ol egy h´onap nev´et! ´Irja ki, hogy h´any napos a megadott h´onap! 1
Egy h´ aromsz¨ og akkor l´etezik, ha a legnagyobb oldal hossza kisebb, mint a m´asik k´et oldal hossz´ anak ¨ osszege.
1
10. K´erje be a felhaszn´al´ot´ol a h´et egy napj´anak nev´et, ´es ´ırja ki, hogy h´etv´eg´en vagy h´et k¨ozben van-e az a nap!
2.
Feladatok ciklusokkal
1. K´erjen be a felhaszn´al´ot´ol h´arom sz´amot (egy h´aromsz¨og h´arom oldal´anak hossz´at)! Csak akkor fogadja el a bevitelt, ha a h´aromsz¨og l´etezik, egy´ebk´ent k´erje u ´jra! 2. K´erjen be a felhaszn´al´ot´ol eg´esz sz´amokat addig, am´ıg h´arom egym´as ut´an be´ırt sz´am ¨osszege 8 nem lesz! 3. K´erjen be a felhaszn´al´ot´ol egy pozit´ıv eg´esz sz´amot, majd ´ırja ki annak o¨sszes pozit´ıv oszt´oj´at! 4. K´erjen be a felhaszn´al´ot´ol egy pozit´ıv eg´esz sz´amot, majd vizsg´alja meg, hogy a be´ırt sz´am pr´ımsz´am-e2 ! (A vizsg´alat sz´eps´ege” most ” l´enyegtelen, viszont az eredm´enynek korrektnek kell lennie.) 5. K´erjen be a felhaszn´al´ot´ol egy pozit´ıv eg´esz sz´amot, ´es sz´amolja ki annak faktori´alis´at3 ! 6. K´erjen be a felhaszn´al´ot´ol egy pozit´ıv eg´esz sz´amot, ´es ´ırassa ki a Fibonacci-sz´amsorozat azon elemeit, amelyek kisebbek enn´el a sz´amn´al! (Fibonacci-sz´amsor: Az els˝o k´et elem 0 ´es 1, a tov´abbi elemeket az el˝oz˝o kett˝o ¨osszegek´ent kapjuk4 .) 7. ´Irja ki a felhaszn´al´onak 1-t˝ol 10-ig az eg´esz sz´amokat u ´gy, hogy az 1-et egyszer, a 2-t k´etszer, a 3-at h´aromszor stb. ´ırja ki! (Egym´as al´a ´ırja ki a sz´amokat, de az azonos sz´amok egy m´as mell´e sz´ok¨ozzel elv´alasztva ´ırja!) 8. K´erjen be a felhaszn´al´ot´ol eg´esz sz´amokat! Negat´ıv sz´am jelentse a bevitel v´eg´et. ´Irja vissza a felhaszn´al´onak a negat´ıv sz´am el˝ott be´ırt ¨osszes sz´amot a bevitel ford´ıtott sorrendj´eben egym´as mell´e, sz´ok¨oz¨okkel elv´alasztva! A feladathoz nem haszn´alhat t¨omb¨ot, illetve list´at vagy b´armilyen m´as gy˝ ujtem´enyt. 2
Azok a pozit´ıv eg´esz sz´ amok a pr´ımsz´amok, melyeknek pontosan kett˝o oszt´ojuk van. ´Igy minden olyan sz´ am pr´ımsz´ am, amelynek csak az egy ´es maga a sz´am az oszt´oja. Az 1 viszont nem pr´ım! 3 Az N sz´ am faktori´ alisa (jel¨ ol´ese: N !) az els˝o N darab pozit´ıv eg´esz szorzata: N! = 1 · 2 · . . . · N. 4 Fibonacci-sz´ amok: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, . . .
2
9. ´Irja ki egy tetsz˝oleges uint t´ıpus´ u sz´am bin´aris megfelel˝oj´et u ´gy, hogy bitenk´enti oper´atorokat haszn´al a feladathoz!
3.
¨ Osszetett feladatok
A feladatok megold´asa sor´an, ha sz¨ uks´eges, haszn´alja a megfelel˝o programoz´asi t´eteleket! 1. K´erjen be a felhaszn´al´ot´ol eg´esz sz´amokat, addig, am´ıg egy n´eggyel oszthat´ot nem kap! ´Irja ki az eddig beolvasott sz´amok o¨sszeg´et! 2. K´erjen be a felhaszn´al´ot´ol egy ´evsz´amot, majd egy h´onapot, majd egy napot! ´Irja ki, hogy ez a nap h´anyadik napja az ´evnek! (Vegye figyelembe a sz¨ok˝o´eveket, illetve hogy melyik h´onap h´any napos.) 3. K´erjen be a felhaszn´al´ot´ol egy eg´esz sz´amot! Adja meg azt a kett˝ohatv´anyt5 , amely a felhaszn´al´o sz´am´ahoz a legk¨ozelebb esik, de ann´al nagyobb. (Ciklussal kell megoldania, nem haszn´alhat pl. logaritmusf¨ uggv´enyt.) 4. K´erjen be a felhaszn´al´ot´ol egy eg´esz sz´amot! Adja meg a felhaszn´al´o sz´am´ahoz legk¨ozelebb es˝o kett˝ohatv´anyt! (Ciklussal kell megoldania, nem haszn´alhat pl. logaritmusf¨ uggv´enyt.) 5. K´erjen be a felhaszn´al´ot´ol 20 darab eg´esz sz´amot! ´Irja ki, mi volt az a legnagyobb ´ert´ek, amely k´et egym´as ut´an beadott sz´am o¨sszeg´eb˝ol keletkezett! 6. K´erjen be a felhaszn´al´ot´ol k´et pozit´ıv eg´esz sz´amot, ´es ´ırja ki azok legnagyobb k¨oz¨os oszt´oj´at! (Haszn´alja ehhez az euklideszi algoritmust6 .) 7. K´erje be a felhaszn´al´ot´ol a bankbet´etje o¨sszeg´et, majd a banksz´amla t´ıpus´at (bronze, silver, gold ). A k¨ ul¨onb¨oz˝o t´ıpus´ u banksz´aml´akra lek¨ot´es eset´en k¨ ul¨onb¨oz˝o havi kamatok vonatkoznak (bronze=0.45%, silver =0.6%, gold =0.75%), a kamattal keletkez˝o o¨sszeget minden h´o v´eg´en hozz´aadj´ak a lek¨ot¨ott o¨sszeghez. K´erje be a felhaszn´al´ot´ol, hogy h´any h´onapig akarja lek¨otni a p´enz´et, azt´an ´ırja ki neki, mekkora ¨osszeg lesz a sz´aml´aj´an az id˝oszak v´eg´ere! 5
Olyan eg´esz sz´ am, amely el˝ o´ all´ıthat´o 2 eg´esz kitev˝oj˝ u hatv´anyak´ent. Pl.: 1, 2, 4, 8, 16, 32, . . . 6 Ld. els˝ o el˝ oad´ as anyaga
3
8. K´erjen be a felhaszn´al´ot´ol eg´esz sz´amokat! Negat´ıv sz´am megad´asa a bevitel v´eg´et jelenti. Sz´am´ıtsa ki (ciklus seg´ıts´eg´evel; teh´at nem haszn´alhat sem stringhosszt, sem pedig logaritmust) ´es ´ırja ki azt, hogy a felhaszn´al´o ´altal be´ırt sz´amok o¨sszege h´any sz´amjegy˝ u sz´am! 9. K´erjen be a felhaszn´al´ot´ol egy n´eggyel oszthat´o sz´amot! Amennyiben nem n´eggyel oszthat´o sz´amot kapott bemenetk´ent, a bek´er´est maximum h´aromszor ism´etelnie kell. ´Irja ki a kapott sz´am azon oszt´oit, amelyek maguk nem oszthat´ok h´arommal!
4.
Bonyolultabb ¨ osszetett feladatok
1. Egy c´elhardverrel pH-m´er´eseket v´egz¨ unk k¨ ul¨onf´ele ´elelmiszereken. A pH-m´er˝o m˝ uszer 1-t˝ol 14-ig terjed˝o (eg´esz) ´ert´ekeket k´epes m´erni. Sajnos, a m˝ uszer n´eha hib´asan m´er: ha egy m´er´es nem siker¨ ul, azt 0 ´ert´ekkel jelzi. 40 f´ele ´elelmiszert kell vizsg´alni, ´ıgy kezdetben egy 40 elem˝ uu ¨res t¨omb¨ unk van. (a) ´Irjon met´odust, amely elv´egez egy pH-m´er´est. (Reprezent´alja ezt 0-14-ig terjed˝o v´eletlensz´am kisorsol´as´aval.) M´erjen pH-t mind a 40 ´elelmiszerre. Ha egy m´er´esben a m˝ uszer 0-t m´er, meg kell ism´etelnie a m´er´est, de maximum 3 alkalommal! (b) ´Irja ki a sikeres m´er´esek ´es a sikertelen m´er´esek sz´am´at. (Sikertelen, ahol mindh´arom alkalommal 0-t adott vissza a m˝ uszer.) (c) V´alogassa sz´et a savas ´es l´ ugos m´er´esek sorsz´amait egy-egy k¨ ul¨on ´ t¨ombbe. (Savas ph: < 7, l´ ugos ph: > 7, semleges ph: 7.) Irja ki az ¨osszes savas, az o¨sszes semleges, illetve o¨sszes l´ ugos k´emhat´as´ u ´elelmiszer sorsz´am´at. Amennyiben nem volt savas/l´ ugos/semleges ´elelmiszer, akkor a felsorol´as helyett ´ırja ki, hogy pl. Nem volt ” savas k´emhat´as´ u ´elelmiszer.” (d) Vizsg´alja a savas, illetve l´ ugos ´elelmiszerek t¨ombjeit a k¨ovetkez˝ok´eppen: • Mennyi volt az a´tlagos k´emhat´as? • A savas ´elelmiszerek eset´en a 2-n´el kisebb, a l´ ugosak eset´en a 9-n´el nagyobb ´ert´ekeket m´er´esi hib´ara gyan´ usnak tekintj¨ uk, mert val´osz´ın˝ utlen, hogy ´elelmiszereknek ilyen pH-juk lenne. ´Irja ki mind a savas, mind a l´ ugos t¨omb eset´en a gyan´ us m´er´esek sorsz´amait.
4
2. Spamprogramot szeretn´enk k´esz´ıteni. M´ar ´ırtunk egy programot, amely tetsz˝oleges weboldalakr´ol e-mail c´ımeket gy˝ ujt ki, ´es most szeretn´enk a begy˝ ujt¨ott c´ımeket feldolgozni. A bemenet stringek egy t¨ombje, amelyben vegyesen vannak val´os email-c´ımek ´es hib´asak. A bemenetben egy c´ım ak´ar t¨obbsz¨or is el˝ofordulhat. Val´os e-mail c´ımnek a k¨ovetkez˝o sz´am´ıt: [nem 0 hossz´ us´ag´ u karaktersorozat, amiben pont is lehet]@[nem 0 hossz´ us´ag´ u karaktersorozat, amiben pont is lehet].[nem 0 hossz´ us´ag´ u karaktersorozat] (Enn´el szigor´ ubban nem kell ellen˝orizni a c´ımeket, csak a fent le´ırt felt´etelnek kell megfelelni.) P´elda bemenet:
[email protected] [email protected] [email protected] feri@dot:com peter KUKAC dot.com
[email protected] [email protected] [email protected]
//helyes c´ım //helyes c´ım //helyes c´ım //nem helyes //nem helyes //helyes c´ım //helyes c´ım, //helyes c´ım,
e-mail c´ım e-mail c´ım de m´ar m´asodszor de m´ar m´asodszor
(a) K´esz´ıts¨ unk egy olyan t¨omb¨ot, amiben csak a val´os e-mail c´ımek szerepelnek, ´es minden c´ım csak egyszer szerepel benne, csupa kisbet˝ uvel! ´Irjuk ki a k´eperny˝ore az e-mail c´ımeket! A fenti bemenetre a kiv´alogat´as ut´an a k¨ovetkez˝o c´ımek maradnak:
[email protected],
[email protected],
[email protected],
[email protected] (b) Statisztikai okokb´ol sz¨ uks´eg¨ unk van arra, hogy tudjuk: h´any hib´as form´atum´ u e-mail c´ım volt az eredeti list´aban, ´es h´any val´os c´ımet dobtunk ki a list´ar´ol az´ert, mert m´ar legal´abb egyszer szerepelt. ´Irjuk ki ezt az inform´aci´ot is a k´eperny˝ore. (c) V´eg¨ ul a´ll´ıtsuk o¨ssze a lev´el c´ımz´es´et egy stringben a k¨ovetkez˝o m´odon: e-mail1, e-mail2, email-3, email- 4 . . . ´es ´ırjuk ki ezt a stringet a k´eperny˝ore.
5