在 C++ 中将此一维数组转换为二维数组时遇到问题
Having trouble with converting this one dimensional array to a two dimensional array in C++
这是一个要求用户输入 20 个数字,然后将它们按升序排列在二维数组中的程序。我在将一维数组转换为二维数组时遇到问题。将结果输出成一个二维数组,具有相同的值。
#include<iostream>
#include<iomanip>
using namespace std;
//global
int i,j,count;
int row,col;
const int sizeRow=4;
const int sizeCol=5;
int list[sizeRow][sizeCol];
int elements[20];
int temp;
int main()
{
cout<<"Processing Bubble Sorting Technique..."<<endl
<<"Enter 20 elements"<<endl;
for (i=0;i<20;i++) //input
{
cout<<"loc["<<i<<"]:";
cin>>elements[i];
cout<<endl;
}
for (i=0;i<20;i++) //process-bubble sorting
{
for (j=i+1;j<20;j++)
{
if (elements[j]<elements[i])
{
temp=elements[i];
elements[i]=elements[j];
elements[j]=temp;
}
}
}
//converting 1 dimensional array to 2 dimensional
cout<<"Ascending Order"<<endl;
for (count=0;count<20;count++)
{
for (i=0;i<sizeRow;i++)
{
for(j=0;j<sizeCol;j++)
{
list[i][j]=elements[count];
}
}
}
//output
for (i=0;i<sizeRow;i++)
{
for(j=0;j<sizeCol;j++)
{
cout<<left<<setw(5)<<list[i][j]<<" ";
}
cout<<endl;
}
}
这是你的三重嵌套循环。想一想;它将把每个元素分配给传出数组的每个元素。
你想要:
for (count=0;count<20;count++)
{
int i = count / sizeCol;
int j = count % sizeCol;
list[i][j]=elements[count];
}
这是一个要求用户输入 20 个数字,然后将它们按升序排列在二维数组中的程序。我在将一维数组转换为二维数组时遇到问题。将结果输出成一个二维数组,具有相同的值。
#include<iostream>
#include<iomanip>
using namespace std;
//global
int i,j,count;
int row,col;
const int sizeRow=4;
const int sizeCol=5;
int list[sizeRow][sizeCol];
int elements[20];
int temp;
int main()
{
cout<<"Processing Bubble Sorting Technique..."<<endl
<<"Enter 20 elements"<<endl;
for (i=0;i<20;i++) //input
{
cout<<"loc["<<i<<"]:";
cin>>elements[i];
cout<<endl;
}
for (i=0;i<20;i++) //process-bubble sorting
{
for (j=i+1;j<20;j++)
{
if (elements[j]<elements[i])
{
temp=elements[i];
elements[i]=elements[j];
elements[j]=temp;
}
}
}
//converting 1 dimensional array to 2 dimensional
cout<<"Ascending Order"<<endl;
for (count=0;count<20;count++)
{
for (i=0;i<sizeRow;i++)
{
for(j=0;j<sizeCol;j++)
{
list[i][j]=elements[count];
}
}
}
//output
for (i=0;i<sizeRow;i++)
{
for(j=0;j<sizeCol;j++)
{
cout<<left<<setw(5)<<list[i][j]<<" ";
}
cout<<endl;
}
}
这是你的三重嵌套循环。想一想;它将把每个元素分配给传出数组的每个元素。
你想要:
for (count=0;count<20;count++)
{
int i = count / sizeCol;
int j = count % sizeCol;
list[i][j]=elements[count];
}