Pues eso, estaba mirandome una practica de la uni en la k me piden resolver un problema ( en C ) de vectores al que tu le pasas cargas y sus coordenadas y t calcula el vector campo electrico.. La cosa es k tengo k hacerlo por vectores.. todo mas o menos bien hasta k llega un momento en el k tras haber sumado todas las componentes de E y haber construido el vector E total, no puedo devolverlo con el return... me sale un error en el compilador k pone algo de tipos incompatibles "incompatible types of assignment" o algo así:
Para los vagos copio aki el cf:
#include <stdio.h>
#include <math.h>
#define k 8.98e9
float campo(float q[],float v[][2],int i);
int main() {
int i;
float q[1000],v[1000][2];
i=0;
float vet[1][2];
printf("\nDame una carga"); scanf("%f",&q);
while(q) {
printf("\nDame su coordenada x"); scanf("%f",&v[0]);
printf("\nDame su coordenada y"); scanf("%f",&v[1]);
//llamada a la funcion ,le paso cosas...
vet=campo(q,v,i);
i++;
printf("\nDame otra carga"); scanf("%f",&q[i]);
}
// una vez se ha acabado el bucle...
printf("El vector campo electrico en el punto 0,0 es : (%f, %f) N/C",vet[1][1],vet[1][2]);
// printf(" %f ",v[1][1]); //--< probando
printf("\nFIN");
getch(); return 0;
}
///////////------------------------//////////////////-----------////////
float campo(float q[],float v[][2],int i) {
//x = v[i][0] y = v[i][1]
int m,w;
float e[1000],r[1000],r2[1000],xe[1000],ye[1000];
float xet,yet,vet[1][2];
xet=0; yet=0;
/*
e=vector de los modulos , r= vector distancias r2=vector distancias al cuadrado ,
xe=vector componentes "x" de campo , ye=vector componentes "y" de campo ,
vet= vector campo total con suma de componentes x e y
vector xet= v. suma de comp x, vector yet= v. suma comp. y
*/
v[i][0]=v[i][0]*0.01;
v[i][1]=v[i][1]*0.01;
q[i]=q[i]*pow(10,-6); // pasar a culombios
r2[i]=v[i][0]*v[i][0]+v[i][1]*v[i][1]; // r2[i]=x*x+y*y
r[i]=sqrt(r2[i]); //r[i]=sqrt(r2)
e[i]=k*q[i]/r2[i];
xe[i]=e[i]*(-v[i][0]/r[i]); // x = v[i][0]
ye[i]=e[i]*(-v[i][1]/r[i]); // y = v[i][1]
// ahora sumo los campos electricos componente a componente
xet=xet+xe[i];
yet=yet+ye[i];
vet[1][1]=xet;
vet[1][2]=yet;
return vet; ///-----<<<--- Ahí esta el problema , no me coge el vector ni tp acepta la llamada ala funcion cuando le digo k vet=campo(... ) y tal :/.
}
PD : se me había olvidado decir k es lenguaje C xd..
A ver si podeis echarme una mano xD.
salu2 y gracias por adelantado.