Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1 Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
1-64 Aufgaben und Lösungen 6 6 0 16=9 5 4 0100 6 66 - - 6 5 0101 1 1 6 661=A 66 6 0111 1 11 - - 61 7 0111 6 6 8 116=B 11 8 1000 6 66 - - 16 9 1001 1 661 - - 661 A 1010 1 1 A 6611=C 116 B 1011 6 6 5 16=D 6611 C 1100 6 66 - - 16 D 1101 1 661 - - 66116 E 1110 1 6611 - - 661166 F 1111 6 6 A 66116=E 6 66 - - 1 661 - - 1 6611 - - 6 66116 - - 6 6 E 661166=F 1 61 - - - - 7 - Dateigröße = 176 Bit Aufgabe 3.4.7 (P3) Schreiben Sie ein C-Programm zur Datenkompression durch Differenzcodierung unter Verwendung des in Tabelle 3.4.4 dargestellten Block-Codes mit 4 Bit Wortlänge. Packen Sie dazu jeweils zwei Codewörter in ein Byte. Lösung Die Tabelle der zu verwendenden Differnezen lautet: Differenz d Code _________________________ 0 0000 1 0001 -1 1001 2 0010 -2 1010 3 0011 -3 1011 4 0100 -4 1100 5 0101 -5 1101 6 0110 -6 1110 7 0111 -7 1111 |d|>7 1000 und danach 8 Bit für den Datenwert Da die Differenzen durch jeweils vier Bit dargestellt werden, lassen sich je zwei Differenzen in ein Byte packen. Die ist in dem nachfolgenden Programm realisiert. Das Packen und Entpacken wird durch vier am Anfang des Programms definierte Makros erledigt.
Aufgaben und Lösungen 1-65 //************************************************************************ // Aufgabe 3.4.7 // Kompression durch Differenz-Codierung // Differenz=0: Code=0000, // 1: 0001, -1: 1001, 2: 0010, -2: 1010, // 3: 0011, -3: 1011, 4: 0100, -4: 1100, // 5: 0101, -5: 1101, 6: 0110, -6: 1110, // 7: 0111, -7: 1111, |Differenz|>7: 1000 //------------------------------------------------------------------------ #include #include #include #include #include #define ESC 27 #define BYTE unsigned char #define MAXLINE 80 #define MAXDATA 800000 // Makros #define GETH4(x) ((x)>>4) // liefert 4 High-Bits von x #define GETL4(x) ((x)&15) // liefert 4 Low-Bits von x #define SETL4(x,y) (((x)&240)|((y)&15)) // kopiert L4 von y in L4 von x #define SETH4(x,y) (((x)&15) |((y)0) printf("Menge der gelesenen Daten: %d Byte",n); else printf("\n\nEs wurden keine Daten gelesen!"); } else if(c=='R') { // Code von Platte lesen nc=diskReadBytes(z); if(nc>0) printf("Menge der gelesenen Code-Zeichen: %d Byte",nc);
- Seite 13 und 14: Aufgaben und Lösungen 1-13 Aufgabe
- Seite 15 und 16: Aufgaben und Lösungen 1-15 Eine ge
- Seite 17 und 18: Aufgaben und Lösungen 1-17 Aufgabe
- Seite 19 und 20: Aufgaben und Lösungen 1-19 Aufgabe
- Seite 21 und 22: Aufgaben und Lösungen 1-21 Aufgabe
- Seite 23 und 24: Aufgaben und Lösungen 1-23 2 Nachr
- Seite 25 und 26: Aufgaben und Lösungen 1-25 2.2 Bio
- Seite 27 und 28: Aufgaben und Lösungen 1-27 Aufgabe
- Seite 29 und 30: Aufgaben und Lösungen 1-29 Bei Ver
- Seite 31 und 32: Aufgaben und Lösungen 1-31 Aufgabe
- Seite 33 und 34: Aufgaben und Lösungen 1-33 Aufgabe
- Seite 35 und 36: Aufgaben und Lösungen 1-35 Lösung
- Seite 37 und 38: Aufgaben und Lösungen 1-37 Fragen
- Seite 39 und 40: Aufgaben und Lösungen 1-39 } if(h[
- Seite 41 und 42: Aufgaben und Lösungen 1-41 3 Codie
- Seite 43 und 44: Aufgaben und Lösungen 1-43 3.2 Cod
- Seite 45 und 46: Aufgaben und Lösungen 1-45 x i w i
- Seite 47 und 48: Aufgaben und Lösungen 1-47 Aufgabe
- Seite 49 und 50: Aufgaben und Lösungen 1-49 Aufgabe
- Seite 51 und 52: Aufgaben und Lösungen 1-51 Modifik
- Seite 53 und 54: Aufgaben und Lösungen 1-53 Auftrit
- Seite 55 und 56: Aufgaben und Lösungen 1-55 Dieses
- Seite 57 und 58: Aufgaben und Lösungen 1-57 N 2/21
- Seite 59 und 60: Aufgaben und Lösungen 1-59 Der Cod
- Seite 61 und 62: Aufgaben und Lösungen 1-61 Aufgabe
- Seite 63: Aufgaben und Lösungen 1-63 2 2 8 2
- Seite 67 und 68: Aufgaben und Lösungen 1-67 } d=x[i
- Seite 69 und 70: Aufgaben und Lösungen 1-69 return
- Seite 71 und 72: Aufgaben und Lösungen 1-71 printf(
- Seite 73 und 74: Aufgaben und Lösungen 1-73 else pr
- Seite 75 und 76: Aufgaben und Lösungen 1-75 } print
- Seite 77 und 78: Aufgaben und Lösungen 1-77 } free(
- Seite 79 und 80: Aufgaben und Lösungen 1-79 3.5 Ver
- Seite 81 und 82: Aufgaben und Lösungen 1-81 Einsetz
- Seite 83 und 84: Aufgaben und Lösungen 1-83 Lösung
- Seite 85 und 86: Aufgaben und Lösungen 1-85 Axiom 1
- Seite 87 und 88: Aufgaben und Lösungen 1-87 Aufgabe
- Seite 89 und 90: Aufgaben und Lösungen 1-89 Aufgabe
- Seite 91 und 92: Aufgaben und Lösungen 1-91 Aufgabe
- Seite 93 und 94: Aufgaben und Lösungen 1-93 Lösung
- Seite 95: Aufgaben und Lösungen 1-95 C7 SUB
Aufgaben und <strong>Lösungen</strong> 1-65<br />
//************************************************************************<br />
// Aufgabe 3.4.7<br />
// Kompression durch Differenz-Codierung<br />
// Differenz=0: Code=0000,<br />
// 1: 0001, -1: 1001, 2: 0010, -2: 1010,<br />
// 3: 0011, -3: 1011, 4: 0100, -4: 1100,<br />
// 5: 0101, -5: 1101, 6: 0110, -6: 1110,<br />
// 7: 0111, -7: 1111, |Differenz|>7: 1000<br />
//------------------------------------------------------------------------<br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
#define ESC 27<br />
#define BYTE unsigned char<br />
#define MAXLINE 80<br />
#define MAXDATA 800000<br />
// Makros<br />
#define GETH4(x) ((x)>>4) // liefert 4 High-Bits von x<br />
#define GETL4(x) ((x)&15) // liefert 4 Low-Bits von x<br />
#define SETL4(x,y) (((x)&240)|((y)&15)) // kopiert L4 von y in L4 von x<br />
#define SETH4(x,y) (((x)&15) |((y)0) printf("Menge der gelesenen Daten: %d Byte",n);<br />
else printf("\n\nEs wurden keine Daten gelesen!");<br />
}<br />
else if(c=='R') { // Code von Platte lesen<br />
nc=diskReadBytes(z);<br />
if(nc>0) printf("Menge der gelesenen Code-Zeichen: %d Byte",nc);