Написал программу для перестановки строк в двумерном массиве:
void swap_lines(int n,int array[n][n])
{
genPair();
int temp;
for(int i=0;i<n;i++)
{
temp=array[pair[0]][i];
array[pair[0]][1]=array[pair[1]][i];
array[pair[1]][i]=temp;
}
}
genPair:
void genPair()
{
int random=rand()%9,random2;
pair[0]=random;
do
{
if(random>=6 && random <= 8) random2=6+rand()%(8-6+1);
if(random>=3 && random <= 5) random2=3+rand()%(5-3+1);
if(random>=0 && random <= 2) random2=0+rand()%(2-0+1);
}while(random==random2);
pair[1]=random2;
}
Но возникает проблема. Во время замены элемента из 2 столбца, в temp записывается значение элемента из 1 столбца.
Листинг:
1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
2 3 4 5 6 7 8 9 1
5 6 7 8 9 1 2 3 4
8 9 1 2 3 4 5 6 7
3 4 5 6 7 8 9 1 2
6 7 8 9 1 2 3 4 5
9 1 2 3 4 5 6 7 8
7 6 (строки которые будут "свапнуты)
6 6 3 (1 принтф на array[pair[0]][i], 2 temp, 3 array[pair[1]][i])
3 3 4 (место ошибки)
8 8 5 (все остальное - окей)
9 9 6
1 1 7
2 2 8
3 3 9
4 4 1
5 5 2
В чем беда?