Консультация № 172942
05.10.2009, 21:44
0.00 руб.
0 1 1
Зравствуйте уважаемые эксперты!
Помогите разобраться с задачкой:

Дана матрица А (N, M) из целых чисел.
Элементы первого столбца упорядочить по убыванию.
Включить массив В (М) в качестве новой строки в матрицу А
с сохранением упорядоченности по элементам первого столбца

Приложение:
int rnd;
int a;
int N=6,M=4;
int A[][]=new int [N][M];
for (int i=0;i<A.length;i++){
for(int j=0;j<A[0].length;j++){
rnd=(int)(Math.random()*100);
A[i][j]=rnd;
}
}
for (int i=0;i<A.length;i++){
int col=0;

for ( i = 0; i < N; i++){
for (int j = i + 1; j < N; j++){
if (A[i] [col] < A[j] [col]) {
a = A [i] [col];
A [i] [col] = A [j] [col];
A [j] [col] = a;

}

}

}
}

int rnd1;
int B[]=new int [M];
for (int b = 0; b<B.length ; b++){
rnd1=(int)(Math.random()*100);
B[b]=rnd1;
}


// Здесь не могу разобрться как вставить новую строку

while (A[i][col]>B[col]);
for (i=N; i<6; i--){
for (int j=0; j<M; j++){
A[i][j]=A[i-1][j];

}

}

}


}
}

Обсуждение

Неизвестный
07.10.2009, 21:50
общий
это ответ
Здравствуйте, Sky-er.
Я бы сделал так: 1) упорядочил;
2) С КОНЦА матрицы (с последней строки) в цикле i=LASTINDEX; while (A[i][0] < B[0]) { A[i+1]=A[1]; // образуем "вакуум" - две одинаковые строки, одна из них будет потом занята В// i--; }; // как только первый элемент В становится на своё место в порядке (не меньше текущего А) - он занимает "пустую" строку: A[i]=B;

Замечу, что если идти с начала - то вместо вакуумной строки Вы просто размножите первую на всю матрицу.
3
Форма ответа