double simcos(vector<pair<long long int, long long int> > & a, vector<pair<long long int, long long int> > & b){ long long int resI; if(a.size() >= b.size()) resI = productoPunto(a, b); else resI = productoPunto(b, a); double mods = sqrt(modulo(a))*sqrt(modulo(b)); double res = (double)resI / mods; //quiza los modulos deberian estar precalculados, al menos el del vector con el que estoy comparando no lo deberia calcular siempre return res; // y hacer el return defrente }
int main(void){ v3d v1, v2; printf("Dame v1.x: "); scanf("%d", &v1.x); printf("Dame v1.y: "); scanf("%d", &v1.y); printf("Dame v1.z: "); scanf("%d", &v1.z); printf("Dame v2.x: "); scanf("%d", &v2.x); printf("Dame v2.y: "); scanf("%d", &v2.y); printf("Dame v2.z: "); scanf("%d", &v2.z); v3d c= suma(v1, v2); int pp= productoPunto(v1, v2); printf("Suma (%d, %d, %d) + (%d, %d, %d) = (%d, %d, %d)\n", v1.x, v1.y, v1.z, v2.x, v2.y, v2.z, c.x, c.y, c.z); printf("Producto punto (%d, %d, %d) . (%d, %d, %d) = %d\n", v1.x, v1.y, v1.z, v2.x, v2.y, v2.z, pp); return 0; }