Jump to content
GSForum - Segélyvonal

Programozás (segítség és publikálás kezdõknek)


Recommended Posts

Posted

Írnom kellene egy szótár programot. Bár holnapra még csak a specifikáció kell, azért beleírnám, hogy miben tárolja a kifejezéseket. Szóval mit javasoltok...? Tömbök, fájl, más? :unsure: Nyilván olyan program kell, amihez a felhasználó tud adni új bejegyzést.

Mivel a méret nem fix, így a tömb kiesett.

Fájlban tárolni nem érdemes, viszont oda elmenteni erõsen ajánlott.

Az, hogy konkrétan milyen adatszerkezetet használsz, függ attól is, hogy milyen nyelven kell megírni a programot. Szóval?

Posted

Írnom kellene egy szótár programot. Bár holnapra még csak a specifikáció kell, azért beleírnám, hogy miben tárolja a kifejezéseket. Szóval mit javasoltok...? Tömbök, fájl, más? :unsure: Nyilván olyan program kell, amihez a felhasználó tud adni új bejegyzést.

Gondolom c-ben kell.

Szerintem a szókapcsolatokat tárold struktúrákban, azokat pedig egy nagy tömbben. Ha új bejegyzést kap és a tömbben nincs több hely, akkor létrehozol egy új tömböt, abba átmásolod a régit, a régit realloc-kal megnöveled majd a végén visszamásolod. (Én legalábbis így csináltam c-ben :) ).

A szavakat a tömbbe pedig egy szövegfájlból olvasd be (ill. oda tárold). Minden szó-jelentés kapcsolatot új sorba tegyél és akkor nem nehéz.

Posted

Kell tudnia oda-vissza keresnie?

Kellene... Tehát úgy gondoltam, hogy a user kiválasztja, hogy melyik irányba akar keresni. Tehát mitt'om én ha lenyomja hogy 'a' akkor angolról fordít magyarra, ha meg azt hogy 'm' akkor magyarról angolra.

Végül is én is úgy írtam a spec.-ben, ahogy CrW mondta. A szavakat tárolom két txt-ben aztán olvasom be.

Posted

Én is ezt akartam épp javasolni, könnyû új adatot beszúrni (és rendezni, ha szükséges), viszont a "visszafelé" keresés az elég macerás. Vagy csinál mindkét iránynak egy-egy listát.

Úgy akartam... Gondolom még nem várnak el tõlünk marha nagy kunsztokat.

Posted

Úgy akartam... Gondolom még nem várnak el tõlünk marha nagy kunsztokat.

C-ben nagy kunsztot csak a programozók 5%-ától várnak el, ne aggódj! :P

Én is ezt akartam épp javasolni, könnyû új adatot beszúrni (és rendezni, ha szükséges), viszont a "visszafelé" keresés az elég macerás. Vagy csinál mindkét iránynak egy-egy listát.

Mindenképp duplán kell tárolnia a dolgokat, még az alább említett módszerek esetén is. (Persze, kivéve, ha adatbázisozik...az lenne a legegyszerűbb, node C-ben nem tudom, hogy lehet normálisan megcsinálni, gugli viszont biztos haver ebben is)

Posted

C-ben nagy kunsztot csak a programozók 5%-ától várnak el, ne aggódj! :P

Mindenképp duplán kell tárolnia a dolgokat, még az alább említett módszerek esetén is. (Persze, kivéve, ha adatbázisozik...az lenne a legegyszerûbb, node C-ben nem tudom, hogy lehet normálisan megcsinálni, gugli viszont biztos haver ebben is)

Ha ezt a struktúra-tömböt választja, akkor nem. Sõt, nem is muszály struktúrát használni elég ha két oszlopa van a tömbnek, értelem szerûen egyik oszlopban a magyar, másikban az angol szavak lennének.

Ezzel csak az a baj, hogy egyrészt baromi nagy a redundancia (egy több jelentésû szó nyílván annyiszor szerepel, ahány jelentése van; ha meg a szinonímákat is hozzávesszük, akkor...), másrészt macerás a bõvítés.

(Mondjuk a keresés sem az igazi...)

Én személy szerint két lehetõséget javasolnék:

1) minden iránynak egy "sima" láncolt lista, ahol két eltérõ szintû láncszem van. Az elsõdleges nyelv (angol-magyar esetén az angol) szavai lennének egy láncolt listában (célszerû ábécé sorrendbe rendezni), és minden szóhoz tartozna egy másik lánc, ami meg a jelentéseket tartalmazná.

2) ugyanez, csak nem két egyirányú, hanem egy kétirányú lista. Így lehetne visszafelé is keresni (igaz kissé macerásan és nem túl hatékonyan) anélkül, hogy minden kétszer lenne tárolva.

Posted

Van egy ilyenem:

double a,r;
scanf("%f %f",&a,&r);
printf("%.2f %.2f",a,r);

Valahányszor kap egy számot (egész, lebegõpontos, bármi...) mindig valami mínusz sokmilliárdot ír ki. Próbáltam úgy is, hogy %g-t írok a scanf()-be, de úgy meg még betûket is ír bele.

