Итак, я открыл файл CSV и добавил его в структуру. Я хочу найти самое высокое / самое низкое значение в третьем столбце и самое высокое / самое низкое значение в четвертом столбце. Затем распечатайте каждую строку, где они встречаются.
typedef struct {
float xvalue;
float yvalue;
float uvalue;
float vvalue;
} flow_data;
Здесь добавляется файл CSV -
int total = 0;
flow_data d;
flow_data* dataset = NULL;
while(4 == fscanf(fp, "%f, %f, %f, %f\n", &d.xvalue, &d.yvalue, &d.uvalue, &d.vvalue))
{
dataset = realloc(dataset, sizeof(*dataset) * (total + 1));
dataset[total] = d;
total++;
}
И операция, я знаю, что это нелепый способ делать вещи, но я не уверен, как сделать его более эффективным. Как бы я добавил все в функцию? Можете ли вы передать всю структуру в функцию?
float minvalueu = 100000, maxvalueu = 0;
float minvaluev = 100000, maxvaluev = 0;
int ivalueofminu = 0, ivalueofmaxu = 0;
int ivalueofminv = 0, ivalueofmaxv = 0;
for(int i = 0; i < total; i++)
{
flow_data* p = &dataset[i];
if ( p->uvalue > maxvalueu)
{
maxvalueu = p->uvalue;
ivalueofmaxu = i;
}
if ( p->uvalue < minvalueu)
{
minvalueu = p->uvalue;
ivalueofminu = i;
}
if ( p->vvalue > maxvaluev)
{
maxvaluev = p->vvalue;
ivalueofmaxv = i;
}
if ( p->vvalue < minvaluev)
{
minvaluev = p->uvalue;
ivalueofminv = i;
}
printf("%.7f, %.7f, %.7f, %.7f\n", p->xvalue, p->yvalue, p->vvalue, p->uvalue);
}
flow_data* z = &dataset[ivalueofmaxu];
printf("Max of U - %.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->vvalue, z->uvalue);
z = &dataset[ivalueofminu];
printf("Min of U - %.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->vvalue, z->uvalue);
z = &dataset[ivalueofmaxv];
printf("Max of V - %.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->vvalue, z->uvalue);
z = &dataset[ivalueofminu];
printf("Min of V - %.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->vvalue, z->uvalue);