#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]; }