Viszont a

float a,r;
scanf("%f %f",&a,&r);
printf("%.2f %.2f",a,r);

normálisan írja ki a számokat. Mit cseszek el? :unsure:

Posted

Van egy ilyenem:

double a,r;
scanf("%f %f",&a,&r);
printf("%.2f %.2f",a,r);

Valahányszor kap egy számot (egész, lebegõpontos, bármi...) mindig valami mínusz sokmilliárdot ír ki. Próbáltam úgy is, hogy %g-t írok a scanf()-be, de úgy meg még betûket is ír bele.

Viszont a

float a,r;
scanf("%f %f",&a,&r);
printf("%.2f %.2f",a,r);

normálisan írja ki a számokat. Mit cseszek el? :unsure:

scanf-ben %lf kell a beolvasáshoz, tehát "long float", akkor lesz double

Posted

Van valakinek valami ötlete az alábbi feladathoz?

Egy város elhatározta, hogy értékesíti a város mellett levõ téglalap alakú földterületet. A földet egyforma méretû parcellákra osztották. A város úgy döntött, hogy a parcellákat nyilvános pályázat keretében értékesíti. Azaz egy adott határidõig minden érdeklõdõ lezárt borítékban leadhatja ajánlatát. Egy pályázó csak egy ajánlatot adhat be, amelyben meg kell adnia, hogy melyik parcellától melyik parcelláig terjedõ részt kívánja megvenni, és hogy mennyiért. A határidõ lejártáig n pályázat érkezett. Ezek közül ki kell választani azokat az ajánlatokat, amelyek a legtöbb bevételt eredményezik, s persze úgy, hogy egyetlen parcellát sem ítélhetünk oda egynél több pályázónak.

Írjon programot, amely elvégzi a pályázatok olyan kiértékelését, amely a legnagyobb bevételt eredményezi.

A bemenet elsõ sora tartalmazza, hogy hány pályázat (1 <= n <= 1000) van illetve hány parcella (1 <= m <= 1000).

Utána n sorban fel vannak sorolva a pályázatok: hanyadik parcallától (a) hanyadikig (B) tart irényt az illetõ, illetve ezért mennyit fizetne (f). A b szerint nem csökkenõ sorrendben vannak rendezve a pályázatok.

Egy példa:

4 5

2 3 500

4 4 600

4 5 500

1 5 1000

Megoldás:

1100

1 2

(az elsõ sor a bevétel, a második pedig a pályázók sorszámai; ha több megoldás is van, akkor bármelyik jó)

Itt egy másik példabemenet:

20 10

1 1 481

3 3 790

4 4 201

3 5 405

2 5 548

2 6 136

7 7 613

5 7 933

5 7 764

6 8 429

5 8 475

8 8 722

8 9 532

1 9 640

9 9 506

9 9 992

9 9 311

9 9 539

8 9 503

6 9 743

papíron nekem ez a megoldás jött ki:

4119

1 2 3 8 12 16

Posted

scanf-ben %lf kell a beolvasáshoz, tehát "long float", akkor lesz double

Ah... Köszi szépen. Így már mûködik. :)

Posted

Van valakinek valami ötlete az alábbi feladathoz?

Szerintem ez egy diszkrét lineáris programozási feladat.

A megoldáshoz egy n magasságú bináris fát kell bejárnod, aminek elvileg 2 az n-ediken levele lehet. Minden levél egy lehetséges pályázat-összeállítást jelent, tehát a fa minden elágazásánál arról döntesz, hogy a következõ pályázatot az elfogadottak közé tegyük-e. Persze nem kell minden levelet kiértékelni, hiszen vannak olyan összeállítások, amik ütik egymást, tehát nem kell végigjárni az egész fát.

Például a 4 pályázó esetén mondjuk 1111-tõl 0000-ig járhatod végig a fát, 1111 azt jelenti, hogy mind a négy pályázatot elfogadják, 0000 azt jelenti, hogy egyiket sem. 1111-rõl persze kiderülne, hogy ütközés van benne, tehát odáig el sem jutsz, 0000 pedig értelemszerûen 0 Ft-os megoldást ad, tahát nem lesz befutó. Ilyen irányban bejárva már 111x-hez érve rossz összeállítást kapsz, tehát csak 110x-el folytathatod, és ezen az ágon is lesz meg a gyõztes 1100.

Amint elértél az elsõ használható levélig, kiértékeled, hogy mekkora összeget ér, ezt eltárolod, és onnantól kezdve a továbbiakban már ehhez is hasonlíthatod a várható összeget egy-egy elágazásnál. Ha a várható összeg maximuma kisebb, mint az eltárolt legjobb érték, akkor annál az elágazásnál már nem érdemes tovább lépni.

De persze az is elég, ha csak levelenként hasonlítod az aktuális legjobb értékhez, az optimalizálás talán nem olyan fontos szempont.

Posted

