TU-Programmieren_2/lab5/taskB.c
2025-04-09 10:22:44 +02:00

75 lines
2.1 KiB
C

/// @file
/// @brief Task B
/// gcc -g -fsanitize=address -std=c11 taskB.c -Imodules -o taskB && ./taskB
#include "iue-io/ccsv.h" // struct Table, table_append_copy, table_clear, iueio_savetxt, iueio_loadtxt
#include <stddef.h> // size_t
#include <stdio.h> // printf
int main() {
//writing Data manually
FILE *fpt;
fpt = fopen("table1m.csv","w+");
fprintf(fpt,"1e-10, 1e1, 1e10, 1e100\n");
fprintf(fpt,"2e-10, 2e1, 2e10, 2e100\n");
fprintf(fpt,"3e-10, 3e1, 3e10, 3e100\n");
fclose(fpt);
/// @todo use the functionality in 'iue-io/ccsv.h' to implement the following steps:
/// 1. create a table of type `struct Table` using the function
/// 'table_append_copy'
/// containing these values:
/// 1e-10, 1e1, 1e10, 1e100
/// 2e-10, 2e1, 2e10, 2e100
/// 3e-10, 3e1, 3e10, 3e100
/// 2. save the table as 'table1.csv' using the function 'iueio_savetxt')
/// - use ',' as separator
/// - use '#' as comment
/// 3. load the just saved table again using 'iueio_loadtxt'
/// 4. multiply each value in the table by 1.001
/// 5. store the modified table as 'table2.csv'
/// 6. use 'table_clear' appropriately at the end of your program
double mult=1.001;
{// write
struct Table table1 = {NULL, 0};
double data[4] = {1e-10, 1e1, 1e10, 1e100};
double data1[4] = {2e-10, 2e1, 2e10, 2e100};
double data2[4] = {3e-10, 3e1, 3e10, 3e100};
table_append_copy(&table1, data, 4);
table_append_copy(&table1, data1, 4);
table_append_copy(&table1, data2, 4);
iueio_savetxt("table1.csv", &table1, ';',"", '#');
table_clear(&table1);
}
{ // read && write
struct Table table2 = {NULL, 0};
struct Table table3 = {NULL, 0};
iueio_loadtxt("table1.csv", &table2, ';', '#');
for (size_t i = 0; i != table2.n; ++i) {
double data[4];
for (size_t j = 0; j != table2.rows[i].n; ++j)
data[j]=(table2.rows[i].values[j])*1.001;
table_append_copy(&table3, data, 4);
}
iueio_savetxt("table2.csv", &table3, ';',"", '#');
table_clear(&table2);
table_clear(&table3);
}
return 0;
}