当行和列的值是用户定义的时,在c++中追加行或列
append row or column in c++ when row and column values are user defined
当矩阵的大小在运行时决定时,我已经编写了这段代码来使用类执行以下任务,也就是说,我想将矩形矩阵创建为方形矩阵,这样附加的列或行将所有元素都作为1
5 4 5
2 3 1
至
5 4 5
2 3 1
1 1 1
class Array{
int **p,r,c;
public:
void setsize();
void read();
void print();
void createsqm();
};
void Array :: setsize()
{
cout<<" Enter rows and cols "<<endl;
cin>>r>>c;
if(r>c)
{
p = new int *[r];
for(int i =0; i<r; i++)
{
p[i] = new int [r];
}
}
else
{
p = new int *[c];
for(int i =0; i<c; i++)
{
p[i] = new int [c];
}
}
}
void Array :: read()
{
int i,j;
for(i=0;i<r;i++)
{
for(j=0; j<c; j++)
{
cin>>p[i][j];
}
}
}
void Array :: createsqm()
{
if (r>c)
{
int i,j;
for(i=0;i<r;i++)
{
for(j=c; j<r; j++)
p[i][j]=1;
}
}
else
{ int i,j;
for(j=0;j<c;j++)
{
for(i=r; i<c;i++)
p[i][j]=1;
}
}
}
我想知道我在哪里犯了错误
您的问题是:
我想知道我在哪里犯了错误
有几个层,你会在其中犯错误。
- 要求:
您希望在C++中实现一个数组,尽管所有内容(std::array
、std::vector
等(都可用。除非出于学术目的,否则不要这样做。
- 设计
您确实在C++中使用了new
和指针(用于自有内存(以及纯C风格数组。你不应该(必须(使用new
。此外,请永远不要对资源使用指针,比如拥有的内存。不要这样做。避免使用C样式数组。没有必要,而且它们很容易出错。
- 实现
硬错误:
createsqm将写越界。它会破坏内存。您的数组具有初始大小,并且您正在访问不存在的行或库。
您没有初始化变量
您使用的内存可能未分配。没有检查
在访问原始内存之前没有边界检查。这将导致您的代码出现问题。
- 其他
保持严格的范围界定。例如在for语句中定义循环可变,而不是在上面。
命名你的变量,这样任何人(例如3个月后的你(都可以理解代码。
不要打开完整的std
-命名空间
遵循一些编码标准和缩进标准。
相关文章:
- 如何在特定位置追加 json 文件
- 使用 swig 追加到字节数组
- 如何在不使用追加函数的情况下追加到字符串C++?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 了解 cin.fail() 和 cin.clear语言 - Vector 追加程序
- 文件追加的方式是,它在每次保存C++后结束行
- 追加位以增加字符的大小
- 在 c++ 中打开文件、删除标点符号并追加到另一个文件中
- 使用 sprintf 追加到字符数组
- 如何在Qt中合并/追加/添加两个用于线程的模型?
- 问:Apache Arrow 数组生成器不安全追加
- 字符串的异常行为会追加属性 C++
- 将数据追加到C++中的数组
- 附加作为空字符串的 ostream 可防止进一步追加
- 当行和列的值是用户定义的时,在c++中追加行或列
- 将数组追加到向量中
- 如何在预处理器时追加到__FILE__并包含结果
- 追加到 C++ 数组
- 函数路径追加上未解决的外部符号错误
- 尝试使用 RapidXML 将唯一的 XML 属性追加到节点