Задать вопрос
@HoShik

Проблема с перестановками строк?

Написал программу для перестановки строк в двумерном массиве:
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

В чем беда?
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
array[pair[0]][1]=array[pair[1]][i];

Ошибка здесь. Вместо первой 1 должна быть i.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы