Я написал очень маленькую функцию в C. Функция должна читать две [долготы], [широта] матрицы местоположения. И моя цель состоит в том, чтобы выводить расстояния между ними и весовым массивом. Ниже приведен код, который я написал:Нельзя скрывать от 'double' до 'double [1]' in C
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
double hdist(double in1[][3], double in2[][3], double dout[][1], double wout[][1])
/* data input: in1, in2 */
/* output: dout, wout */
{
int i,j,k,rowin1,rowin2;
double lonH, latH;
rowin1=(sizeof(in1)/sizeof(in1[0])); // The number of observations for in1
rowin2=(sizeof(in2)/sizeof(in2[0])); // The number of observations for in2
k=0;
for(i=0;i<rowin1;i++) {
for(j=0;j<rowin2;j++) {
lonH = sin(0.5*(in1[i][0]-in2[i][0])*PI/180.0)
* sin(0.5*(in1[i][0]-in2[i][0])*PI/180.0);
latH = sin(0.5*(in1[i][1]-in2[i][1])*PI/180.0)
* sin(0.5*(in1[i][1]-in2[i][1])*PI/180.0);
/* distance in kilometers */
dout[k] = 0.001*6372797.560856*2*asin(sqrt(latH+(cos(in1[i][1]*PI/180.0)
* cos(in2[j][1]*PI/180))*lonH));
/* weights */
wout[k] = in1[i][3]*in2[j][3];
k++;
}
}
}
Я получил сообщение об ошибке в время компиляции:
dout2.c(21):error C2440: '=' : cannot convert from 'double' to 'double [1]'
dout2.c(23):error C2440: '=' : cannot convert from 'double' to 'double [1]'
бы вы пожалуйста, дайте мне знать, как пересмотреть код --- для вывода массивы «dout» и «wout»?
Почему люди голосуют за это? – onemasse
возможно из-за его крайней неприязни к пробелу? Во всяком случае, я ненавижу горизонтальную прокрутку. – Deduplicator
Это не мой вопрос. :) И, может быть, это ваше крайнее отвращение к отсутствию пробелов, что является проблемой.;) – onemasse