View
268
Download
0
Category
Preview:
Citation preview
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
1/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 1/28
Ugrs a tartalomhoz(#sdt_slot_Layout_Page_Main)
Keress
(http://www.tankonyvtar.hu/hu)
Belps (http://www.tankonyvtar.hu/Shibboleth.sso/Login?target=http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html)
Informci (/hu/informacio)
Kapcsolat(/hu/kapcsolat)
English(/en/tartalom/tamop425/0046_ csharp_feladatgyujtemeny/ch06.html)
(#)
A-(#)A(#)A+(#)
Kezdoldal(/hu)
Hrek(/hu/hirek/tankonyvtar/cikkek)
Bngszs (/hu/bongeszes)
Foldal(/hu)> TAMOP 4.2.5 Plyzat knyvei > Knyvek(/hu/bongeszes/konyvek)> Alkalmazott tudomnyok (/hu/bongeszes/konyvek/alkalmazott_tudomanyok)>
Szmtstechnika. Informatika.Adatbzisok (/hu/bongeszes/konyvek/alkalmazott_tudomanyok/szamitastechnika)
(/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch05.html)
(/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch07.html)
C# feladatgyjtemny
Kovcs Emd, Radvnyi Tibor, Kirly Roland, Hernyk Zoltn
KempelenFarkas Hallgati Informcis Kzpont
Tweet(https://twitter.com/share)
Begyazs
6. fejezet - Vektorokkal s azok kezelsvel kapcsolatos feladatok (szerz: Kirly Roland)
Tartalom
A fejezet forrskdjai(ch06.html#id514147)
6.1. feladat (Sorozatok szint: 1). rjunk olyan programot, amely bekri egy sorozat els ngy elemt, majd meghatrozza, hogy
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch05.htmlhttp://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch05.htmlhttp://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch05.htmlhttp://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch05.htmlhttp://www.tankonyvtar.hu/huhttp://www.tankonyvtar.hu/hu/bongeszes/konyvekhttp://www.tankonyvtar.hu/hu/bongeszes/konyvekhttp://www.tankonyvtar.hu/hu/bongeszes/konyvek/alkalmazott_tudomanyokhttp://www.tankonyvtar.hu/hu/hirek/tankonyvtar/cikkekhttp://www.tankonyvtar.hu/hu/kapcsolathttp://www.tankonyvtar.hu/Shibboleth.sso/Login?target=http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.htmlhttps://twitter.com/sharehttp://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch07.htmlhttp://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch05.htmlhttp://www.tankonyvtar.hu/hu/bongeszes/konyvek/alkalmazott_tudomanyok/szamitastechnikahttp://www.tankonyvtar.hu/hu/bongeszes/konyvek/alkalmazott_tudomanyokhttp://www.tankonyvtar.hu/hu/bongeszes/konyvekhttp://www.tankonyvtar.hu/huhttp://www.tankonyvtar.hu/hu/bongeszeshttp://www.tankonyvtar.hu/hu/hirek/tankonyvtar/cikkekhttp://www.tankonyvtar.hu/huhttp://www.tankonyvtar.hu/en/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.htmlhttp://www.tankonyvtar.hu/hu/kapcsolathttp://www.tankonyvtar.hu/hu/informaciohttp://www.tankonyvtar.hu/Shibboleth.sso/Login?target=http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.htmlhttp://www.tankonyvtar.hu/hu7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
2/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 2/28
ez a 4 elem szmtani sorozatot alkot-e (az elemek klnbsge lland)
mrtani sorozatot alkot-e (az elemek hnyadosa lland)
Magyarzat:A program elksztshez, amelyet a 6.1 (ch06.html#x1-10001r1) forrsszvegben lthatunk hasznljunk ciklust. Ha mg nem hasznltunk listt, vagy tmbt, a
ngy elemet troljuk ngy vltozban, ellenkez esetben definiljunk egy 4 elem tmbt, melybe az elemeket eltrolhatjuk.
A sorozat bejrsa sorn minden elemre megllapthat, hogy milyen az utna kvetkez elemhez a viszonya. lland-e a klnbsgk t[i]-t[i+1], vagy a - b. Ugyanez
igaz a hnyadosra is.
Informci: A szmtani sorozat (vagy aritmetikai sorozat egy elemi matematikai fogalom, mely a matematika szmos rszterletn elfordul.
Egy legalbb hrom szmbl ll akr vges, akr vgtelen sorozatot akkor neveznk szmtani sorozatnak, ha a szomszdos elemek klnbsge - differencija - (a
sorozatra jellemz) lland. forrs: Wikipedia.
6.2. feladat (Binris szmjegyek kezelse szint: 1). Ksztsnk konzolos alkalmazst a 6.2 (ch06.html#x1-10002r2)pldaprogram mintjra, amely beolvas egy binris szmot,
majd kirja, hogy hny 1-es szmjegy szerepel a szmsorozatban!
Magyarzat: Ha nem beolvasni, hanem generlni szeretnnk a szmjegyeket, akkor egy tmb, vagy egy lista lesz a legalkalmasabb a trolsra. Az egyszerbb megolds
viszont az, ha bekrjk a szmjegyeket a billentyzetrl. Az egyesek megszmllsa ezek utn gyerekjtk. Csak definilnunk kell egy vltozt, amely segtsgvel egy
ciklusban egyesvel szmllhatjuk az egyeseket.
Vletlen szmot az albbi formulval generlhatunk:
Random R = new Random();
int adat = R.next(...);
Amennyiben a bonyolultabb megoldst vlasztjuk, figyeljnk a kvetkezkre: Mivel a vektor megfelelje a C# nyelvben a tmb (tpus[db]). A feladat megoldshoz is
hasznlhatunk egy int tpus elemeket tartalmaz tmbt, ami a kvetkezkppen hozhat ltre:
int n = 10; //Tetszleges egsz szm,
int[] t = new int[n];
A tmb feltltst egy ciklussal oldhatjuk meg gy, hogy a ciklusmag minden lefutsakor ltrehozunk egy vletlen szmot, melyet hozzrendelnk a tmb aktulis index
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
3/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 3/28
elemhez.
Informci:
A tmb elemeinek ltrehozsa egy ciklusban trtnik.
Ha az elemeket ugyanabban a ciklusban dolgoznnk fel, amelyben ltrehoztuk ket, akkor sajnlatos mdon egy alapvet programtervezsi hibt kvetnnk el. Ne tegyk!
6.3. feladat (Egyedi vletlen szmok szint: 2). Fejlesszk tovbb a Vletlen szmok feladatban bemutatott programot gy, hogy a tmb elemszmt a felhasznl adja meg,
valamint gyeljnk arra is, hogy a tmbbe csak olyan szmok kerlhessenek, melyeket elzleg mg nem generltuk le a vletlen szm genertor segtsgvel.
Magyarzat:A megolds tbb ciklus hasznlatt ignyli, melyeket egymsba kell gyazunk. a megoldst a 6.3 (ch06.html#x1-10003r3)pldaprogramban lthatjuk.
Az ellenrzs lpsei:
lltsuk el az aktulis v letlen szmot.
Egy ciklus segtsgvel jrjuk vgig az eddig generlt szmokat, s vizsgljuk meg, hogy az ppen ellltott rtk szerepel-e kztk.
Ha nem, akkor hozzkezdhetnk a kvetkez szm ellltshoz
Ha igen, akkor dobjuk el a generlt szmot, s ksztsnk jat
6.4. feladat (Lott szmok szint: 1). Ksztsnk konzol programot, mely ellltja egy lott sorsols szmait!
Magyarzat:A szmokat els megkzeltsben nem kellene trolnunk, de termszetesen a Lott szmok nem ismtldhetnek.
Magyarzat: Ezt a felttelt a programunk csak gy tudja teljesteni, ha sszehasonltja az ppen generlt szmot a korbban ellltott szmok mindegyikvel. Amennyiben tallegyezst, gy a szmot jra generlja. Ehhez a megoldshoz mindenkppen valamilyen vektor tpus adatszerkezetet kell hasznlnunk.
A megoldshoz, amit a 6.4 (ch06.html#x1-10004r4) forrsszvegben lthatunk, mindezek mellett vletlen szm genertort kell hasznlni, ami 1-90 kz es szmokat llt el.
6.5. feladat (Konzolos menpontok kezelse szint: 2). Ksztsnk egy egyszer parancssori programot, mely nhny menponttal rendelkezik. A menpontok kirsra
hasznljuk a Console kir utastsait.
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
4/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 4/28
A men a kvetkezkpp nzzen ki:
1 Els menpont
2 msodik menpont
3 Harmadik menpont
4 Negyedik menpont
5 Kilps
Magyarzat: A program kzvetlenl az elindtsa utn rja ki a menket a kpernyre, ahogy ezt a 6.5 (ch06.html#x1-10005r5) forrsszvegben lthatjuk, majd olvasson be egykaraktert. Amennyiben a beolvasott szm az 1-4 intervallumba esik, gy a kpernyre rdjon ki, hogy melyik menpont kerlt kivlasztsra.
Ezt a mveletet addig kell ismtelni, mg a felhasznl az 5-s szmot nem adja meg. Ez esetben a program fejezze be a futst.
Az elksz ts sorn alkalmazzuk a switchvezrl szerkezetet, melyet egy htul tesztel ciklusban helyeznk el. A ciklusnak mindaddig kell futnia, amg a beolvasott rtk nem
egyenl 5-tel.
6.6. feladat (tvlts kettes szmrendszerbe szint: 2). Ksztsnk programot, mely tetszleges tzes szmrendszer beli egsz szmot tvlt kettes szmrendszerbe. Az
tvltand szmot a billentyzetrl olvassuk be, majd az tvlts eredmnyt ugyanide rjuk ki (lsd: 6.6 (ch06.html#x1-10006r6)
).
Magyarzat:Az tvlts a legknnyebben gy vgezhetjk el, ha az tvltand szmot oszt juk a szmrendszer alapszmval, vagyis a kettvel. Az oszts maradka a kettes
szmrendszerbeli szm lesz, az egszrszt pedig tovbb kell osztanunk mindaddig, amg el nem rjk a nullt.
A megoldshoz hasznljunk c iklust. A cik lus magjban el kell vgeznnk a maradkos, majd az egsz osztst s el kell trolnunk a maradkokat egy lis tban, vagy egyb
tetszleges adattpusban.
A cik lus lefutsa, s a szmtsok elvgzse sorn megkapjuk a kettes szmrendszer beli szmot.
6.7. feladat (tvlts tetszleges szmrendszerekbe szint: 3). Ksztsnk olyan programot, amely tzes szmrendszerbeli egsz szmokat tvlt tetszleges, a felhasznl
ltal megadott szmrendszerbe. Az tvltand szmot, valamint a szmrendszer alapszmt a billentyzetrl olvassuk be, majd az tvlts eredmnyt ugyanide rjuk ki.
Figyeljnk arra is, hogy 9 fltt a szmokat az ABC nagy betivel helyettestjk.
Magyarzat:A megoldshoz az tvlts kettes szmrendszerbe cm feladathoz hasonlan hasznljunk ciklust. A cik lus magjban el kell vgeznnk a maradkos osztst,
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
5/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 5/28
majd az egsz osztst a szmrendszer alapszmval, ezutn el kell trolnunk a maradkokat egy listban, vagy egyb tetszleges adattpusban.
A cik lus lefutsa utn megkapjuk a kettes szmrendszerbeli szmjegyeket. Figyelem! gyeljnk arra is, hogy a szmrendszer alapszmnl ne lehessen megadni nullt, vagy
negatv szmot. A nullval val oszts egybknt is komoly hibt eredmnyez.
6.8. feladat (Azonos elemek szint: 1). Ksztsnk a 6.8 (ch06.html#x1-10008r8)pldaprogram alapj n konzolos a lkalmazst, amelyben ltrehozunk egy n-elem tmbt, melybe
vletlen szmokat helyeznk el. llaptsuk meg, hogy a generlt szmok egyformk-e, vagy klnbzek.
Magyarzat:A program megoldshoz hasznljuk valamely ismert ciklust, ami bejrja az elzleg generlt listt. Ahhoz, hogy eldntsk, minden szm egyforma-e, elg a
bejrs elejn egy vltoz rtkt egyre lltani, s addig nem vltoztatni, az rtkn, amg ugyanolyan szmokat tallunk, mint az els elem.
Ha a ciklus vgre sem mdosult a vltoz rtke, akkor a sorozat teljesen homogn, ellenkez esetben nem az.
A tesztelshez ksztsnk egy olyan tmbt is , amely egyforma szmokat tartalmaz, mert ellenkez esetben a vletlen szm genertorral nagyon sokig kellene vrnunk az
idelis esetre.
Informci: A vletlen szmok az informatikban nem valdi vletlen szmok, mivel brmely mechanikus eljrs, amit a sz mtgpeken alkalmazunk, egy id utn ismtld
sorozatokat fog ellltani. Ezt a tpus vletlen szmot pszeudovletlen szmnak nevezzk.
Amennyiben valdi vletlen szmokra van szksgnk, vehetnk rzajt a NASA-tl, vagy a termszethez kell fordulnunk segtsgrt.
6.9. feladat (Statisztika listkrl szint: 1). Ksztsnk a 6.9 (ch06.html#x1-10009r9)program alapjn olyan alkalmazst, amely bekr a felhasznltl egy szmot, majd ltrehoz
egy ilyen hosszsg tmbt. A tmb elemeit bekri a billentyzetrl, majd megllaptja, hogy hnyfle rtket kapott!
Magyarzat:A kapott elemeket sorban meg kell vizsglni, s ha valamelyik elembl tallunk egyet, a hozz rendelt szmllt meg kell nvelnnk egyel.
Legalbb annyi szmllra van szksgnk, amennyi fle elem elfordulhat, vagyis a tmb elemszmmal azonos szmra, praktikusan egy azonos hosszsg tmbre.
Informci:
A statisztika a valsg szmszer informciinak megfigyelsre, sszegzsre, elemzsre s modellezsre irnyul gyakorlati tevkenysg s tudomny.
A statisztika alapja sok olyan eljrsnak, amely titkos szvegek, vagy kdok feltrst tesz i lehetv. Kmek szzai dolgoznak azon, hogy nagyhatalmak egymsnak, vagy
sajtjaiknak kldtt zeneteit karakter statisz tikk segtsgvel feltrjk, s az informcit a hasznukra fordtsk.
A karakter statiszt ikkon alapul kdfejts azon a felismersen alapszik, hogy minden beszlt nyelvben meg lehet hatrozni a leggyakoribb karaktereket. Amennyiben
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
6/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 6/28
rendelkezsre ll ez az informci, a karakter statisztika segt abban, hogy megllaptsuk melyik a titkos szvegben leggyakrabban elfordul jel. Ez, s nmi fejtrs segt a
kdfejtknek kitallni a titkot...
Egyes nzetek szerint a statisztikai adatok 5%-os eltrssel jl mrnek, de ezt a statisztika mdszereivel szmtottk ki...
6.10. feladat (Karakterek szmllsa szint: 1). rjunk a 6.10 (ch06.html#x1-10010r10)pldaprogram alapjn olyan programot, mely a felhasznltl beolvas egy tetszleges
string tpus adatot, valamint egy karaktert, majd kirja a kpernyre, hogy a megadott karakter hnyszor szerepel a szvegben!
Magyarzat:A beolvasott szveget egy c iklus segtsgvel bejrhatjuk. A ciklus minden lefutsakor meg kell vizsglnunk, hogy az aktulis karakter megegyezik-e a keresett
karakterrel. Amennyiben igen, egy vltoz rtkt meg kell nvelnnk egyel.
Informci: Ez a feladat egy programozsi ttelen alapszik, melynek a neve: megszmlls ttele. A megszmllshoz hasonl ttelek mg az eldnts, kivlaszts s a
kivlogats ttelei, melyek implementcijt szintn ciklussal oldjuk meg.
6.11. feladat (Szveges adatok vizsglata szint: 2). Ksztsnk konzolos alkalmazst, amely eldnti egy tetszleges szvegrl, hogy az palindrom tpus-e, vagy sem. A
szveget a billentyzetrl olvassuk be mindaddig, amg a felhasznl folytatni szeretn a vizsgldst. A 6.11(ch06.html#x1-10011r11)pldaprogramban megtekinthetjk az egyik
lehetsges megoldst.
Magyarzat:A palindrom szvegek ellrl s visszafel olvasva is ugyanazt jelentik.
Rmai fvezr - rzev fia, Mr. (Babits Mihly), vagy az ismert: Indul a Grg Aludni.
Ahhoz, hogy egy szvegrl eldntsk, hogy megfelel-e ennek a kvetelmnynek, meg kell llaptanunk, hogy az i-edik betje minden esetn megegyezik-e az
-edik betvel. Az iaz aktulis szvegindex, mg az na szveg hossza. A vizsglatot elg a szveg kzepig elvgezni ( ).
Informci: Az 1800-as vek vgn Breyer Gyula magyar sakk-nagymester rt egy szerelmes levelet, ami oda-vissza olvasva ugyanaz:
Ndasi K. Ott Kis-Adn, mjusi szerdn e levelem rm. A mott: Szivedig ime visz irs, kellemest r! Szinlel sziv rm kacsintl! De messzi visz szemed... Az lmok (
csal szirnek ezek, csodaadk) el les. Irok ime messze tvol. Barnm! Lm e szivindulat n. S im e sziv, e vr ezeket ereszti ki: Szivem! Ime leveled elttem, eszemet
letev! Kicsike! Szava remegne ott? - leli karom t, desem! Lereszket vasziv rm. Szivem imd s ldozni kr rveden - rgi gyerekistenem. Les im. Eltte visz szived is.
g. rte reszketek, szeret rg s ide visz. Szivet - tlem is elmenet - siker egy igrne, de vrr kinzod (lsd m: ime visz mr, visz a vtek!) szerelmesedt. mor (aki leltt
engem, e ravasz, e kicsi!) Kveteltem eszemet tled!
E levelem ime viszi... Kit szeretek ezer ve, viszem is n t, aludni viszem. lmn rablv tesz szeme. Mikor is e llekodaado csk ezeken ri, szl: A cskom lza de messzi
visz!... Szemed ltni csak mr!... Visz lelni!... Szorts!... Emellek Sri szivemig. Ide visz Ott. Ma mr m e levelen dresz is uj m. Ndasi K. Ott Kis-Adn.
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
7/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 7/28
Forrs: Wikipedia.
6.12. feladat (Szveg tkrzse szint: 1). Ksztsnk alkalmazst, mely egy tetszleges szveget tkrz a kzps elemre. Amennyiben a szveg pros szm karaktert
tartalmaz, annak kpzeletbeli kzepre vgezze el a tkrzst.
Magyarzat:A szveg tkrzse ciklussal oldhat meg, ahogy azt a 6.12 (ch06.html#x1-10012r12)programban is lthatjuk.
A cik lust addig kell futtatni, mg el nem rjk a szveg kzept egszrsz(szveghossza osztva 2). A szveg vgig vgezve a tkrzst sajnos visszakapjuk az eredeti
szveget. A ciklusmagban minden lpsben cserljk meg az i-edik elemet az -edik elemmel. Az na szveg hossza, az ia ciklus vltozja, vagyis az aktulis
elem-index a szvegben.
Vigyzat! A C# nyelvben a string tpus nem engedi meg, hogy az elemeit egyesvel fellrjuk.
Amennyiben mindenkppen szeretnnk hasznlni a stringosztly t, konkatenlni kell az egyes elemeket egy j vltozba a opertor segtsgvel az albbi mdon:
ujszoveg = ujszoveg + szoveg[szoveg. Lengthi];
Egy msik megoldshoz hasznlhatunk StringBuilder-t, vagy a karaktereket a tkrzs eltt helyezzk el egy tmbben, esetleg egy listban, melynek az elemeit tetszs szerint
meg lehet vltoztatni.
6.13. feladat (Szveg elemzse szint: 2). Ksztsnk konzol programot, mely kiszmtja egy kifejezs rtkt. A program a kifejezst szveges formban kapja meg a
billentyzetrl.
A megadott kifejez sre az eg yszersg k edvrt a k vetkez megktsek vonatkoznak:
Nem tartalmazhat szkzt, vagy egyb white-space karaktereket.
Nem lehet benne csak egy opertor s kt operandus.
Az operan dusok kiz rlag e gsz szmok lehetnek.
A 6.13 (ch06.html#x1-10013r13)pldaprogramban ltottakat felhasznlhatjuk a megoldshoz.
Magyarzat:A beolvasott szveget bontsuk szt a stringa tpus megfelel metdusainak hasznlatval. Az S.IndexOf(A)azAS-ben elfoglalt helyt, vagyis az indext adja
vissza egsz szmknt. Segtsgvel megkereshetjk az opertor pozcijt a szvegben. Ezutn nincs ms dolgunk, minthogy az opertort megelz, s az azt kvet string
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
8/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 8/28
darabokat egsz szmm konvertljuk. gy megkapjuk a kt operandust is.
Az opertort k iemelve, s megvizsglva (pl: egy switch, vagy egy if gaiban) mr el tudjuk vgezni a megfelel mveleteket, s ki tudjuk rni az eredmnyt a kpernyre.
6.14. feladat (Kifejezst tartalmaz szveg tiszttsa szint: 2). Ksztsnk a 6.14 (ch06.html#x1-10014r14)forrsszveg alapjn konzol programot, amely beolvas egy
tetszleges hosszsg szveget, melyet azonnal fel is dolgoz. A program a szveges kifejezst string formban kapja meg billentyzetrl. A kifejezsre a kvetkez megktsnek
kellene rvnyeslnie:
Nem tartalmazhat szkzt, vagy egyb white-space karaktereket.
Amennyiben tallunk szkzket a szvegbe n, gy azo kat tvoltsuk el. Valjba n ez a mvelet a pr ogram leg fontosabb momen tuma.
Magyarzat: Ezt a problmt gy oldhatjuk meg, ha mindaddig cserljk a dupla szkzket szimpla szkzre, amg tallunk ilyeneket a szvegben. A keressre az IndexOf
metdust, a cserre a Replacemetdust hasznljuk a stringtpusnak.
Informci: A szveg tszt tsa nagyon hasonlt arra a folyamatra, amikor a klnbz programozsi nyelvek fordt programja beolvassa a programoz ltal rt sorokat, majd a
flsleges szkzket, tabultor jeleket, kommenteket, s egyb nem kvnatos rszeket eltvoltja a szvegbl.
A fordtprogram ezen rszt Source handler-nek, vagy Input Handler-nek nevezzk.
6.15. feladat (Szveg elemeinek cserje - kiterjesztett megolds szint: 3). A Szveg el emeinek cserje p rogramot mdo stsuk gy, hogy a cserl end szveget, valamin t
azt, hogy mire cserljk ki, a felhasznl adja meg. Ezzel a megoldssal brmit ki tudunk cserlni a szvegben brmi msra.
Mdosthatjuk a programunkat gy is, hogy a cserlend elemeket, s azokat is, amikre ezeket cserljk, listkban lehessen elhelyezni.
Magyarzat:A cserlend elemek listjt egyesvel kell bejrnunk, s minden elem esetn el kell vgeznnk a csert, amit az eredeti programban is elvgeztnk. Ekkor a listk
bejrshoz is ciklusokat kell hasznlnunk, nem csak a cserkhez.
6.16. feladat (Nagy szmok sszeadsa szint: 3). Ksztsnk programot, mely tetszleges nagy egszeket kpes sszeadni. A nagy sz ebben az esetben azt jelenti, hogy a
C# nyelvben trolhat legnagyobb egsz szmoknl is nagyobb szmokat legynk kpesek feldolgozni, majd kezelni az eredmnyt. A 6.16 (ch06.html#x1-10016r16)
plda programba n tallju k a felad at egy le hetsges meg oldst.
Magyarzat:Amennyiben szvegesen troljuk a szmokat, brmekkora szmot be tudunk krni a billentyzetrl. Az elvi korlt az, hogy a felhasznlnak mikor frad el a keze a
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
9/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 9/28
gpels kzben. A szmokat gy tudjuk sszeadni, mint ahogy azt papron is tennnk.
A kt szmot tartalmaz szvegre listaknt tekinthetnk (valjban azok is), s minden elemre kln elvgezhetjk az sszeadst gy, hogy az adott helyen tallhat elemet
szmm konvertljuk.
A msik lista megfelel elemvel megtehetjk ugyanezt, majd a kt szmot sszeadhatjuk. Termszetesen az eredmnyhez minden lpsben hozz kell adni az elz
eredmny 10 fltti rszt is. Az sszeadsok elvgzse utn az eredmnyt vissza konvertljuk szvegg - miutn itt is kpeztk a megfefel tvitelt - s elhelyezzk az
eredmnyt a trolsra sznt szvegben.
A listk vgre rve megkapjuk az eredmnyt szintn szveges formtumban s kirhatjuk a kpernyre.
Termszetesen ez a klasszikus megolds, amitl eltrhetnk, ha jobb, vagy pp egyszerbb megoldst szeretnnk ltrehozni.
Informci: A nagy szmokat rengeteg fontos tudomnyterleten hasznljuk. Ilyen terlet a prm szmok keresse, a klnbz titkostsi eljrsok s azok alkalmazsa, vagy
a nagy szmokkal dolgoz csillagszati szmtsok. Az ilyen mret adatokkal val munka korltja sajnos nem a tr-terlet, hanem az id, ami alatt a szmtsokat el lehet
vgezni. Sok titkost eljrs titkossga is az id tnyezn alapszik. Olyan hossz id (vek, vagy vtizedek) kell a titkostott adatok feltrshez, hogy egyszeren nem rn
meg elkezdeni a munkt.
6.17. feladat (Nagy szmok szorzsa szint: 4). Ksztsnk a 6.17 (ch06.html#x1-10017r17)pldaprogram mintjra konzolos alkalmazst, mely tetszleges nagy szmokat
kpes szorozni egymssal. Az sszeadni kvnt szmokat billentyzetrl olvassuk be, s szveges formban troljuk (string). A nagy sz ebben az esetben azt jelenti, hogy a C#nyelv alaptpusai ltal brzolhat legnagyobb egsz szmoknl feldolgozni, majd kezelni az eredmnyt.
Magyarzat: Gondoljunk arra, hogyan szorzunk nagy szmokat papr s ceruza segtsgvel! Egyms mell rjuk a szorzt s a szorzand szmot, majd egyesvel, helyi
rtkek szerint eltolva minden szmjegyre nzve elvgezzk el a szorzst. A kapott eredmnyeket egyms al rjuk, majd elemenknt elvgezzk az sszeadsokat gyelve az
tvitel kezelsre.
A programunknak is valami hasonlt kell vgeznie. Ha a szorzsra gy tekintnk, mint sszeadsok sorozatra, a feladat k nnyedn megoldhat a Nagy szmok sszeadsa
cm feladatban ismertetett sszead rutin felhasznlsval.
6.18. feladat (res terletek szint: 2).lltsunk el v letlen eg sz szmoka t, majd hatrozzuk meg azt, hogy melyi k a leg hosszabb nullk at tartalmaz sorozat az elll tott
listban.
Magyarzat:A feladat megoldshoz tmbt, vagy listt alkalmazhatunk (termszetesen ms adatszerkezetet i s), amelybe egy vletlen szm genertor segtsgvel sok-sok
vletlen szmot generlunk. Az ellltott listt be kell jrnunk valamely ismert vezrl szerkezet segtsgvel, s minden megtallt nulla utn szmolnunk kell, hogy azt hny
darab nulla kveti. A leghosszabb, csak nullkat tartalmaz sorozat helyt, vagyis az els nulla indext meg kell jegyeznnk mindaddig, amg hosszabb sorozatot nem tallunk.
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
10/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 10/28
Ha biztosak vagyunk a tudsunkban, megprblhatjuk a feladatot NxM mret mtrix, vagy NxMxK-s adatszerkezettel is megoldani.
A fejezet forrskdjai
6.1. forrskd.Sorozat vizsglata
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] tomb = new int[4];
for (int i = 0; i < 4; i++)
{
Console.Write("{0}. elem: ", i+1);
tomb[i] = int.Parse(Console.ReadLine());
}
int elso=tomb[0];
int allando=tomb[1]tomb[0];
int hanyados=tomb[1]/tomb[0];
bool szamtani_e=true;
bool mertani_e = true;
for (int j = 1; j < 4; j++)
{
if (elso + (j * allando) != tomb[j]) szamtani_e = false;
if (tomb[j 1] * hanyados != tomb[j]) mertani_e = false;
}
if (szamtani_e) Console.WriteLine("A sorozat szmtani.");
if (mertani_e) Console.WriteLine("A sorozat mrtani.");
Console.ReadLine();
}
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
11/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 11/28
}
}
6.2. forrskd.Binris szmok
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{int db=0;
Console.Write("Krem adjon meg egy binris szmot: ");
string szam = Console.ReadLine();
for (int i = 0; i < szam.Length; i++){
if (Convert.ToString(szam[i]) == "1") db++;
}
Console.WriteLine
("A megadott binris szmban {0} darab egyes szerepelt.", db);
Console.ReadLine();
}
}}
6.3. forrskd.Egyedi vletlen szmok
using System;
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
12/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 12/28
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
Console.Write("Krem adja meg a vektor elemszmt: ");
int elemszam = int.Parse(Console.ReadLine());
int[] tomb = new int[elemszam];
int db=0;
while(db!=elemszam){
bool egyezike = false;
int veletlenszam = rnd.Next(1,101);
for (int i = 0; i < db; i++){
if (tomb[i] == veletlenszam) egyezike = true;
}
if (!egyezike){
tomb[db] = veletlenszam;
db++;
}
}
Console.Write("A vektor elemei: ");
for (int i = 0; i < elemszam; i++){
Console.Write("{0}, ", tomb[i]);
}
Console.ReadLine();
}
}
6/27/2016 C# f l d t jt | Di itli T k t
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
13/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 13/28
6.4. forrskd.Lottz programja
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int[] tomb = new int[5];
int db=0;
while(db!=5){
bool egyezike = false;
int veletlenszam = rnd.Next(1,91);for (int i = 0; i < db; i++){
if (tomb[i] == veletlenszam) egyezike = true;
}
if (!egyezike){
tomb[db] = veletlenszam;
db++;
}
}
Console.Write("A lott szmok: ");
for (int i = 0; i < db; i++){
Console.Write("{0}, ", tomb[i]);}
Console.ReadLine();
}
}
}
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
14/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 14/28
6.5. forrskd.Konzolos menkezels
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{class Program
{
static void Main(string[] args)
{
Console.WriteLine("1. menupont");
Console.WriteLine("2. menupont");
Console.WriteLine("3. menupont");
Console.WriteLine("4. menupont");
Console.WriteLine("5. menupont kilepes");
int melyik = 0;
while (melyik != 5){
Console.Write("Menupont kodja: ");
melyik = int.Parse(Console.ReadLine());
switch (melyik){
case 1:Console.WriteLine
("Az elso menupontot valasztotta ki.");break;
case 2:Console.WriteLine
("A masodik menpontot valasztotta ki.");break;
case 3:Console.WriteLine
("A harmadik menupontot valasztotta ki.");break;
case 4:Console.WriteLine
("A negyedik menupontot valasztotta ki.");break;
case 5:Console.WriteLine
("A kilepes menupontot valasztotta ki.");break;
}
}
Console.ReadLine();
}
}
}
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
15/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 15/28
6.6. forrskd.tvlts kettes szmrendszerbe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program{
static void Main(string[] args)
{
Console.Write ("10es szmrendszerbeli szm:");
int a = int.Parse(Console.ReadLine());
List binaris_szam = new List();
while (a != 0){
if (a % 2 == 0){
a = a / 2;
binaris_szam.Add(0);
}
else{
a = (a 1) / 2;
binaris_szam.Add(1);
}
}
Console.Write("A binris szm: ");
for (int i = 0; i < binaris_szam.Count; i++ ){
Console.Write
(binaris_szam[binaris_szam.Counti1]);
}
Console.ReadLine();
}
}
}
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
16/28
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 16/28
6.7. forrskd.Azonos elemek
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int [] tomb = new int[10];
int db = 0;
bool van=false;
Random rnd = new Random();for (int i = 0; i < 10; i++)
{
tomb[i] = rnd.Next(1, 101);
db++;
if (db > 1)
{
for (int j = 0; j < db1; j++)
{
if (tomb[i] == tomb[j]) van = true;
}
}}
if (van) Console.WriteLine
("A tmb tartalmaz azonos elemet.");
Console.ReadLine();
}
}
}
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
17/28
gy j y | g y
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 17/28
6.8. forrskd.Statisztika listkrl
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Krem adja meg a vektor mrett: ");
int meret = int.Parse(Console.ReadLine());
int [] tomb = new int[meret];
int most_ennyi_elem = 0;
int db=1;
for (int i = 0; i < meret; i++)
{
Console.Write("Krem adja meg
a tmb {0}. elemt: ", i+1);
tomb[i] = int.Parse(Console.ReadLine());
most_ennyi_elem++;
if (most_ennyi_elem > 1)
{
for (int j = 0; j < most_ennyi_elem1; j++)
{
if (tomb[i] == tomb[j])
{
db = db + 1;
break;
}
}
}
}
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
18/28
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 18/28
Console.WriteLine
("A tmb {0} nem azonos elemet tartalmaz.",meretdb+1);
Console.ReadLine();
}
}
}
6.9. forrskd.Karakterek szmllsa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Krem adjon meg egy stringet: ");
string szoveg = Convert.ToString(Console.ReadLine());
Console.Write("Adja meg a keresni kvnt karaktert: ");
string keresett_karakter =
Convert.ToString(Console.ReadLine());
int i = 1;int db = 0;
while (i < szoveg.Length)
{
if (Convert.ToString(szoveg[i]) ==
keresett_karakter) db++;
i++;
}
Console.WriteLine("A stringben {0} darab
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
19/28
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 19/28
keresni kvnt karakter tallhat.", db);
Console.ReadLine();
}
}
}
6.10. forrskd.Szavak vizsglata
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
bool palindrom = true;
Console.Write("Krem adjon meg egy szveget: ");
string szoveg = Convert.ToString(Console.ReadLine());
int i = 1;
int fele;
if (szoveg.Length % 2 != 0) fele = (szoveg.Length 1) / 2;
else fele = szoveg.Length / 2;
while (i < fele)
{
if (Convert.ToString(szoveg[i1]) !=
Convert.ToString(szoveg[szoveg.Length i]))
palindrom = false;
i++;
}
if (palindrom) Console.WriteLine("A szveg palindrom.");
else Console.WriteLine("A szveg nem palindrom.");
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
20/28
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 20/28
Console.ReadLine();
}
}
}
6.11. forrskd.Szveg tkrzse
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Krem adjon meg egy szveget: ");
string szoveg = Console.ReadLine();
string ujszoveg = "";
for (int i = 1; i
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
21/28
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 21/28
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Krem adjon meg egy elvgezend mveletet: ");
string szoveg = Console.ReadLine();
string elso_szam="";
string masodik_szam = "";
bool osszead = false;
bool megvan_az_elso = false;
for (int i = 0; i < szoveg.Length; i++)
{
if (Convert.ToString(szoveg[i]) != "+" &&
Convert.ToString(szoveg[i]) != ""
&& megvan_az_elso!=true)
{
elso_szam = elso_szam +
Convert.ToString(szoveg[i]);
}
if (Convert.ToString(szoveg[i]) == "+")
{
osszead = true;
megvan_az_elso = true;
}
if (Convert.ToString(szoveg[i]) == "")
{
megvan_az_elso = true;
}
if (Convert.ToString(szoveg[i]) != "+" &&
Convert.ToString(szoveg[i]) != ""
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
22/28
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 22/28
&& megvan_az_elso != false)
{
masodik_szam = masodik_szam +
Convert.ToString(szoveg[i]);
}
}
if (osszead)
{
Console.Write("A kt szm sszege: {0}",
int.Parse(elso_szam) + int.Parse(masodik_szam));
}
else Console.Write("A kt szm klnbsge: {0}",
int.Parse(elso_szam) int.Parse(masodik_szam));
Console.ReadLine();
}
}
}
6.13. forrskd.Szveg tiszttsa
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write ("Szveg: ");
string szoveg = Console.ReadLine();
Console.Write ("Mit cserlnk: ");
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
23/28
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 23/28
string cserelendo = Console.ReadLine();
Console.Write ("Mire cserljk: ");
string ujszovegresz = Console.ReadLine();
string ujteljesszoveg="";
bool teljes_egyezes=true;
int i = 0;
while (i < szoveg.Length){
if (Convert.ToString(szoveg[i]) !=
Convert.ToString(cserelendo[0])){
ujteljesszoveg=ujteljesszoveg+szoveg[i];
}
if (Convert.ToString(szoveg[i]) ==
Convert.ToString(cserelendo[0])){
for (int j = 0; j < cserelendo.Length; j++){
if (Convert.ToString(szoveg[j]) !=
Convert.ToString(cserelendo[j])){
teljes_egyezes=false;
}
teljes_egyezes = true;
}
if (!teljes_egyezes) ujteljesszoveg =
ujteljesszoveg + szoveg[i];
if (teljes_egyezes){
ujteljesszoveg = ujteljesszoveg +
ujszovegresz;
i = i + (cserelendo.Length 1);
}
}
i++;
}
Console.WriteLine(ujteljesszoveg);
Console.ReadLine();
}
}
}
6.14. forrskd.Nagy szmok sszeadsa
6/27/2016 C# feladatgyjtemny | Digitlis Tanknyvtr
7/25/2019 6C# Feladatgyjtemny _ Digitlis Tanknyvtr
24/28
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_csharp_feladatgyujtemeny/ch06.html 24/28
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program{
public static void Main(string[] args)
{
Console.Write("Krem adjon meg egy szmot: ");
string szam_elso = Console.ReadLine();
Console.Write("Krem adjon meg mg egy szmot: ");
string szam_masodik = Console.ReadLine();
string eredmeny = "";
int szam = 0 ;
string csere="";
if (szam_masodik.Length > szam_elso.Length)
{
csere = szam_elso;
szam_elso = szam_masodik;
szam_masodik = csere;
}
for (int i = 0; i < szam_masodik.Length; i++)
{
szam = int.Parse(Convert.ToString(
szam_elso[szam_elso.Length 1 i])) +
int.Parse(Convert.ToString
(szam_masodik[szam_masodik.Length 1 i]));
eredmeny = eredmeny + Convert.ToString(szam);
}
for (int j = 0; j
Recommended