c++ - 在c ++中将两个不同维度的数组相乘
问题描述
对于我的任务,我必须将两个矩阵相乘以创建一个新矩阵。然后,我将从继承的类中对新的进行排序。我的问题是将两个不同维度的数组相乘的格式是什么,我的第一个数组a1d
是 5 个整数。我的另一个a2d
是 5x10 阵列。将它们相乘的正确方法是什么,因为它们的大小和尺寸不同。我是否将 a1d 乘以 a2d 的每一行?我要将产品输出到一维数组,以便排序更容易。我已将这两个数组绘制为表格以帮助我将其可视化。我将附上我的短代码和我的插图。这是在 C++ 中。
#pragma once
#include<ctime>
#include<iostream>
#include<cmath>
using namespace std;
class matrices
{
private:
int* a1d[5]; // Old Code:int* a1d = new int[5];
int** a2d = new int* [5];
public:
int* matrix;
matrices();
~matrices();
int* filla1d();
int* filla2d();
int* multiply();
};
int* matrices::filla1d() {
for (int i = 0; i < 5; i++) {
a1d[i] = new int;
}
for (int i = 0; i < 5; i++) {
*a1d[i] = rand() % 10 + 1;
}
return *a1d;
}
int* matrices::filla2d() {
for (int i = 0; i < 5; i++) {
a2d[i] = new int[10];
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 10; j++) {
a2d[i][j] = rand() % 10 + 1;
cout << a2d[i][j] << endl;
}
}
return *a2d;
}
int* matrices::multiply() {
}
要求我只使用指针类型变量和指针返回函数,尽管这并没有太大变化。我不知道它们应该如何相乘,因此,我不确定新数组大小的乘法会生成多少个值。提前致谢!
这是我设计的将它们相乘的方法。我改变了我的指针数组的分配方式。我现在的问题是它告诉我“表达式必须具有算术或无范围枚举类型”。我matrix[i] =(a1d[index1] * a2d[index1][index2]);
认为 a1d 可能需要是指针类型,但它给了我无法从 int* 转换为 int 的错误。
此外,当我调试时,我的a1d
和matrix
数组完美分配并在鼠标悬停时显示正确数量的数据槽。但是,a2d
在这种情况下,只显示一个指向 5 的指针。我按照我在网上看到的指针数组的语法来创建一个二维数组。
int* matrices::filla1d() {
for (int i = 0; i < 5; i++) {
a1d[i] = new int;
}
for (int i = 0; i < 5; i++) {
*a1d[i] = rand() % 10 + 1;
}
return *a1d;
}
int* matrices::filla2d() {
for (int i = 0; i < 5; i++) {
a2d[i] = new int[10];
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 10; j++) {
a2d[i][j] = rand() % 10 + 1;
}
}
return *a2d;
}
int* matrices::multiply() {
for (int i = 0; i < 50; i++) {
matrix[i] = new int;
}
int index1 = 0;
int index2 = 0;
for (int i = 0; i < 50; i++) {
matrix[i] = (a1d[index1] * a2d[index1][index2]);
index1++;
index2++;
}
return *matrix;
}
class matrices
{
private:
int* a1d[5];
int** a2d = new int*[5];
public:
int* matrix[50];
matrices();
~matrices();
int* filla1d();
int* filla2d();
int* multiply();
};
编辑2:
我更改了行以填充新matrix
的说
*matrix[i] = a2d[index1][index2] * *a1d[index1];
现在我在此行上收到访问冲突错误。我matrix
分配的方式与分配方式相同a1d
,什么会导致我的访问冲突?
解决方案
推荐阅读
- ruby-on-rails - 为什么 Rails 6 Stimulus Reflex 会重新渲染具有重复内容的页面?
- apache-zookeeper - 如何清除数据节点的所有子节点,但不删除 Zookeeper 中的数据节点本身?
- python - Tkinter simpledialog 中断 pygame.mouse.get_focused()
- javascript - 使用 Jest 模拟导出匿名函数的模块值
- html - 如何使用容器 (CSS) 将 twitter 嵌入“包装”到我自己的规格大小
- notepad++ - 启动时使用的 Notepad++ 工作区
- firebase - Firebase 数据库规则 - 这是必要的吗?
- python-3.x - How fast or slow is the Constant memory that Numba allows a device to allocate, when compared to local and shared memories?
- python - 如何构建一维 CNN
- python - 使用日期范围的 Scrapy Start URL