252
C programozás help
-
#12 Nanana! Tényleg nincs benne semmi náci. Ha még 2 S lenne vagy valami... -
#11 Még ebben az esetben sem szép dolog a teljes házi megoldását várni mástól. Erre nem hiszem, hogy valaki is reagálni fog. Esetleg, ha próbálkoznál vele és elakadtál volna valahol, akkor lenne jelentkező. Amikor jobb kedvemben vagyok, még én is szívesen segítek, de ilyen esetben semmiképpen. -
SSS #10 Elmagyaráznád mi a náci 3 db. S betűben? Ha Hitler lenne a nickem akkor mondjuk érteném mit mondasz de így nem. -
SSS #9 Műszaki informatikát tanulok. Igazábol az a gond hogy 0 előképzettséggel megkaptuk a feladatot hogy 2 hét alatt hozzunk össze egyet ezek közül. És mivel ezt ALGORITMUSOK címen tanuljuk a C-ről meg a programozásról nem tanitanak semmit. így azért kicsit húzós nekiállni ezeknek a matematikai feladatoknak. Én utoljára kb. 9 éves koromban programoztam C64-en Basicben, meg Graphic Basicben, az sokkal korrektebb volt mint a C -
#8 Meg főleg ilyen náci nikkel..
húzz el a picsába! -
#7 Tehát fizetsz x százezer forintot? Melyiket írjam?
Amúgy mit tanulsz, hogy programoznod kell és soha nem lesz rá szükséged? Én Prog.Mat-os vagyok, tehát (elvileg) az ilyeneket kennem vágnom kéne fejből, de csak úgy szórakozásból másnak én sem szívesen programozok! -
SSS #6 Igazad van, tévedésben élek mert mertem feltételezni hogy van az országban olyan ember aki hajlandó segíteni, és nem az érdekli hogy kap-e érte X száz/ezer forintot. Bocsánat tévedtem. -
mrzool #5 " Aki meg úgy áll hozzá hogy mennyit fizetsz az jobban teszi ha elmegy kurvának, de ő se várjon több segítséget ha szarban lesz."
Marha nagy tévedésben élsz, kicsihuszár. Másrészt pedig prog.hu-s tanult reflex, hogy aki háziírásról nyit házit, az a 'mennyit fizetsz?' reakciót kapja vissza.:)) -
SSS #4 Az a helyzet hogy engem rohadtul nem érdekel az egész programozás mert tudom hogy soha nem lesz rá szükségem. Csak azért merészeltem ide írni mert gondoltam hogy ha valaki komolyan ért hozzá akkor az 10 perc alatt összedobja az egyik egyszerűbbet és kész. Azért nem adom be másét mert elég érdekes lenne ha kb. 50 ember ugyanazt adná be. Aki meg úgy áll hozzá hogy mennyit fizetsz az jobban teszi ha elmegy kurvának, de ő se várjon több segítséget ha szarban lesz. -
mrzool #3 Mennyit fizetsz? -
#2 Ahogy olvasom, nem nehéz programok, állítom neked, egy ember, aki már azelőtt programozott, de még soha nm hallott a C-nyelvről, egy hét alatt meg tudná csinálni őket. szóval szépen oda kell neki ülni, és 1-2 hét gyötrelem után, öröm lesz a siker, viszont azt ne várd, hogy majd valaki - mert jófej - bekopizza ide a forráskódot. Legalább is, ingyen biztos nem. Ha valahol elakadsz, akkor nyugodtan kérdezz, biztos segít itt valaki, meg a neten is van csomó jó tutorial. Ha viszontt nem akarsz megtanulni programozni, akkor ajánlom, inkább add be valakiét, aki már korábban megírta. -
SSS #1 Helló!
Segítségre lenne szükségem: az alábbi programok közül kellene BÁRMELYIKET megírni C programnyelven. Aki tud kérem segítsen, nagyon fontos lenne. Előre köszönöm!
Összegzések, rendezések
1. Az input egy olyan fájl, melynek minden sorában egy-egy név, és maximum
öt szám áll. A pista 5 7 4 2 8 sor jelentése a következő: pista
programja 8 hét, 2 nap, 4 óra, 7 perc és 5 másodpercet futott. Összegezze
személyek szerint a programhasználatot!
2. Adott egy fájl a vegyesbolt hiteleivel, amelyben soronként két bejegyzés
jelzi az igénylőt, és a hitel összegét (ami törlesztés esetén negatív). Csökkenő
érték szerint listázza ki a hitelek összegét személy szerinti lebontásban.
3. Adott egy fájl, melynek minden sorában egy-egy tört szerepel, n/m form
ában (0 _ n,m _ 1000). Adja össze sorra ezeket a számokat és a
részösszegeket meg a végeredményt is a lehető legegyszerűbb alakban írja
ki!
4. A k inputra írja ki a n
m számokat n/m formában, növekvő sorrendben, ahol
0 _ n,m _ k és n < m. Ha több szám egyenlő, akkor közülük a legkisebb
nevezőjét írja ki! A programban csak egész számokat használjon!
5. Adott igen nagy számok listája (soronként egy-egy szám, és egy szám
kisebb, mint 1050). Adja meg a számok összegét!
6. Számítsa ki pontosan az 1·2·... ·n szorzatot, ahol n paraméter és ötvennél
nagyobb.
7. Az euklidészi algoritmust használva adja meg két nagyon nagy szám legnagyob
közös osztóját! (m, n > 1050. Javaslat: addig helyettesítsük a
nagyobb vagy egyenlő számot a különbségükkel, míg nullát nem kapunk
eredményül! Ekkor a másik szám lesz a keresett.)
8. Egy szövegfájlból olvassa be a számokat, amelyeket egy kétirányú láncolt
listában helyezzen el. Balról a monoton növekvő, jobbról a monoton
csökkenő sorozatokat fésülje össze egy ugyanekkora méretű hasonló
listába, ahol balra monoton növekvő, jobbra monoton csökkenő sorozatokat
írjon! Ismételje ezt az eljárást mindaddig, amig rendezi az egész
listát!
- _ - _ . . .
. . . - _
9. Az input fájl egy normál szövegfájl, csak szavakat tartalmaz Készítsen
egy fát, melynek csúcsaiban betűk szerepelnek és amelyben az input minden
szavának a fa egy ága vagy ágrészlete felel meg. Minden betű mellett
tárolja a szó előfordulásanak a számát is! A fa tárolására használjon
bináris fát, ahol az egyik él a _legidősebb gyerek_, a másik él a _sorban
következő testvér_ felé mutat. A fa elkészítése után írja ki a szavakat
gyakoriságukkal együtt.
1
10. A szövegfájl sorait rendezze úgy, hogy előre a legkevesebb szót tartalmazó
sorok kerüljenek! Az azonos szószámú sorok között az lexikogra_kus sorrend
a döntő.
11. Adottak dátumokat tartalmazó sorok, például 1999. januar 12. Rendezze
értelemszerűen a dátumokat!
12. Adottak két dátumot (mindkettő hó és nap) tartalmazó sorok. Rendezze
a sorokat az két dátum közti időtartam alapján csökkenő sorrendben.
Permutációk
Az 1, 2, ..., n elemek permutációjának hívjuk az i1, i2, ..., in sorozatot, ha
{1, 2, ..., n} = {i1, i2, ..., in}. A 346251 sorozatot így is felfoghatjuk, hogy az 1
helyébe 3-t, a 2 helyébe 4-t, ..., a 6 helyébe 1-t kell írni. Az előbbieket más
sorrendben felírva úgy is mondhatjuk, hogy az egy helyébe hármat, a három
helyébe hatot, a hat helyébe egyet kell írni (egy ciklus); a kettő helyébe négyet,
a négy helyébe kettőt kell írni (másik ciklus), az ötös pedig helyben marad.
Két permutáció egymás utáni végrehajtása (a két permutáció szorzata) újra
permutációt ad. Ha az előbbi 346251 permutációt megszorozzuk a 243165 permut
ációval, akkor például a kettő helyébe először négyet, majd a másik permut
áció miatt a négy helyébe egyet kell írni. Az összes értéken végigjátszva
ezt a 315462 permutációhoz jutunk. Egy permutációban futamnak nevezzük az
egymást követő számok monoton növekvő sorozatát. Az alábbi feladatokban az
input fájl soronként ugyanazon elemek egy-egy permutációját tartalmazza.
1. Adja meg az egymást követő sorokban levő permutációk szorzatát!
2. Bontsa fel a permutációt ciklusok szorzatára.
3. Az egymást követő sorokban levő permutációkat bontsa ciklusokra, majd
számítsa ki a ciklusok szorzatát.
4. Határozza meg a permutáció inverzét, azaz azt a permutációt, amellyel
megszorozva a kérdéses permutációt, a számok növekvő sorozatát kapjuk!
5. Bontsa a permutációt futamokra!
6. Határozza meg a leghosszabb futamot!
7. A permutáció jelölje egy lexikon köteteinek az elhelyezkedését a könyvespolcon.
Legkevesebb lépésben (egy könyv elvétele a könyvespolcról, majd
visszahelyezése valahova) állítsa vissza a hagyományos elrendezést!
8. A permutáció konténerek elhelyezkedését jelenti. Legkevesebb lépésben
(két konténer kicserélése) állítsa növekvő sorrendbe a konténereket!
2
Táblázatok
1. Az input fájl minden sora azonos darab számot tartalmaz. Tartalmaz-e ez
a táblázat nyeregelemet, azaz olyant, amely a saját sorában a legnagyobb,
viszont oszlopában a legkisebb? Ha igen, akkor a táblázatnak csak ezt a
sorát és oszlopát írassa ki!
2. Töltsön fel egy 2n+1×2n+1 tömböt! (Induljon meg az első sor középső
mezőjéből, és haladjon folyamatosan balra fel! Ha kilépne az egyik oldalon,
jöjjön vissza a szemköztin! (n paraméter
3. Töltsön fel egy m× n-es tömböt cikkcakkban. Azaz az egyik soron balra,
a következőn jobbra haladjon. (Vagy az egyik oszlopban fel, a másikban
le.)
4. Töltsön fel egy m × n-es tömböt csigavonalban. (m és n paraméter.)
5. Az input sakktáblapozíciók sorozatát tartalmazza (e2 g1 h3. . . ). Döntse
el, hogy lépkedhet-e egy huszár ilyen sorrendben a táblán!
6. Az input sakktáblapozíciók sorozatát tartalmazza. Döntse el, minden
megadott pozíción egy huszár áll, hányan vannak ütésben!
7. Az input sakktáblapozíciók sorozatát tartalmazza.
8. Az input fájl n2 db 0 vagy 1 számjegyet tartalmaz. Ezekkel töltsön fel
egy n × n-es mátrixot, majd a sorok, illetve oszlopok cseréjével alakítsá
át a mátrixot úgy, hogy téglalapokra felbontva a mátrixot az 1-eket is
tartalmazó téglapok mérete minimális legyen!
Pontpárok, topológia, gráfok
Az itt következő feladatok mindegyike egy olyan fájlból veszi az adatait, amelynek
minden sora két számot tartalmaz.
1. Legyenek ezek a számok egy konvex sokszög csúcsainak a koordinátái.
Irassa ki az átlókat csúcspontjaik koordinátáival.
2. A számpárok n darab síkbeli pont koordinátái. A pontok távolságát
értelmezzük a hagyományos módon: di,j = p(xi − xj)2 + (yi − yj)2, azaz
a koordináták különbségének négyzetösszegéből vont négyzetgyökkel. Irassa
ki a pontok minimális hosszúságú kifeszítő fáját!
3. A számpárokban szereplő számokat írja fel úgy, hogy a számpárok első
elemei sorrendben a megfelelő hátsó elemek előtt szerepeljenek a sorban.
Azaz írjon fel a megadott parciális rendezésnek megfelelő teljes rendezést!
4. A számpár a gráf egy élét alkotó csúcspár azonosítója. Irassa ki a gráf
komponenseit.
3
5. A számok egy nem irányított, összefüggő gráf csúcsait jelentik, így a számp
árok ennek a gráfnak az éleit. Adjon meg a fában egy szabad fát, azaz
összefüggő, körmentes részgráfot.
6. A számok egy irányított gráf éleit jelentik. Minden egyes él súlya 1. Milyen
messze vannak a gráf csúcsai az 1-el jelölt csúcstól, és milyen messze van
az 1-el jelölt csúcs a gráf csúcsaitól?
7. Az előbbi pontpárok egy szabad fa (irányítatlan, összefüggő és körmentes
gráf) éleit jelölik. Határozza meg a gráf közepét (amely a legkisebb súlyú
csúcsa)! Egy csúcs súlya megegyezik a gráfból ennek a csúcsnak elhagyásá-
val kapott részgráfok fokszámának maximumával. (Ez a súlyfogalom nem
esik egybe az előző feladat súlyfogalmával!)
Aritmetikai kifejezések
Az alábbi feladatok inputja egy olyan szövegfájl, amelynek minden sora egy-egy
pre_x formában felírt aritmetikai kifejezést tartalmaz. (Mveletek az +, * és
a -.) Az inputban bármely két szomszédos szám legalább egy szóközzel van
elválasztva, és csak egész számok szerepelnek benne.
1. Az inputot írja át in_x alakba, kirakva minden zárójelet!
2. In_x alakba átalakítás során csak a mindenképpen szükséges zárójeleket
tegye ki!
3. Számítsa ki a kifejezés értékét!
4. Egy kifejezés bonyolultságán a neki megfelelő kiszámítási fa magasságát,
azaz a leghosszabb ágát értjük. Ekvivalens átalakításokkal _x + y =
y + x, x + (y + z) = (x + y) + z, xy = yx, x(yz) = (xy)z_ készítse
el az eredeti kifejezéssel érték szerint megegyező, ám minimális bonyolults
ágú kifejezést. Például in_x jelöléssel: ((a+(b+(c+d)))*e)*f helyett
(((a+b)+(c+d))*e)*f.
5. A kifejezést _laposítsa el_, azaz végezze el a beszorzásokat, majd az azonos
tagokat vonja össze! Például in_x jelöléssel: (x+1)*(x-3) helyett x*x-2x-3
vagy x*x+ -2*x-3
6. Irassa meg a programmal az adott kifejezést kiszámító assembly programot!
Az összeadásnak az ADD, a szorzásnak a MUL, a kivonásnak a
SUB felel meg, míg az i. regiszterbe töltésnek az L Ai. A nullás regiszter
az akkumlátor, ez adja a mveletek első argumentumát, és ide kerül
a végeredmény is. A - + 2 x * z y kifejezést például a következőképpen
is le lehet fordítani: a L A0 2, L A1 x, ADD A1, LD A0 A2, LD A0 y,
LD A1 z, MUL A1, SUB A2.
4
Nyelvi játékok
1. Adott egy szövegfájl, amely csak szavakat tartalmaz. Gyűjtsük ki belőle az
anagrammákat (azokat a szavakat, amelyek ugyanazokból a betűkből állnak)!
Ehhez rendezzük a szavak betűit, és a szóból és e rendezett betűkből
álló párosokat rendezzük az utóbbi szerint!
2. A szövegfájlból írassa ki a palindrom sorokat! (Azokat, amelyek hátulról
olvasva is ugyanazt adják, mint előről.)
3. Irassa ki a csak szavakat tartalmazó szövegfájl tíz leggyakrabban szereplő
szavát!
4. Állapítsa meg, hogy a szövegfájl egymás utáni soraiban lévő szavak valóban
csak egy-egy betűben térnek el egymástól! Például BOR-BÁR-VÁR-VÁZV
ÍZ.
5. Állapítsa meg, hogy a szövegfájl bármely két szavához létezik-e szövegf
ájlbeli szavak olyan sorozata, hogy ebben az egymást követő szavak csak
egy-egy betűben térnek el egymástól!
6. Állapítsa meg, hogy a szövegfájl egy adott sorában található szót megkaphatja-
e úgy, hogy az előző sor szavát valahol egy betvel kiegészíti!
Vegyes
1. Adott egy lista, melyben nevek és fagylalttípusok szerepelnek. Ha egy
név következik, az adott személy a sor végére áll. Ha egy fagylalt neve
következik, akkor a sor elején álló személy kap egy ilyen fagylaltot és kilép
a sorból.
• Sorolja fel, hogy ki milyen fagylalttal távozott.
• Sorolja fel, hogy ki milyen fagylaltból mennyit evett, és az egyes
fagylaltfajtákból mennyi fogyott.
2. Tárolja egy listában a memória szabad helyeinek kezdetét és hosszát.Az input
fájl a területkéréseket (méret) és a területek felszabadulását (kezdőcím
és méret) jelzik. A területek felszabadításakor kapcsoljuk össze a szabad
területeket! Tárfoglaláskor szabad területek közül a következőképpen
válasszon:
• a legelső szabad helyet adja át,
• leginkább megfelelő szabad helyet adja át, azaz amelynek a területe
legkevésbé tér el a kéréstől.
3. A tárakat csak kettőhatvány méretben oszthatja ki. A szabad területek inform
ációnak tárolásakor duplán láncolt listát használjon, vagy más olyan
módszert, amikor méretenként csoportosítva vannak a címek. Kérés eset
én tesztelendő, hogy van-e elegendően nagy terület. Ha van, akkor olyat
5
keresünk, amelyben még épp kielégíti a kivánalmakat. Esetleg ehhez nagyobb
szabad területet kell részekre tördelni. Felszabadításkor tesztelni kell,
hogy nem kapcsolható-e össze valamely szabad területtel, hogy egy korábbi
nagyobb területet visszakapjunk. Készítse el azt a programot, amely az
előbbi feladat inputjából eme elvek alapján működik!
4. Adott két fogaskerék, az első m, a második n foggal (legyen m > n). Az
első fogaskerék az első fogával ér a másik fogaskerékhez. Csöppentsünk
egy csepp festéket az első kerék k-dik fogára.
• i-szer körbeforgatva az első kereket mely fogai lesznek festékesek?
• Hányszor kell körbeforgatni az első kereket, hogy teljesen festékes
legyen?
5. Hány lényegesen különböző (függőleges tükörképeket nem számítva) villamosjegylyukaszt
ás létezik?
6. Van olyan tízjegyű szám, melynek minden számjegye különböző és ez teljes
ül a szám n-szeresére is?
7. Döntse el, hogy felcserélhetőek az ábrán látott elrendezésben elhelyezett
kavicsok! Ha igen, mutassa meg a lépéseket! A kavicsokat a következőképpen
mozgathatjuk:
• a lyuk előtti kavicsot a lyukra tolhatjuk.
• ha a lyuk és a kavics között pontosan egy kavics van, akkor azt átugorhatjuk
a kavicsunkkal.
Mindkét esetben a lyuk és a kavics helyet cserél.
s s s s s s s s
8. Írjon olyan programot, amely a megadott számból (pl. a négyből) kiindulva
egy másik, ugyancsak előre megadott természetes számot állít elő a
következő szabályok alkalmazásával:
A a szám végére a 4-es számjegyet írhatjuk.
B a szám végére a 0-ás számjegyet írhatjuk.
C ha a szám páros, akkor kettővel oszthatjuk.