2013-06-29 3 views
0

Итак, у меня есть массив 10x10, который мне нужно перевернуть и распечатать. Я сделал эту функцию, чтобы сделать только чтоИзменение значений массива в функциях

void flip(int d[][10], int rows) 
{ 
    int temp, x, y, cols; 

    cols=rows; 

    for(x=0; x<rows; x++) 
    { 
     for(y=0; y<cols; y++) 
     { 
      temp=d[x][y]; 
      d[x][y]=d[y][x]; 
      d[y][x]=temp 
     } 
    } 
} 

Теперь я знаю, что массивы передаются по ссылке, но я где-то читал, что сам массивы действуют как указатели, так что вы не должны использовать указатель обозначения, кажется правильным. Моя проблема в том, что когда я пытаюсь распечатать его после его перелиста, он не печатает перевернутый массив, но выводит оригинал, заставляя меня думать, что он не переворачивает исходный массив.

Вот функция печати.

void printArray(int d[][10]) 
{ 
    int rows, cols,x,y; 

    rows = sizeof(d[0])/sizeof(d[0][0]); 

     cols = rows; 

    for(x=0;x<rows; x++) 
    { 
     for(y=0;y<cols;y++) 
      printf("%2d ",d[x][y]); 
     printf("\n"); 
    } 
} 

Одд вещь, если поменять темп в «жесткий» значение как число 10, то это распечатать массив 10x10 с половины из них 10s. Я в недоумении здесь, почему простой подкачка не работает :(

ответ

2

Из того, что я могу сказать, по «флип» вы имеете в виду «транспонировать» ...

Кроме того, если вы разрабатываете код вручную, ваш код работает, но в два раза - ака, вы получаете исходную матрицу. Вы можете попробовать изменить внутренний цикл для начала, начиная с x, а не с нуля.

+0

Да, я действительно имею в виду транспонирование, и я дам вам попробовать Да, это сработало спасибо :) –