C++ 出现bug :二位数组的操作运算,求非对角线的元素的和

编写一个通用程序,求出二位数组(行数和列数必须相等)的非对角线的元素之和,试建立类MATRIX完成上述功能

#include<iostream>
using namespace std;

class MATRIX
{
        public:
                void mATRIX();
                void MATRIX_sum();
                void MATRIX_display();
                static int fact_len;//定义静态变量
        private:
                int sum;
                int a[40][40];
};

int MATRIX::fact_len = 0;

void MATRIX::mATRIX()//定义输入函数
{
        int i,j,fact_len;
        sum = 0;
        for(i = 0;i<fact_len;i++)
                for(j = 0;j<fact_len;j++)
                {
                        cin >> a[i][j];
                }
}

void MATRIX:: MATRIX_sum()//定义求和函数
{
        int i,j;//fact_len = 4;
        for(i = 0;i<fact_len;i++)
                for(j = 0;j<fact_len;j++)
                {
                        if((i ==j)||(i+j ==fact_len-1))
                                continue;
                        sum +=a[i][j];
                }
}
void MATRIX::MATRIX_display()//定义显示函数
{
        int i,j;
        for(i = 0;i<fact_len;i++)
        {
                for(j = 0;j<fact_len;j++)
                {
                        cout << a[i][j]<<"  ";
                }
                cout <<endl;
        }

        cout << "sum="<<sum<<endl;;
}

int main()
{
        MATRIX ARR_test;
        cout<<"please input the array you want to input:";
        cin>>MATRIX::fact_len;//改变静态变量
        ARR_test.mATRIX();//调用输入函数
        ARR_test.MATRIX_sum();//调用求和函数
        ARR_test.MATRIX_display();//调用显示函数

        return 0;
}

这个函数bug:

截图命令:gnome-screenshot -a

程序bug出现在我需要输入9*9的数组结果没有输入,直接输出a[9][9],不清楚哪里出问题类

C++ 出现bug :二位数组的操作运算,求非对角线的元素的和,布布扣,bubuko.com

时间: 2024-10-19 08:22:03

C++ 出现bug :二位数组的操作运算,求非对角线的元素的和的相关文章

C++程序设计实践指导1.2二维数组的操作运算改写要求实现

改写要求1:改写为以单链表表示二维数组 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode { int Row; int Column; int Data; LinkNode *next; }; class MATRIX { int m; int sum; public: struct LinkNode* creat(int x[][40],int k) { m=k; LinkNod

在控制台输入字母然后在控制台打印相应的二位数组字母,要求一行打印

1 package MyHomeWork; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Scanner; 6 7 /** 8 * Created by zhouyubin on 7/11/14. 9 */ 10 public class Test2 { 11 private static final char[][] print_a={{' ',' ',' ','A',' ',' ',' ','

二位数组环状最大子矩阵

由于上次二位数组,使用了函数,所以这次只要修改函数就可以了. //Powered by lzr! #include<iostream> using namespace std; int yiwei_max(int n,int a[]) { int temp=0,sum=-999999999; int j=0,k=0,i; for(i=0;i<n;i++) { if(temp>0) { temp+=a[i]; } else { temp=a[i]; if(a[i]>0 &

二位数组中的查找——杨氏矩阵

------------------------------------------------------------------------------------------------- "杨氏矩阵":即数组元素从左向右依次递增,从上到下依次递增.要想在该数组中查找数,首 先该数组得满足"杨氏矩阵"的特点.为了方便理解我们可以将一个二位数组看作是一个矩阵,假设i 为行,j为列,数组为str,那么只要满足(str[i][j]<str[i][j+1] &a

C:二维数组常用操作

/* 说明:程序实现二维数组中插入列.插入行.交换两个指定位置的元素,并输出指定 位置元素的变化轨迹 作者:socrates 日期:2014-08-17 */ #include "stdafx.h" #include <stdlib.h> #include <assert.h> /*二维数组最大行数和列数*/ #define MAX_ROW_NUM (9) #define MAX_COL_NUM (9) /*二维数组中各元素位置信息*/ typedef stru

二位数组传参及二位数组动态分配问题

//二位数组参数传递 //1. void display1(int arr[][4], const int rows) { for (int i = 0; i < rows; i++) { for (int j = 0; j < 4; j++) { cout << arr[i][j] << ' '; } cout << endl; } cout << endl; } //2. void display2(int(*parr)[4], const

从零学scala(二)数组相关操作、映射和元组

一:数组相关操作 定长数组 val array = Array[String]("a","b","c") //直接初始化数组的内容        println(array.mkString("|")) val array = new Array[String](2) //new一个长度为2的数据在通过更新的方法进行赋值        array.update(0, "0")        array.up

二位数组

一.题目及要求: 返回一个整数数组中最大子数组的和 输入一个二维整形数组,数组里有正数也有负数:二维数组首尾相接,像一条首尾相接的带子一样. 二.设计思路: 调用循环一维数组求最大子数组的函数,将二维数组列的情况全部列出,即转化为一维数组. 三.源代码 #include<iostream.h> int max2(int arry[],int length) //跨越arry[n-1].arry[0]的最大和 { int total=0; int sum=arry[0]; int minsum=

二位数组升级版

一.题目及要求: 返回一个整数数组中最大子数组的和 输入一个二维整形数组,数组里有正数也有负数:二维数组首尾相接,像一条首尾相接的带子一样. 二.设计思路: 这个题目其实与上次毫无区别,仍然调用循环一维数组求最大子数组的函数,将二维数组列的情况全 部列出,即转化为一维数组.a[0][0],a[0][0]a[0][1].........在调用函数即可. 三.源代码 #include<iostream.h> int max2(int arry[],int length) //跨越arry[n-1]