计算在多维阵列中不起作用
Calculations not working in Multidimensional array
我正在尝试执行一个程序,该程序将将每个数组列的第一个和最大数字之间的所有元素更改为0。这些程序有效,但我的结果错误。
这是输入文件:
3 5
2 3 5
1 2 4
4 1 3
6 1 2
5 8 1
这是结果文件:
2 0 0 6 5
3 0 0 0 8
5 4 3 2 1
,但我期望这样的结果:
2 3 5
0 0 4
0 0 3
6 0 2
5 8 1
我不确定我的代码是错误地读取/打印信息还是我不了解多维数组(我在编码方面是初学者)。任何帮助将不胜感激,谢谢。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int n, m, Z[100][100];
ifstream fr("input.txt");
ofstream fd("output.txt");
fr >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fr >> Z[i][j];
for (int i = 0; i < n; i++) {
int max = Z[0][0];
int NR = 0;
for (int j = 0; j < m; j++) {
if (Z[i][j] > max) {
max = Z[i][j];
NR = j;
}
}
for (int j = 1; j < NR; j++) {
Z[i][j] = 0;
}
}
for (int i = 0; i < n; i++) {
fd << endl;
for (int j = 0; j < m; j++)
fd << Z[i][j] << " ";
}
return 0;
}
只是交换M和N,请参阅下面的
fr >> m >> n;
编辑:
这是您的代码
for (int i = 0; i < n; i++) {
int max = Z[0][0];
int NR = 0;
for (int j = 0; j < m; j++) {
if (Z[i][j] > max) {
max = Z[i][j];
NR = j;
}
}
for (int j = 1; j < NR; j++) {
Z[i][j] = 0;
}
}
应该是:
for(int j = 0; j < m ; j++)
{
int max = Z[0][0];
int NR = 0;
for(int i = 0 ; i < n ; i++)
{
if(Z[i][j] > max)
{
max = Z[i][j];
NR = i;
}
}
for(int i = 1 ; i < NR ; i++)
{
Z[i][j] = 0;
}
}
您正在从每一行中找到最大值,需要从每一列找到。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 当我的阵列达到一定大小时,Qt 不起作用
- 将一个阵列中的数据存储到另外两个阵列中不起作用
- C 排序字符串的动态阵列 - 排序不起作用
- MEMSET FUCTION在我的C 动态阵列初始化中不起作用
- 计算在多维阵列中不起作用
- 旋转顶点阵列对象不起作用
- 为什么这个代码不起作用?( &阵列在原型中)