Возникли проблемы с преобразованием этого одномерного массива в двумерный массив в C

#dev-c

Вопрос:

Это программа, которая просит пользователя ввести 20 чисел, а затем расположить их в 2-мерном массиве в порядке возрастания. У меня возникли проблемы с преобразованием 1-мерного массива в 2-мерный массив. Выходные данные выводятся в двухмерный массив с одинаковыми значениями.

 #includelt;iostreamgt;  #includelt;iomanipgt;  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()  {   coutlt;lt;"Processing Bubble Sorting Technique..."lt;lt;endl  lt;lt;"Enter 20 elements"lt;lt;endl;     for (i=0;ilt;20;i  ) //input  {  coutlt;lt;"loc["lt;lt;ilt;lt;"]:";  cingt;gt;elements[i];  coutlt;lt;endl;  }   for (i=0;ilt;20;i  ) //process-bubble sorting  {  for (j=i 1;jlt;20;j  )  {  if (elements[j]lt;elements[i])  {  temp=elements[i];  elements[i]=elements[j];  elements[j]=temp;  }  }  }  //converting 1 dimensional array to 2 dimensional  coutlt;lt;"Ascending Order"lt;lt;endl;  for (count=0;countlt;20;count  )  {  for (i=0;ilt;sizeRow;i  )  {  for(j=0;jlt;sizeCol;j  )  {  list[i][j]=elements[count];   }  }  }   //output  for (i=0;ilt;sizeRow;i  )  {  for(j=0;jlt;sizeCol;j  )  {  coutlt;lt;leftlt;lt;setw(5)lt;lt;list[i][j]lt;lt;" ";  }  coutlt;lt;endl;  }  }  

Ответ №1:

Это ваш тройной вложенный цикл. Подумайте об этом; это будет назначать КАЖДЫЙ элемент КАЖДОМУ элементу исходящего массива.

Ты хочешь:

 for (count=0;countlt;20;count  ) {  int i = count / sizeCol;  int j = count % sizeCol;  list[i][j]=elements[count];  }