Problem B: 向量的运算

女爷i 2023-02-13 08:53 36阅读 0赞

这是山科oj的实验题。
我的代码很差,但是我想分享的部分是 << 重载的那部分。感觉稍微简洁一点,
时间比较短,所以不多做解释。
如果有人不懂欢迎在评论区讨论
大佬勿喷,欢迎指正。

  1. #include <iostream>
  2. using namespace std;
  3. class Vector
  4. {
  5. public:
  6. Vector() :x(0), y(0), z(0) {
  7. }
  8. Vector(int xx, int yy, int zz) :x(xx), y(yy), z(zz) {
  9. }
  10. friend istream& operator >> (istream& is, Vector& t) {
  11. is >> t.x >> t.y >> t.z;
  12. return is;
  13. }
  14. friend ostream& operator << (ostream& os, Vector& t) {
  15. // 在这里
  16. if (t.x == 0 && t.y == 0 && t.z == 0) cout << 0;
  17. else {
  18. if(t.x != 0){
  19. cout << t.x << 'i';
  20. }
  21. if(t.y != 0) {
  22. if (t.x != 0 && t.y > 0)
  23. cout << '+';
  24. cout << t.y << 'j';
  25. }
  26. if (t.z != 0) {
  27. if ((t.x != 0 || t.y != 0) && t.z > 0)
  28. cout << '+';
  29. cout << t.z << 'k';
  30. }
  31. }
  32. return os;
  33. }
  34. friend Vector operator + (const Vector& t1, const Vector& t2)
  35. {
  36. return Vector(t1.x + t2.x, t1.y + t2.y, t1.z + t2.z);
  37. }
  38. friend Vector operator - (const Vector& t1, const Vector& t2)
  39. {
  40. return Vector(t1.x - t2.x, t1.y - t2.y, t1.z - t2.z);
  41. }
  42. friend Vector operator * (const Vector& t1, const Vector& t2)
  43. {
  44. return Vector(t1.y*t2.z - t2.y*t1.z, t2.x*t1.z - t1.x*t2.z, t1.x*t2.y - t2.x*t1.y);
  45. }
  46. friend Vector operator * (const Vector& t1, int n)
  47. {
  48. return Vector(t1.x * n, t1.y * n, t1.z * n);
  49. }
  50. Vector operator = (const Vector& t) {
  51. x = t.x; y = t.y; z = t.z;
  52. return *this;
  53. }
  54. private:
  55. int x, y, z;
  56. };
  57. int main()
  58. {
  59. Vector vec1, vec2, vec3;
  60. int cases, n;
  61. cin >> cases;
  62. cout << "vect+vec2\tn*vec1\tvec1*vec2\n";
  63. for (int i = 0; i < cases; i++)
  64. {
  65. cin >> vec1 >> vec2 >> n;
  66. vec3 = vec1 + vec2;
  67. cout << vec3 << "\t";
  68. vec3 = vec1 * n;
  69. cout << vec3 << "\t";
  70. vec3 = vec1 * vec2;
  71. cout << vec3 << endl;
  72. }
  73. return 0;
  74. }

发表评论

表情:
评论列表 (有 0 条评论,36人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Problem B: 运算

    这是山科oj的实验题。 我的代码很差,但是我想分享的部分是 << 重载的那部分。感觉稍微简洁一点, 时间比较短,所以不多做解释。 如果有人不懂欢迎在评论区讨论