按矩阵打印字母
printing the alphabet in order in a matrix
本文关键字:打印 更新时间:2023-10-16
现在我有这个代码
int main() {
int cols;
cout << "cols";
cin >> cols;
int rows;
cout << "rows";
cin >> rows;
char** charArray = new char*[rows];
for (int i = 0; i < rows; ++i) {
charArray[i] = new char[cols];
}
// Fill the array
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
charArray[i][j] = char('1' + i + j );
}
}
// Output the array
for (int i = 0; i < rows; ++i) {
for (int j = i; j < cols ; ++j) {
cout << charArray[i][j];
}
cout << endl;
}
// Deallocate memory by deleting
for (int i = 0; i < rows; ++i) {
delete[] charArray[i];
}
,输出就像1 2 32 3 4
我怎么能成为1 2 34 5 6
我尝试了很多,我是编程中的新手,所以您能解释一下这个问题怎么回事!非常感谢!
只需更改以下内容:
charArray[i][j] = char('1' + i + j );
:
charArray[i][j] = char('1' + i*cols + j);
btw:您在输出阵列循环中有错字:
for (int j = i; j < cols ; ++j) {
应该是:
for (int j = 0; j < cols ; ++j) {
数组填充环应为
int count = 0;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
charArray[i][j] = char('1' +count );
count++;
}
}
尝试上述代码
您正在构建一个矩阵,在这里。因此,这是二维。输出意味着您的矩阵看起来像:
1 2 3
2 3 4
这是自然的,因为在填充它时,您为坐标i,j的每个元素写入值为1 i j。这意味着,如果我和j都等于1(第二行,第二列,因为索引在0开始(,则将值放置为1 1 1 = 3。
如果要获得矩阵:
1 2 3
4 5 6
您必须用
填充它charArray[i][j] = char('1' + i*ncols + j );
这样,当您填充第一行时,i = 0,所以相同。但是在第二行上,i = 1,所以您得到1 3 0 = 4。然后1 3 1 = 5,等等。
编辑:人们在这里很快。当我写下答案时,已经有两个人发布了他们的答案:D
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何仅使用对象名称打印特定于对象的成员
- 回溯C++不打印函数,因此文件
- 在一定长度后从数组中打印时缺少整数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在gem5中打印文件中的所有cache_blocks
- 打印数字图案
- Log4cpp:以UTC/GMT时区打印日期
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数