Показать сообщение отдельно
Старый 20.11.2013, 08:43   #2 (permalink)
grelly
падаван
 
Аватар для grelly
 
Регистрация: 23.01.2013
Сообщений: 739
Сказал(а) спасибо: 307
Поблагодарили 27 раз(а) в 3 сообщениях
Репутация: 10792
По умолчанию

как то так:
Код:
#include <math.h>
///////////////////////////////////////////////////////////////////////////////////////////
/// [in]
/// double m, double masX[], double masY[], int size //m - сумма катетов, masX и masY - массивы катетов, size - размер массивов
/// [out]
/// int& indexX, int& indexY // переменные, в которые записываются значения индексов массивов катетов
///////////////////////////////////////////////////////////////////////////////////////////
void CalcMinHyp(double m, double masX[], double masY[], int size, int& indexX, int& indexY)
{  
  indexX = -1;//после вызова функции сделать проверку что indexX и indexY не равны -1. если равны значит ошибка
  indexY = -1;
  double minHyp = -1, hyp;
  for(unsigned int i = 0; i < size; i++)
    for(unsigned int j = 0; j < size; j++)
    {
      if((masX[i] + masY[j]) == m)// проверку на размер массивов нужно сделать обязательно!!! иначе программа вылетит с исключением
      {
  	hyp = sqrt(masX[i] * masX[i] + masY[j] * masY[j]);//рассчет гипотенузы (для использования функции sqrt нужно включить файл math.h - см. первую строку)
	if(minHyp < 0 || hyp < minHyp)//первое условие для случая первого вычисления гипотенузы
	{
	  minHyp = hyp;
	  indexX = i;
	  indexY = j;
	}
      }
    }
}
grelly вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070