稀稀落落:: 2022-03-17 17:56 采纳率: 100%
浏览 88
已结题

给二维数组赋值是什么导致了“写入访问冲突”,该如何处理?

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

在写螺旋方阵是发生的问题,是以1 开头的顺时针旋转的螺旋方阵

img


代码片在此

#include<iostream>
using namespace std;
#pragma once
class MATRIX
{
private:
    int (*a)[20];
    int startnum;
    int n;
public:
    MATRIX(int s, int m);
    void process();
    void print();
};



#include "MATRIX.h"

MATRIX::MATRIX(int s, int m)
{
    startnum = s;
    n = m;
}

void MATRIX::process()
{
    int i, b, c, d, e;
    int s;
    s = startnum; 
    for (i = 0; n / 2 > 0; i++, n - 2)
    {
        for (b = i; b < n + i; b++)        //上
        {
            a[i][b] = s;
            s++;
        }
        
        for (c = (i + 1); c < n + i; c++)        //右
        {
            a[c][b] = s;
            s++;
        }

        for (d = b - 1; d >= i; d--)//下
        {
            a[c][d] = s;
            s++;
        }
        for (e = c - 1; e > i; e--)  //左
        {
            a[e][i] = s;
            s++;
        }
    }
    
}


void MATRIX::print()
{
    for (int y = 0; y < n; y++)
    {
        for (int x = 0; x < n; x++)
            cout << a[y][x] << '\t';
        cout << '\n';
    }
}

#include"MATRIX.h"

int main()
{
    int s, m;
    cout << "请分别输入起始数及层数:";
    cin >> s >> m;
    MATRIX t(s, m);
    t.process();
    t.print();
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-03-17 18:26
    关注

    在循环中的n-2是没有意义的,n值不会改变,改为n=n-2,这是能看到的问题i
    不知道你二维数组有多大,没法判断行列是否越界

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?