我有两个int
类型的数组。每个长约17901个元素。一个代表高度,另一个代表空速。我想划分两个数组(这个除法将产生马赫数)。我该怎么做?
这是我目前正在使用的代码:
for (i = 0; i < ((size / 2) + 1); i++) { // size/2 here is 17901
machNumber[i] = (ASarray[i] / soundspeed[i]);
}
答案 0 :(得分:1)
将((size/2)+1
替换为计算出的大小sizeof(ASarray)/sizeof(*ASarray)
这样,循环就会毫无疑问。当然,必须静态定义ASarray的大小(内存不得使用malloc分配)。
for(i = 0; i < sizeof(ASarray) / sizeof(*ASarray); i++) {
machNumber[i] = (ASarray[i] / soundspeed[i]);
}
答案 1 :(得分:0)
大小的一半不能正确计算元素的数量:您应该将数组的大小除以其元素的大小(以字节为单位)。此外,如果machNumber
是浮点类型且ASarray
和soundspeed
都不是,则需要使用强制转换来计算正确的Mach值:
for (size_t i = 0; i < sizeof(ASarray) / sizeof(ASarray[i]); i++) {
machNumber[i] = (double)ASarray[i] / soundspeed[i];
}