C++ 对数组使用算术
两个量u和v称为直角,如果 nuv=u1v1+u2v2+u3v3+u4v4+unvn=0 编写一个函数,计算u和v是否成直角。如果愿意,可以使用数组。该函数可以假设向量具有相同的维数(例如,n),但该数字应作为参数传递给该函数 我的程序有一些错误。我是初学者,非常感谢你的帮助。错误告诉我: 在函数“void function(int*,int*)”中,C++ 对数组使用算术,c++,arrays,pointers,assignment-operator,C++,Arrays,Pointers,Assignment Operator,两个量u和v称为直角,如果 nuv=u1v1+u2v2+u3v3+u4v4+unvn=0 编写一个函数,计算u和v是否成直角。如果愿意,可以使用数组。该函数可以假设向量具有相同的维数(例如,n),但该数字应作为参数传递给该函数 我的程序有一些错误。我是初学者,非常感谢你的帮助。错误告诉我: 在函数“void function(int*,int*)”中, cpp 26:应为错误“;”在“}”标记之前 cpp 29:错误;作为赋值的左操作数所需的值 (array[i]*array2[i]) + (a
cpp 26:应为错误“;”在“}”标记之前
cpp 29:错误;作为赋值的左操作数所需的值
(array[i]*array2[i]) + (array[i+1]*array2[i+1]) = multiple;
#包括
使用名称空间std;
常数int n=5;
空洞函数(int-array[n],int-array2[n]);
int main(){
int数组[n]={5,3,-4,2,8};
int-array2[n]={-7,-9,5,2,9};
函数(数组,array2);
返回0;
}
void函数(int数组[n],int数组2[n]){
整数倍;
for(int i=0;i语法错误是您以这种方式使用for
循环的地方:
for(int i=0;i<=5,i++)
for(int i=0;i语法错误是您以这种方式使用for
循环的地方:
for(int i=0;i<=5,i++)
for(int i=0;i您的for
循环格式不正确。您需要使用您的for
循环格式不正确。您需要使用
该函数可以假设向量具有相同的维数(n,
例如),但该数字应作为参数传递给
功能
此函数声明
void function(int array[n],int array2[n]);
不包括指定数组维度的参数
上述声明等同于
void function(int *array,int *array2);
因为通过值传递的数组隐式转换为指向其第一个元素的指针
这个for语句中有一个输入错误和一个bug
for(int i=0; i <=5, i++)
^^^^^^
未初始化,此分配无效
(array[i]*array2[i]) + (array[i+1]*array2[i+1]) = multiple;
没有道理,与病情没有任何共同之处
nuv = u1v1 + u2v2 + u3v3 + u4v4 +………… + unvn = 0
看来你的意思是
#include <iostream>
bool function( const int array[], const int array2[], size_t n )
{
long long int product = 0;
for ( size_t i = 0; i < n; i++)
{
product += array[i] * array2[i];
}
return product == 0;
}
int main()
{
const size_t N = 5;
int array[N] = { 5, 3 , -4, 2, 8 };
int array2[N] = { -7, -9, 5, 2, 9 };
std::cout << "array and array2 are "
<< (function(array, array2, N) ? "" : "not ")
<< "at right angles"
<< std::endl;
return 0;
}
不是直角
但是这些阵列
int array[N] = { 5, 3 , -4, 2, 8 };
int array2[N] = { -7, -9, 5, 2, 9 };
int array[N] = { 5, 3 , -4, 1, 9 };
int array2[N] = { -7, -9, 5, 1, 9 };
它们成直角,试试看
该函数可以假设向量具有相同的维数(n,
例如),但该数字应作为参数传递给
功能
此函数声明
void function(int array[n],int array2[n]);
不包括指定数组维度的参数
上述声明等同于
void function(int *array,int *array2);
因为通过值传递的数组隐式转换为指向其第一个元素的指针
这个for语句中有一个输入错误和一个bug
for(int i=0; i <=5, i++)
^^^^^^
未初始化,此分配无效
(array[i]*array2[i]) + (array[i+1]*array2[i+1]) = multiple;
没有道理,与病情没有任何共同之处
nuv = u1v1 + u2v2 + u3v3 + u4v4 +………… + unvn = 0
看来你的意思是
#include <iostream>
bool function( const int array[], const int array2[], size_t n )
{
long long int product = 0;
for ( size_t i = 0; i < n; i++)
{
product += array[i] * array2[i];
}
return product == 0;
}
int main()
{
const size_t N = 5;
int array[N] = { 5, 3 , -4, 2, 8 };
int array2[N] = { -7, -9, 5, 2, 9 };
std::cout << "array and array2 are "
<< (function(array, array2, N) ? "" : "not ")
<< "at right angles"
<< std::endl;
return 0;
}
不是直角
但是这些阵列
int array[N] = { 5, 3 , -4, 2, 8 };
int array2[N] = { -7, -9, 5, 2, 9 };
int array[N] = { 5, 3 , -4, 1, 9 };
int array2[N] = { -7, -9, 5, 1, 9 };
是直角。试试.< /P> < P>备选:试试C++方式。使用STD::知道长度的数组。使用标准库提供的算法,如STD::
#include <iostream>
#include <algorithm>
#include <array>
#include <numeric>
int main()
{
using arr_t = std::array<int,5>;
arr_t arr1 = {5, 3 , -4, 2, 8};
arr_t arr2 = {-7, -9, 5, 2, 9};
int mult = std::inner_product( begin(arr1), end(arr1), begin(arr2), 0,
std::plus<>(), std::multiplies<>() );
std::cerr << mult << "\n";
}
#包括
#包括
#包括
#包括
int main()
{
使用arr_t=std::array;
arr_t arr1={5,3,-4,2,8};
arr_t arr2={-7,-9,5,2,9};
int mult=std::内部产品(开始(arr1)、结束(arr1)、开始(arr2)、0、,
std::plus(),std::multiplies());
STR::CURR 备选方案:尝试C++方式。使用STD::知道长度的数组。使用标准库提供的算法,如STD::
#include <iostream>
#include <algorithm>
#include <array>
#include <numeric>
int main()
{
using arr_t = std::array<int,5>;
arr_t arr1 = {5, 3 , -4, 2, 8};
arr_t arr2 = {-7, -9, 5, 2, 9};
int mult = std::inner_product( begin(arr1), end(arr1), begin(arr2), 0,
std::plus<>(), std::multiplies<>() );
std::cerr << mult << "\n";
}
#包括
#包括
#包括
#包括
int main()
{
使用arr_UT=std::array;
arr_t arr1={5,3,-4,2,8};
arr_t arr2={-7,-9,5,2,9};
int mult=std::内部产品(开始(arr1)、结束(arr1)、开始(arr2)、0、,
std::plus(),std::multiplies());
cerr将倍数初始化为零;然后将倍数+=(..)不要调用你的函数函数
。把它叫做一个有意义的名字,比如DotProduct
,我将倍数初始化为零;然后将倍数+=(..)不要调用函数function
。请将其称为有意义的名称,如DotProduct
谢谢,我刚刚纠正了这个问题,我仍然对void函数(int*int*)有问题的左操作数需要29个左值assignment@ProgrammingNoob:这是因为您对多个
的赋值是反向的,这也是问题所在。谢谢我刚刚纠正了这一点,我仍然对void函数(int*int*)有问题的左操作数需要29个左值assignment@ProgrammingNoob:这是因为您对多个
的赋值是反向的,这也是问题所在。