从链表中计算数据,并将结果输出到C中的CSV文件中
我用C语言创建了一个程序,其中一个由坐标和位置ID组成的CSV文件被插入到一个链表中。然后我:从链表中计算数据,并将结果输出到C中的CSV文件中,c,printing,linked-list,output,C,Printing,Linked List,Output,我用C语言创建了一个程序,其中一个由坐标和位置ID组成的CSV文件被插入到一个链表中。然后我: 找到x坐标与ID相乘的最小值和最大值 找到y坐标与ID相乘的最小值和最大值 现在我必须将4个计算结果、相应的位置ID和x坐标打印到CSV文件中 我已经看过了关于如何实现这一点的各种教程,但它们只展示了如何将未修改的值从链表打印到输出文件中的方法 如果这真的让人困惑,很抱歉。如果你想让我澄清任何事情,请发表评论 #include <stdio.h> #include <stdlib
- 找到x坐标与ID相乘的最小值和最大值
- 找到y坐标与ID相乘的最小值和最大值
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <sys/time.h>
#include <string.h>
#define MAX 200
struct wake {
double x, y, u, v, id;
struct wake *next;
}*head;
typedef struct wake data;
void read_csv();
void minNode();
void maxNode();
int main(int argc, char *argv[]) {
read_csv();
}
void read_csv() {
// Opens the CSV datafile
FILE *fp = fopen("data2.csv", "r");
char buffer[MAX];
struct wake** tail = &head;
while (fgets(buffer, MAX, fp)) {
data *node = malloc(sizeof(data));
node->x = atof(strtok(buffer, ","));
node->y = atof(strtok(NULL, ","));
node->u = atof(strtok(NULL, ","));
node->v = atof(strtok(NULL, ","));
node->id = atof(strtok(NULL, ","));
node->next = NULL;
*tail = node;
tail = &node->next;
}
minNode();
maxNode();
}
void minNode() {
struct wake *current = head;
double x_id, y_id;
//double min;
if(head == NULL) {
printf("List is empty \n");
}
else {
//Initializing min with head node data
x_id = head->id*head->x;
y_id = head->id*head->y;
while(current != NULL){
//If current node's data is smaller than min
//Then, replace value of min with current node's data
if(x_id > current->id*current->x) {
x_id = current->id*current->x;
}
if(y_id > current->id*current->y) {
y_id = current->id*current->y;
}
current= current->next;
}
printf("Min x X id: %lf\n",x_id);
printf("Min y X id: %lf\n",y_id);
}
}
void maxNode() {
struct wake *current = head;
double x_id, y_id;
//double min;
if(head == NULL) {
printf("List is empty \n");
}
else {
//Initializing min with head node data
x_id = head->id*head->x;
y_id = head->id*head->y;
while(current != NULL){
//If current node's data is smaller than min
//Then, replace value of min with current node's data
if(x_id < current->id*current->x) {
x_id = current->id*current->x;
}
if(y_id < current->id*current->y) {
y_id = current->id*current->y;
}
current= current->next;
}
printf("Max x X id: %lf\n",x_id);
printf("Max y X id: %lf\n",y_id);
}
}
因此,您知道如何从链表中获取未修改的值。您可能知道如何将值相乘。你知道如何寻找最小值/最大值吗?如果没有找到的话。在这一点上,我真的不明白你的问题是什么。请关注您的具体问题。我的问题是:我必须将4个计算、相应的位置ID和x坐标打印到CSV文件中。对于4个计算中的每一个,我如何将其相应的ID和x坐标输出到CSV文件中?您知道如何将值写入ascii文件,不是吗?如果你不先找出答案,我想暗示的是
19.743748,-11.838155,1.083537,-0.003929,0.947989
19.810734,-11.838155,1.083533,-0.004183,0.947972
19.877850,-11.838155,1.083525,-0.004426,0.947953
19.945097,-11.838155,1.083514,-0.004656,0.947930
20.012476,-11.838155,1.083501,-0.004868,0.947904
20.079988,-11.838155,1.083488,-0.005062,0.947875
20.147631,-11.838155,1.083478,-0.005237,0.947844
20.215405,-11.838155,1.083475,-0.005394,0.947812