Kezdőoldal » Számítástechnika » Programozás » Ezt ti hogy csinálnátok meg?

Ezt ti hogy csinálnátok meg?

Figyelt kérdés

Egy programot szeretnék, ami egy fájlban tárolt 0 és 1 karaktereket tömörít. Például ilyeneket: 00000000001111000000000000001111111110000011111111010101000000000


Úgy szeretném, hogy ha nyolc egyforma van egymás után, akkor azt úgy írja ki, hogy egy bájtos leírót használ. Ahol is a tömörített leírójának balról első bitje egy, a második bitje 0, ha nullákat és 1 ha egyeseket tömörít. A további hat bit meg azt írja le, ahány darab van tömörítve. Ha mondjuk 10 és mind egyes, akkor a leíró bájt ilyen: 11001010

Ha mondjuk 14 és mind nulla, akkor meg ilyen: 10001110


Ha nem tömörít, mert nincs legalább nyolc egyforma, akkor a leíró első bitje 0 legyen és a többi bit a hét karakteres szekvenciának megfelelően az érkező nullák és egyesek sora.

mondjuk 0100110 esetében a leíró ilyen: 00100110


Az egészet freepascalban szeretném megcsinálni. Köszönök minden segitséget.



#Free Pascal #tömöritő #futamhossz
2023. jún. 11. 14:45
1 2
 1/12 A kérdező kommentje:

Nem tudom, mennyire lett érthető?


Az érkező karakterek szekvenciáját mindig egy bájttal írja le. Ez a leíró a nyolc bitből egyet, balról az elsőt arra használ, hogy azt mutassa, tömörített a tartalma, vagy sem. Ha tömörített, akkor mindig egyes, ha nem az, akkor mindig nulla.


1....... Ez tömöritett.

0....... Ez meg nem.


Ha nincs tömörítve, akkor az első nulla után csak a hét darab nullákból és egyesekből álló, addig elemzett karakterek jönnek.

Tehát, ha például ez lesz beolvasva, hogy 0100110, akor a leíró tartalma ugyanez, csak elő kerül egy nulla is. 0 0100110, jelezve, hogy nem tömöritett.


A tömörített pedig úgy néz ki, hogy az első bit mindig 1, ami jelzi, hogy tömörített adat, a második bit 0 ha nullákat és 1 ha egyeseket tömörít a leíró, a többi hat bit meg a darabszámukat jelzi.

2023. jún. 11. 15:00
 2/12 anonim ***** válasza:

Hát ez egy alvariánsa lenne a létező Huffman-kódolónak, csak bitszintre levetítve szerintem. Nézz annak utána esetleg.

De amúgy leírtad nagyon pontosan mit szeretnél, akkor mi a gond?

Hogy valaki írja meg neked???

2023. jún. 11. 16:04
Hasznos számodra ez a válasz?
 3/12 A kérdező kommentje:

Ez nem Huffmann.

Nem azt szeretném, hogy írja meg valaki, hanem azt, hogy a program optimális struktúráját megkapjam.

2023. jún. 11. 16:33
 4/12 anonim ***** válasza:

Kicsit megvadítottad a futáshossz-kódolást, úgy látom. :-)

De a kulcsszó a bitműveletek. Ha csak egy bitre vagy kíváncsi, akkor az értéket "ÉS" kapcsolatba hozod egy olyan értékkel (úgynevezett maszkkal), aminek csak azon bitje 1-es, amelyik bitre kíváncsi vagy. Tehát ha te a bájt első bitjére vagy kíváncsi, akkor 128-cal ÉS-ezed, és ha az eredmény nulla, akkor az a bit nulla volt, ha nem nulla (jelen esetben 128), akkor meg 1-es volt a bit. Ugyanezt meg tudod csinálni a 2. bittel is, csak akkor 64-el kell ÉS-ezned. Ha pedig az első 2 bit kivételével vagy kíváncsi a szám értékére, akkor meg 63-mal (bináris: 00111111) ÉS-ezed.

2023. jún. 11. 16:54
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:

"a program optimális struktúráját megkapjam"

Ez alatt mit értesz?

2023. jún. 11. 16:54
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:
44%

00000000000000000000001111111111000000000000000000000000111111111111111111111111111100011000011100000000


10010110

11001010

10011000

11011100

00001100

00011100

0000000.

2023. jún. 13. 02:47
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
44%

00000000001111000000000000001111111110000011111111010101000000000


10001010

01111000

10001011

11001001

00000011

01111110

01010100

00000000

2023. jún. 13. 02:58
Hasznos számodra ez a válasz?
 8/12 anonim válasza:

"a program optimális struktúráját megkapjam"

wat?!

2023. jún. 14. 21:31
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
Van olyan, hogy a fejlesztő útja ki van kövezve. Neki azon csak végig kell menni. Ez az eset más. Ezt a feladatot sokféleképpen meg lehet valósítani. Különböző adatszerkezetekkel, más és más logikai felépítéssel. Ezek közül van ami az optimálishoz közelebbi. A kérdező talán erre gondolhatott.
2023. jún. 15. 11:13
 10/12 anonim ***** válasza:
Profilt kellett volna váltani, Delfi papper! 🤣
2023. jún. 15. 11:40
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!