gpt4 book ai didi

圆形阵列人口

转载 作者:行者123 更新时间:2023-11-30 20:33:56 26 4
gpt4 key购买 nike

我有一个关于循环数组总体的问题,本质上我的代码将随机数据打印到一个名为 car_data 的 txt 文件中。我想知道是否有人可以帮助我理解为什么在add_it下和write_it我正在使用的功能 index%size ?下ptr[<argument>] 。我还有一个关于 add_it 的问题函数转到 ptr[index++] 的部分所以index会在 for 循环下的 main 中递增,以便可以填充数组吗?

谢谢大家!我只是想学习并且希望能得到任何清晰的说明

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct sdata{
int brake_fluid_pressure;
int electrical_power;
int driver_brake_pressure;
int pressure;
float time;
} Data_slice;

Data_slice make(int f, int p, int d, int e, float t){
Data_slice piece; //members for each type of data
piece.brake_fluid_pressure = f;
piece.pressure = p;
piece.driver_brake_pressure = d;
piece.electrical_power = e;
piece.time = t;
return piece;
}

int rand_gen(int min, int max);
int add_it(Data_slice * ptr, int size, int index);
void write_it(char *car_data, Data_slice ptr[], int size, int index);

int main()
{
srand(time(NULL));

Data_slice data[100];
int i;
int num = 0;

for (i=0; i<1177; i++){
num = add_it(data, 100, num);
}

write_it("car_data.txt", data, 100, num);
return(0);
}

int rand_gen(int min, int max){
return (rand() % (max + 1 - min)) + min;
}

int add_it(Data_slice * ptr, int size, int index){
Data_slice temp = make(rand_gen(20,30),
rand_gen(10, 15),
rand_gen(20,40),
rand_gen(10,100),
0);
index = index % size;
ptr[index++] = temp; //THIS PART I DO NOT UNDERSTAND!
return index;
}

void write_it(char *car_data, Data_slice ptr[], int size, int index){
FILE * fout = fopen("car_data.txt", "w");
if(fout == NULL){
printf("Error writing! Program will exit");
exit(0);
}
int i, ind;
float t = 0.1;
for(i=index; i<index+size; i++){
ind = i % size;
ptr[ind].time = t;
fprintf(fout, "%5.1f%20d%20d%20d%20d\n", ptr[ind].time,
ptr[ind].brake_fluid_pressure,
ptr[ind].pressure,
ptr[ind].driver_brake_pressure,
ptr[ind].electrical_power);
t += 0.1;
}
fclose(fout);
}

最佳答案

%取模运算符。 index % size 返回 index 除以 size 的余数。这用于使索引在超出数组大小时回绕到 0,这就是使数组成为“循环”的原因。

ptr[index++] = temp;

temp分配给ptr[index],然后递增index。然后,函数返回 index 的更新值,main 将其分配回 num 变量。

关于圆形阵列人口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43665981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com