简体   繁体   English

将 c++ 中的两个负数相乘

[英]multiply two negative numbers in c++

when I tried to multiple two negative numbers the value it is zero in c++, for example -5 * -3 the result is zero, why?当我尝试将两个负数相乘时,c++ 中的值为零,例如 -5 * -3 结果为零,为什么? this is my code这是我的代码

  #include <bits/stdc++.h>
      #include <iostream>

   using namespace std;
     void Multiply(const int v_arr[], const int m_arr[][3], int signed 
  o_arr[], int size)

{ {

for (int i = 0; i < size; i++) {
    for (int j = 0; j < size; j++) {
        o_arr[i] = 0;
        for (int k = 0; k < 3; k++)
            o_arr[i] += v_arr[k] * m_arr[k][i];
    }
}

//End your code here
    }
    int main()
     {
  int n;
   cin >> n;
int v_array[n];
int m_array[n][3];
int signed o_array[3];
for (int i = 0; i < n; i++) {
    cin >> v_array[i];
}

for (int i = 0; i < n; i++) {
    for (int j = 0; j < 3; j++) {
        cin >> m_array[i][j];
    }
}

      //fuction
Multiply(v_array, m_array, o_array, n);
for (int j = 0; j < 3; j++) {
    cout << o_array[j] << " ";
   }
     return 0;
  }

how to fix it to get the correct result?如何修复它以获得正确的结果? the input is输入是

2 2 -3 2 -3 2 -4 2 2 -3 2 -3 2 -4

Your issue is here:你的问题在这里:

for (int k = 0; k < 3; k++)
    o_arr[i] += v_arr[k] * m_arr[k][i];
}

You access elements at indices 0 , 1 and 2 in v_arr , but it only has 2 elements.您可以访问v_arr中索引01处的元素,但它只有2个元素。 That's Undefined Behaviour.那是未定义的行为。

Assuming this is matrix*vector multiplication code, it should look like this (untested):假设这是矩阵*向量乘法代码,它应该看起来像这样(未经测试):

for (int k = 0; k < 3; k++)
    o_arr[k] += v_arr[i] * m_arr[i][k];
}

Also, your loop based on j is useless.此外,基于j的循环是无用的。 You can remove it:您可以删除它:

void Multiply(const int v_arr[], const int m_arr[][3], int signed o_arr[], int size)
{
    for(int k = 0; k < 3; k++) { //initialize output array
        o_arr[k] = 0;
    }
    for (int i = 0; i < size; i++) {
        for (int k = 0; k < 3; k++)
            o_arr[k] += v_arr[i] * m_arr[i][k];
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM