fork download
  1. #include <cstdio>
  2.  
  3. struct v3d
  4. {
  5. double x, y, z;
  6. };
  7.  
  8. struct v3d_mr // multiplication result
  9. {
  10. double scalar;
  11. v3d vector;
  12.  
  13. operator double () { return this->scalar; }
  14. operator v3d () { return this->vector; }
  15. };
  16.  
  17. v3d_mr operator * (const v3d &a, const v3d &b)
  18. {
  19. return
  20. {
  21. a.x*b.x + a.y*b.y + a.z*b.z,
  22. { a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - b.x*a.y }
  23. };
  24. }
  25.  
  26. int main()
  27. {
  28. v3d a = {1, 2, 3}, b = {4, 5, 6};
  29.  
  30. double s = a * b;
  31. v3d v = a * b;
  32.  
  33. printf("%lf\n", s);
  34. printf("%lf %lf %lf\n", v.x, v.y, v.z);
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
32.000000
-3.000000 6.000000 -3.000000