[Solved] 2.3.3
Na diskovom poli som mal uložený text o škodlivosti alkoholu. Žiaľ, v dôsledku poruchy jedného z diskov sa text poškodil. Našťastie to bolo RAIDové pole, takže text je možné zrekonštruovať. Podarilo sa mi z pokazených diskov prečítať bloky, ktoré patrili súboru s textom. Bloky sú štyri, je medzi nimi aj ten pokazený. Všetko, čo sa podarilo zachrániť je k dispozícii zabalené tu. Zrekonštruujte chýbajúci text.
1.
Z textu vyplýva, že poškodený je jeden disk, potom sa ich spomína viacero.
2.
Vyzerá to tak, že nejaký súbor v liehoviny.zip je poškodený alebo nesprávny. Úplná rekoštrukcia textu nie je možná XOR metódou s 3 bajtmi s paritným diskom a dvoma funkčnými diskami. Funguje to len očividne po 15. znak - z ktorých vyjde zmysluplný kúsok vety. Vyskúšané na 2 platformách.
1. Mate pravdu, jedna sa o preklep.
2. Teraz som to naprogramoval od nuly zo suborom zo stranky a funguje to. Xorujete po znakoch?
@guide Áno, po znakoch z jednotlivých 3 diskov, pričom pokladám ten s X-kami za pokazený disk a ten neprečitateľný za paritný disk. Nechcem tu prezrádzať RAID štruktúru, ale pokazený disk sa dá dorátať ako exkluzívny súčet troch zvyšných funkčných diskov. Každý výsledný bajt je vypočítaný ako A ^ B ^ C. Ak by mi prvých niekoľko znakov nedávalo zmysluplnú časť vety ("V New-Yorku, pi" a zvyšok nezmysly), nebral by som to ako možný problém v samotných textových súboroch. Skúšal som aj v kratších cykloch a stále to prestane fungovať na tom istom znaku.
"V New Yorku," je spravne, dalej uz nie. Princip mate spravne. Ako funkciu pouzivate na citanie znakov?
@guide getc(), režimy "rb" a "wb" pri zápise, skúšal som aj meniť typy čítania/zápisu a premenných char/int signed/unsigned.
Otvoril som file04.txt a experimentálne vymazal neviditeľný znak (v špeciálnom textovom editore obrátený červený otáznik) a zrazu mi to vypočítalo aj kúsok zvyšnej vety, no stále s nejkými nevhodnými znakmi. "V New-Yorku, pi<merike, je asyl, to jesŹżohu}"... Ďalším mazaním iných znakov som sa nedopracoval k lepšiemu výsledku.
Vymazanie ľavého obráteného otáznika pomohlo správne zobraziť ďalšie znaky.
Skuste dat prec to "b" z rezimu a pouzite int.
Update - pre tych, ktori pracuju na tomto zadani. V sucasnej forme zadanie spravne funguje len na platforme Windows v textovom rezime. Pre zaujemcov - pricinou je rozdiel medzi spracuvanim textovych suborov medzi Windows a POSIX platformami https://stackoverflow.com/questions/36660282/fopen-what-is-the-b-flag
Doplnil som poznamku do zadania a student, ktory na problem upozornil ziskal bonusove body.
- 21 Forums
- 220 Topics
- 808 Posts
- 0 Online
- 7,045 Members