сортировки там и близко нет... короче, лови код (на Java, правда, но перевести в С++ проблем не будет), разбирайся...
Код:
package test;
public class Task {
final int SIZE = 5;
float[] karters = { 100, 102, 103, 101, 105 };
float[] vals = { 95, 92, 90, 98, 90 };
float[] vtulkaV = { 2, 5, 3, 7, 1 };
float[] vtulkaN = { 4, 2, 3, 6, 1 };
float[][] matrix = new float[SIZE][SIZE];
public static void main(String[] args) {
Task t = new Task();
t.init();
float min;
int minV, minN;
for (int i = 0; i < t.SIZE; i++) {
min = Float.MAX_VALUE;
minV = minN = -1;
float zazor = t.karters[i] - t.vals[i];
for (int iV = 0; iV < t.SIZE; iV++)
for (int iN = 0; iN < t.SIZE; iN++)
if (zazor - t.matrix[iV][iN] >= 0 && zazor - t.matrix[iV][iN] < min) {
min = zazor - t.matrix[iV][iN];
minV = iV;
minN = iN;
}
if (min != Float.MAX_VALUE) {
System.out.println(
i +
". Картер = " + t.karters[i] +
", вал = " + t.vals[i] +
", лучшая пара (В/Н): " + minV + "/" + minN + "(" + t.vtulkaV[minV] + "+" + t.vtulkaN[minN] + ")" +
", зазор = " + min);
}
}
}
public void init() {
for (int iV = 0; iV < SIZE; iV++)
for (int iN = 0; iN < SIZE; iN++)
matrix[iV][iN] = vtulkaV[iV] + vtulkaN[iN];
}
}
Результат:
Код:
0. Картер = 100.0, вал = 95.0, лучшая пара (В/Н): 0/2(2.0+3.0), зазор = 0.0
1. Картер = 102.0, вал = 92.0, лучшая пара (В/Н): 3/2(7.0+3.0), зазор = 0.0
2. Картер = 103.0, вал = 90.0, лучшая пара (В/Н): 3/3(7.0+6.0), зазор = 0.0
3. Картер = 101.0, вал = 98.0, лучшая пара (В/Н): 0/4(2.0+1.0), зазор = 0.0
4. Картер = 105.0, вал = 90.0, лучшая пара (В/Н): 3/3(7.0+6.0), зазор = 2.0