我是新手,在功能上不太好,我正在尝试解决这个问题:
假设
A
,B
,C
分别是大小为[M]
,[N]
和[M][N]
的整数数组。用户将输入数组A
和B
的值。用C ++编写一个用户定义的函数,通过添加C
和A
的元素来计算第三个数组B
。如果元素具有相同的索引号,它们将被相乘。C
的计算如下:-在函数中使用
A
,B
和C
作为参数。
下面是我对这个问题的尝试。
#include<iostream>
using namespace std;
void Mix(int(&A)[], int(&B)[], int(&C)[][100], int N, int M);
//dont understand why you used Q
int main()
{
//variable declaration
int A[100], B[100], C[100][100], n, m, l = 0;
//input of size of elements for first ararys
cout << "Enter number of elements you want to insert in first array: ";
cin >> n;
cout << "-----------------" << endl;
cout << "-----------------" << endl;
cout << "Enter your elements in ascending order" << endl;
//input the elements of the array
for (int i = 0; i < n; i++)
{
cout << "Enter element " << i + 1 << ":";
cin >> A[i];
}
cout << endl << endl;
//input of size of elements for first ararys
cout << "Enter number of elements you want to insert in second array: ";
cin >> m;
cout << "-----------------" << endl;
cout << "-----------------" << endl;
cout << "Enter your elements in descending order" << endl;
//input the elements of the array
for (int i = 0; i < m; i++)
{
cout << "Enter element " << i + 1 << ":";
cin >> B[i];
}
Mix(A, B, C, n, m);
cout << "\nThe Merged Array in Ascending Order" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
{
cout << C[i][j] << " ";
}
cout << "\n"; //endline never use endl its 10 times slower
}
system("pause");
return 0;
}
void Mix(int(&A)[], int(&B)[], int(&C)[][100], int N, int M)
{
// rows is the index for the B array, cols is index for A array
int rows = 0;
int cols = 0;
while (rows < M) {
while (cols < N) {
if (rows == cols) { // remember ==
C[rows][cols] = B[rows] * A[cols];
}
else {
C[rows][cols] = B[rows] + A[cols];
}
cols++; // increment here
}
rows++; // increment here
}
return;
}
以下是输出示例:
答案 0 :(得分:1)
为了使export function searchRequest(search){
return(dispatch)=>{
console.log('in search', search)
return axios.get(`http://localhost:4000/reports/${search}`)
.then(response => {
dispatch(searchInfo(response.data))
})
}
}
数组为二维,需要将其表示为C
,而不是C[100][100]
。那是第一步。接下来,在您的C[200]
函数中,您需要循环浏览Mix()
和A
的每个元素(例如两个B
循环)。您的行随着for
的变化而变化,而列也随着B
的变化而变化。包括对相同索引的检查,该索引将确定是将两个值相加还是相乘。
A
确保正确定义了数组,并按行和列打印出C数组以符合规范。
更新:如果要使用void Mix(int A[], int B[], int C[][], int N, int M) {
// rows is the index for the B array, cols is index for A array
for (int rows = 0; rows < M; rows++) {
for (int cols = 0; cols < N; cols++) {
if (rows == cols) { // remember ==
C[rows][cols] = B[rows] * A[cols];
} else {
C[rows][cols] = B[rows] + A[cols];
}
}
}
}
循环,我将默认解构while
循环并应用相同的逻辑:
for
我绝对会推荐void Mix(int A[], int B[], int C[][], int N, int M) {
// rows is the index for the B array, cols is index for A array
int rows = 0;
int cols = 0;
while (rows < M) {
while (cols < N) {
if (rows == cols) { // remember ==
C[rows][cols] = B[rows] * A[cols];
} else {
C[rows][cols] = B[rows] + A[cols];
}
cols++; // increment here
}
rows++; // increment here
}
}
循环方法,因为它更紧凑,但操作完全相同。
答案 1 :(得分:0)
您的代码有很多错误。首先,必须使用2个方括号声明2D数组,以便C [200] [200]。在Mix函数中,逻辑运算符是 <cache-container name="hibernate" module="org.infinispan.hibernate-cache">
<transport channel="omega-ee" lock-timeout="60000"/>
<global-state/>
<local-cache name="local-query">
<object-memory size="10000"/>
...etc...
中的==
而不是=
无论如何,这是您需要的功能:
if (A[I] = B[J])
答案 2 :(得分:0)
由于M
和N
是在运行时定义的,因此您真的想使用vector
s来表示它们。另外,考虑返回2D容器,以利用返回值的优化。
为简单起见,我将使用vector
个vector
编写一个示例(有关为何对玩具示例真正有用的更多信息,请参见What are the Issues with a vector-of-vectors?):>
vector<vector<int>> Mix(const vector<int>& A, const vector<int>& B) {
vector<vector<int>> result(size(B), vector<int>(size(A)));
for(size_t i = 0U; i < size(B); ++i) {
for(size_t j = 0U; j < size(A); ++j) {
result[i][j] = A[j] * B[i];
}
}
return result;
}
编辑:
如果必须使用数组,那么您将错过返回值优化的机会。在这种情况下,我只会选择此作为一个不错的选择:
void Mix(const int* A, const int* B, const size_t size_A, const size_t size_B)
{
for(size_t i = 0U; i < size_B; ++i) {
for(size_t j = 0U; j < size_A; ++j) {
cout << '[' << i << "][" << j << "]: " << A[j] * B[i] << '\t';
}
cout << endl;
}
}
int A[M]
和int B[N]
作为输入,int C[N][M]
作为输出,在这种情况下,您可以内联代码可能看起来像这样:for(size_t i = 0U; i < size(B); ++i) {
for(size_t j = 0U; j < size(A); ++j) {
C[i][j] = A[j] * B[i];
}
}