C++二维数组矩阵操作:行乘、列乘及求和
C++二维数组矩阵操作:行乘、列乘及求和
本文介绍如何使用C++对二维数组进行常见的矩阵操作,包括行乘、列乘和计算数组元素总和。
代码示例
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> a;
int n, m, k, y, x, z;
char s;
long long sum = 0;
int main() {
cin >> n >> m;
a.resize(n, vector<int>(m)); // 初始化二维数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
z = i * m + j;
a[i][j] = z;
}
}
cin >> k;
for (int i = 0; i < k; i++) {
cin >> s >> x >> y; // 使用cin读取字符
if (s == 'R') {
for (int j = 0; j < m; j++) {
a[x][j] *= y;
}
} else if (s == 'S') {
for (int j = 0; j < n; j++) {
a[j][x] *= y;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
sum += a[i][j];
}
}
cout << sum << endl;
return 0;
}
代码解释
- 初始化二维数组: 代码首先创建了一个二维数组
a,并使用resize()函数将其大小设置为n行m列。 - 输入数据: 代码读取矩阵的行数
n、列数m以及操作次数k。 - 执行操作: 循环执行
k次操作,每次操作读取一个字符s和两个整数x、y。- 如果
s为 'R',则将第x行所有元素乘以y。 - 如果
s为 'S',则将第x列所有元素乘以y。
- 如果
- 计算总和: 遍历整个数组,计算所有元素的总和
sum。 - 输出结果: 输出最终的总和
sum。
问题分析
原始代码中使用 getchar() 读取字符 s,但 getchar() 会读取空格、换行符等空白字符,导致无法正确读取字符。
解决方案
将 getchar() 替换为 cin >> s 可以解决这个问题,因为 cin >> s 会跳过空白字符,读取实际的字符输入。
原文地址: https://www.cveoy.top/t/topic/807 著作权归作者所有。请勿转载和采集!