Notifications
Clear all

[Solved] 2.3.3

12 Posts
4 Users
0 Likes
562 Views
(@username)
Eminent Member
Joined: 4 years ago
Posts: 22
Topic starter  

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.


   
Quote
(@username)
Eminent Member
Joined: 4 years ago
Posts: 22
Topic starter  

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.


   
ReplyQuote
Guide
(@guide)
Vedúci cvičení - Task boss Admin
Joined: 5 years ago
Posts: 214
 

1. Mate pravdu, jedna sa o preklep.

2. Teraz som to naprogramoval od nuly zo suborom zo stranky a funguje to. Xorujete po znakoch?


   
ReplyQuote
(@username)
Eminent Member
Joined: 4 years ago
Posts: 22
Topic starter  

@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.

 


   
ReplyQuote
Guide
(@guide)
Vedúci cvičení - Task boss Admin
Joined: 5 years ago
Posts: 214
 

"V New Yorku," je spravne, dalej uz nie. Princip mate spravne. Ako funkciu pouzivate na citanie znakov?


   
ReplyQuote
(@username)
Eminent Member
Joined: 4 years ago
Posts: 22
Topic starter  

@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.

 


   
ReplyQuote
(@username)
Eminent Member
Joined: 4 years ago
Posts: 22
Topic starter  

Vymazanie ľavého obráteného otáznika pomohlo správne zobraziť ďalšie znaky.


   
ReplyQuote
(@username)
Eminent Member
Joined: 4 years ago
Posts: 22
Topic starter  

Zvyšok.


   
ReplyQuote
Guide
(@guide)
Vedúci cvičení - Task boss Admin
Joined: 5 years ago
Posts: 214
 

Skuste dat prec to "b" z rezimu a pouzite int.


   
ReplyQuote
(@username)
Eminent Member
Joined: 4 years ago
Posts: 22
Topic starter  

@guide Nepomohlo to, ani nový projekt.

 


   
ReplyQuote
Guide
(@guide)
Vedúci cvičení - Task boss Admin
Joined: 5 years ago
Posts: 214
 

@username

Poslite mi zdrojak na email, pozriem sa na to.

 


   
ReplyQuote
Guide
(@guide)
Vedúci cvičení - Task boss Admin
Joined: 5 years ago
Posts: 214
 

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.


   
ReplyQuote
Share:
Close Menu