2014-07-14 4 views
0

다른 변수에서 최소값과 최대 값을 얻어야합니다. 변수 값 xMin, yMin, xMax 및 yMax를 얻고 최소 xMin 값, 최소 yMin 값, 최대 xMax 값 및 최대 yMax 값을 찾아야합니다.변수의 최소값과 최대 값을 얻는 올바른 방법

나는 일을 코드 쓰기 :

double xmin , ymin , xmax , ymax = 0; 

double[][] arrayMinMax = new double[4][]; 

for (int m = 0; m < 4; m++) 
{ 
    arrayMinMax[m] = new double[shapes_id.Count]; 
} 

for (int m = 0; m < shapes_id.Count; m++) 
{ 
    GetBounds(out xmin, out ymin, out xmax, out ymax); 

    arrayMinMax[0][m] = xmin; 
    arrayMinMax[1][m] = ymin; 
    arrayMinMax[2][m] = xmax; 
    arrayMinMax[3][m] = ymax; 
} 

xmin = arrayMinMax[0].Min(); 
ymin = arrayMinMax[1].Min(); 
xmax = arrayMinMax[2].Max(); 
ymax = arrayMinMax[3].Max(); 

의 getBounds 나 각 모양에 대한 값 반환, 그리고 내가 함께 모든 모양의 최소 및 최대 포인트를 찾을 필요가있다. shapes_id.Count 모양이 나에게 반환됩니다.

이 코드는 정상적으로 작동하지만 여전히 C#으로 멍청하다. 내가 알고 싶은 것은이 코드가 올바른 코드인지, 아니면 더 좋은 방법 일까? 유사한 방식

고맙습니다

답변

0

일부 값에만 관심이있는 경우 전체 배열을 작성하지 않아도됩니다. 더 크거나 작은 값이 발견되면 이전 max 또는 min 값을 즉시 삭제하는 예제가 있습니다.

double xmin, ymin, xmax, ymax; 
xmin = ymin = double.PositiveInfinity; 
xmax = ymax = double.NegativeInfinity; 

for (int m = 0; m < shapes_id.Count; m++) 
{ 
    double x1, y1, x2, y2; 

    GetBounds(out x1, out y1, out x2, out y2); 

    xmin = Math.Min(x1, xmin); 
    ymin = Math.Min(y1, ymin); 
    xmax = Math.Max(x2, xmax); 
    ymax = Math.Max(y2, ymax); 
} 
0
double max(double[] a){ 
    double max = a[0]; 
    for(int i = 0; < a.Length; i++){ 
     if(max < a[i]) max = a[i]; 
    } 

return max; 
} 

분.

그런 다음 호출 max(arrayMinMax[1]);

1

당신은 당신이 나중에 당신의 배열에 저장 한 값을해야합니까? 아니면 루프의 최소값과 최대 값을 결정할 수 있습니다. 따라서 5 회가 아닌 1 회만 반복합니다.

double xmin = double.MaxValue, ymin =double.MaxValue , xmax = double.MinValue, ymax = double.MinValue; 

foreach (var shape in shapesId) { 
    double txmin, txmax, tymin, tymax; 
    GetBounds(out txmin, out txmax, out tymin, out tymax); 
    if (txmin < xmin) xmin = txmin; 
    if (tymin < ymin) ymin = tymin; 
    if (txmax > xmax) xmax = txmax; 
    if (tymax > ymax) ymax = tymax; 

} 
+0

아마도 내가 틀렸을 수도 있지만 txmin (예 :)은 항상 0보다 커야합니다. xmin 값은 0입니까? xmin, ymin 등등에 대해 먼저 GetBounds가 필요하고 foreach를 사용하는 것보다? –

+0

그래, 맞아, minvalues ​​double.MaxValue 및 double.MinValue maxvalues ​​함께 초기화해야합니다. – derpirscher

관련 문제