Ez egy dinamikus programozási feladat, ez lemaradt. Nem mondom, hogy teljes egészében felfogtam a megoldási javaslatodad (my bad, és természetesen köszönöm!), de elég idõigényesnek tûnik. Itt viszont az idõ korlátos, 0,3 mp, valamint egy ilyen döntési fa jó sok helyet foglal, ami szintén meg van szabva, max 16 MB lehet. Bár ez utóbbi nem egy vészes korlát, inkább az idõvel lehet gond, ha nem dinamikusan csinálja az ember.

Egyébként egy nem túl hatékony (és nagy inputra valamiért egyszerûen lefagyó...) megoldásom nekem is van (mindkét példabemenetre jó megoldást ad, van egy harmadik is, de azt papíron ember nem ellenõrzi le), nagyjából hasonló az elve.

Posted

hali,én azzal a kéréssel fordulok hozzátok,hogy kellene elõször is nekem olyan forrás amivel magam feltudok készülni az érettségin kért dolgokra és annál nagyobb szintû nyelveket szeretnék elsajátítani (az iskolában fogják tanítani de ki bír addig várni. :D ) szóval ezekhez kellene nekem valami forrás amibõl megtanulhatom,elõre is köszönöm.

Posted

hali,én azzal a kéréssel fordulok hozzátok,hogy kellene elõször is nekem olyan forrás amivel magam feltudok készülni az érettségin kért dolgokra és annál nagyobb szintû nyelveket szeretnék elsajátítani (az iskolában fogják tanítani de ki bír addig várni. :D ) szóval ezekhez kellene nekem valami forrás amibõl megtanulhatom,elõre is köszönöm.

Konkrétan mit értesz "nagyobb szintû nyelv" alatt? :unsure: A felkészülési forrásnak meg egy info tanárt javaslok aki érti is a dolgát. B)

Posted

Konkrétan mit értesz "nagyobb szintû nyelv" alatt? :unsure: A felkészülési forrásnak meg egy info tanárt javaslok aki érti is a dolgát. B)

nagyobb szintû alatt olyanra gondolok amit lehet is használni különbözõ programok írásához,mert azt hallottam haveromtól hogy se fõiskolán se erre a célra nem azt használják amit kérnek.

Én infó spec. osztályba járok (10.be) de már 12. év elejére elakarom azt a szintet érni hogy az emelt szintû érettségit le tudjam tenni infóból.

Posted

nagyobb szintû alatt olyanra gondolok amit lehet is használni különbözõ programok írásához,mert azt hallottam haveromtól hogy se fõiskolán se erre a célra nem azt használják amit kérnek.

Én infó spec. osztályba járok (10.be) de már 12. év elejére elakarom azt a szintet érni hogy az emelt szintû érettségit le tudjam tenni infóból.

Hát... Nem t'om mi lesz addigra a követelmény. Office biztos, hogy lesz a programozás az kérdéses mert hallottam olyat, hogy Pascal helyett már érettségin is C-ben kell programozni. Szóval C-re mindenképp érdemes ráfeküdni, mert szerintem minden egyetemen / fõiskolán azzal kezdik illetve érdeklõdj a tanároktól, hogy mi a helyzet a Pascallal ha majd aktuális lesz, mert 2 év az sok idõ és rengeteg minden változhat addig.

Posted

nagyobb szintû alatt olyanra gondolok amit lehet is használni különbözõ programok írásához,mert azt hallottam haveromtól hogy se fõiskolán se erre a célra nem azt használják amit kérnek.

Én infó spec. osztályba járok (10.be) de már 12. év elejére elakarom azt a szintet érni hogy az emelt szintû érettségit le tudjam tenni infóból.

Szerinted egy programozási nyelvet mire lehet még használni programok írásán kívül? :rolleyes:

Ezt meg fogalmazd meg újra, mert egy szót nem értek belõle. :ph34r:

Posted

Hát... Nem t'om mi lesz addigra a követelmény. Office biztos, hogy lesz a programozás az kérdéses mert hallottam olyat, hogy Pascal helyett már érettségin is C-ben kell programozni. Szóval C-re mindenképp érdemes ráfeküdni, mert szerintem minden egyetemen / fõiskolán azzal kezdik illetve érdeklõdj a tanároktól, hogy mi a helyzet a Pascallal ha majd aktuális lesz, mert 2 év az sok idõ és rengeteg minden változhat addig.

akkor viszont majd mindkettõre ráfekszek,próbálok tanárt is keresni hozzá,de tudsz valami hasznos könyv címet vagy linket adni ami kezdõ támpontnak megfelel?

Posted

akkor viszont majd mindkettõre ráfekszek,próbálok tanárt is keresni hozzá,de tudsz valami hasznos könyv címet vagy linket adni ami kezdõ támpontnak megfelel?

C jegyzetek

Meg a ComputerBooks-nál lehet viszonylag olcsón könyve(ke)t szerezni... Innen meg le tudod szedni a Visual Studio-t C-hez. (Van más fejlesztõ is, én speciel ezt használom).

Posted

hello mi kéne ahoz hogy egyedül megtanuljam a java programozási nyelvet fél év alatt és ingyen

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...