Aufgabe 2

main
s.eser 2024-05-31 11:41:34 +02:00
parent 052e1b34ed
commit 66d220ebc5
3 changed files with 33 additions and 12 deletions

BIN
Aufgabe1_2 100755

Binary file not shown.

View File

@ -1,10 +1,11 @@
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <fstream>
// Template für flexiblen Array Typ // Template für flexiblen Array Typ
template <typename T> template <typename T>
class Container { class Container {
private: public:
// T-Pointer für Inhalt des Array // T-Pointer für Inhalt des Array
T* data; T* data;
// int für Größe des Array // int für Größe des Array
@ -22,13 +23,10 @@ private:
delete[] data; delete[] data;
// Array Inhalt von Objekt Instanz auf T-Pointer von Übergangsarray linken // Array Inhalt von Objekt Instanz auf T-Pointer von Übergangsarray linken
data = new_data; data = new_data;
// Speicherfreigabe vom Übergangsarray
delete[] new_data;
// Aktualisieren der Array Größe der Instanz // Aktualisieren der Array Größe der Instanz
arr_size = new_arr_size; arr_size = new_arr_size;
} }
public:
// Konstruktor mit Anfangsarraygröße als Parameter // Konstruktor mit Anfangsarraygröße als Parameter
Container(int initial_arr_size){ Container(int initial_arr_size){
// Array Größe der Instanz initialisieren // Array Größe der Instanz initialisieren
@ -61,15 +59,38 @@ public:
int main() { int main() {
Container<std::string> container(10); Container<char> wavData(0);
printf("%d\n", container.getArraySize()); // Pointer auf test.wav
FILE* input;
// Variable zum Abspeichern von Byte Größe der wav Datei
long num_bytes;
container[15] = "Test"; // Öffnen der test.wav Datei in input mit Leserechten
input = fopen("test.wav", "r");
std::cout << "container[15]: " << container[15] << std::endl; // Wenn test.wav Datei nicht existiert Abbruch
if(input == NULL)
return 1;
printf("%d\n", container.getArraySize()); // Setzen von FILE Pointer auf Ende der Datei
fseek(input, 0, SEEK_END);
// Abspeichern der Byte Größe mithilfe von input Pointer Position
num_bytes = ftell(input);
// Rücksetzen von FILE Pointer auf Anfang der Datei
fseek(input, 0, SEEK_SET);
// Überladener [] Operator zur dynamischen Speicherreservierung
wavData[num_bytes*sizeof(char)-1];
// Einlesen der Datei mit num_bytes * sizeof(char) und Abspeichern in wavData Array
fread(wavData.data, sizeof(char), num_bytes, input);
// Freigabe des FILE Pointer
fclose(input);
std::cout << "wavData: " << wavData.getArraySize() << std::endl;
return 0; return 0;
}; };

BIN
test.wav 100644

Binary file not shown.