Показать сообщение отдельно
Старый 10.06.2010, 13:18     # 2
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
сортировки там и близко нет... короче, лови код (на 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
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума