CMPS-4350 Advanced Software Engineering
Lab-5
Overview:
Copy files to your /4350/5 folder. Get the lab files from Odin at: /home/fac/gordon/p/4350/code/lab5/* Name your source file lab5.cpp
Write your LZ77 decoder. Use the knowledge you learned in our Monday lecture to write a decoder for a compressed LZ77 file. Use the following main function...int main(void) { char str[1000]; printf("\n\nCMPS-4350 Lab-5 decompression\n"); decode("banana.cmp", str); if (strcmp(str, "banana") != 0) printf("ERROR: decoding banana.cmp"); else printf("banana.cmp decoded correctly."); decode("apple.cmp", str); if (strcmp(str, "apple") != 0) printf("ERROR: decoding banana.cmp"); else printf("apple.cmp decoded correctly."); printf("\n"); // return 0; }
Homework.
Decode the following file.
/home/fac/gordon/p/4350/lab5/aart.cmp
1. The length of the uncompressed text is at the beginning of the file.
2. It is a number coded as ascii characters, followed by a null terminator.
3. The null terminator is the first zero of the first compressed code triplet.
4. All 3-character compression codes follow.
3-character compression code: onc
|||
||+---one additional character of text
|+----how many repeated characters are there
+-----offset into existing previous text
Get your decoder working.
Use the following main function for the homework...
int main(void)
{
char *str = new char[1000000];
printf("\n\nCMPS-4350 Lab-5 decompression\n\n");
decode("banana2.cmp", str);
if (strcmp(str, "banana") != 0) {
printf("ERROR: decoding banana. <-----\n");
} else {
printf("banana decoded correctly.\n");
}
decode("apple2.cmp", str);
if (strcmp(str, "apple") != 0) {
printf("ERROR: decoding apple. <-----\n");
} else {
printf("apple decoded correctly.\n");
}
printf("\n");
decode("aart.cmp", str);
printf("%s", str);
printf("\n");
delete [] str;
return 0;
}
//function prototype
void decode(const char *fname, char *str);