Arra gondoltam, hogy csinálnék egy ilyen programot, de mindíg valahol valami gubancba akadok. Három programozási nyelven "tudok" valamicskét: Prolog (SWI), C++, Assembly. Tömörítési eljárásnak az LZW eljárásra gondoltam. Készített már valaki ilyet? Meg lehet ezt oldani header fájl készítése nélkül? További kérdések is várhatóak, csak legyen aki ír ide. (A használj Winrar-t, Winzip-et, Winace-t, és hasonló okos megjegyzésektõl mentes hozzászólásokat kéretik írni.)
Szia!
Gondolom csak úgy saját szórakozásodra akarsz írni egy ilyet. (Azért gondolom ezt, mert elég sok matek van az igazi ütõs megvalósítások mögött.)
Mit értesz header fájl készítése nélkül? Azt, hogy 1 forrásfájlba belerakni az egészet? (Az nem éri meg, mert átláthatatlan lesz.)
Ja, és RLE-t sztem tudok írni, de annak marha nagy a hatásfoka :)
Szia!
Értem, szal akkor azért kellenek header fájlok. Nos, mivel már viszonylag régen tanultam a c++ programozást, néhány dolog kiment a fejembõl. Ezek a header fájlok rutingyüjtemények igaz? Header fájl készítésén azt értem, hogy pl tanulmányoztam már ilyen progikat, csak abban láttam, hogy elég sok saját készítésû .h kiterjesztésû fájl volt. Én ezek megúszásával akartam megcsinálni, mivelhogy ezt spec nem tanították hogyan kell. Akkor esetleg tudsz ajánlani egy viszonylag könnyen értelmezhetõ, jól elmagyarázós header fájl készítést megtanító oldalt? Thx.
Azt gondoltam, hogy nagyon erõs matek áll mögötte, de hát az LZW... azt már vki kitalálta helyettem, és nem is túl bonyolult. Bár, ha azt mondod Huffmannal könnyebb, és én is úgy látom, akkor azzal lesz írva.
A .h fájlok tökéletesen ugyan úgy épülnek fel, mint a .c és .cpp fájlok, csak nem szoktak benne #include-ok lenni, és nincs bennük a void main() eljárás sem. A programban meg amit használsz, pl az #include <stdio.h>; után egyszerûen azt mondod, hogy #include "sajat.h"; (rég c-ztem, sazl a szintaktika nem biztos, hogy helyes.)
Írok egy kicsit a fõ problémámról. Pofon egyszerû, ez csak példa. Legyen a következõ egy txt fájlban: DABBACDABBACD
alapszótárunkban van: 1. - A ; 2. - B ; 3. - C ; 4. - D
Ekkor ugye az történik, hogy nézi az algoritmus a D betût, na ilyenünk van már, de vegyük hozzá az A karaktert, így kapunk DA -t. Ilyenünk még viszont nincs, ezért felvesszük a szótárba: 5. - DA majd D -t kódolom (4). Most megyek az A -hoz, van már ilyen, ezért hozzáveszem B -t, így lesz AB, ami viszont megint nincs, ezért felveszem AB -t a szótárba 6. sorszámmal, és kódolom A -t (1). És így tovább.
Ugye a prolog képes adatbáziskezelésre. Legyen pl a köv adatbázisunk kod(a,1). kod(b,2). kod(c,3). kod(d,4).
Õ képes átlátni az egész adatbázist, és összehasonlítani már egy bent lévõvel, továbbá ha nem létezik akkor felveszi. De viszont, azt hogy mondom meg neki, hogy hát légyszives karakterenként vizsgáld már a beolvasott fájlt? C++ -ban viszont lehet karakterenként vizsgálni, viszont olyan adatbáziskezelési móddal nem lehet élni, mint amilyen a Prologban van. Ezért volnék kíváncsi vki megoldására (nem lopni... meríteni), vagy tanácsaira, aki már csinált ilyet. [erõsen töpreng]
.header fájlokban csak a hozzá tartozó cpp beli függvények prototíppusát kell megadni, majd a fõprogramba ezt a .h fájlt kell inkludálnod.
a #6 ot nemértem.. ha megvan az algoritmusod erre a kódra, akkor csak c++ fájlolvasás múveletet kell használnod.. legegyszerûbb ha strings osztályt használsz, ebbe beolvasod a fájlbõl, majd a sztring elemeire egyesével hivatkozol.. ha érdekel példát másolok ide string kezelésre, meg fájl olvasásra..
Hello! Nekem is úgy adódott, hogy szükségem lenne egy saját tömörítõ forráskódra.
A lényeg az, hogy arra lenne szükségem, hogy a program KIVÉTEL nélkül csak számjegyekkel, azaz a 48-57 értékek közötti bájtokkal dolgozzon. Tehát hogy akármilyen sorrendben akármennyi számjegyet tudjak betömöríteni, és ezt KIZÁRÓLAG szintén csak számjegyekkel tudjam felírni (mármint a tömörítvényt). A hatásfoka nem kell hogy kifejezetten jó legyen, elég ha csak mondjuk sok egymás melletti ugyanolyan számot rövidebb formában tárol a tömörítvényben. (A legfontosabb, hogy a tömörítvényben is _csak számjegyek_ legyenek a legelejétõl a legvégéig)
Amit legfõgéppen nem tudok és a segítségeteket kérném ebben, hogy hogyan lehet úgy felépíttetni a tömörítvényt, hogy ugyanolyan karakterekbõl álljon, mint amilyenbõl a tömörített adat állhat. Tehát hogyan tudja a kitömörítõ megkülönböztetni a tömörítvényben az adatrészt és az egyéb leíró részeket (nem tudom, hogy hívják).