2013-11-15 4 views
0

PPM을 통해 C에서 Denmark 플래그를 디자인하려고하지만 모든 기능을 루프하는 더욱 효율적인 방법을 찾고 싶을뿐만 아니라 작동하는 기능이 작동하지 않는 것처럼 보입니다. 함께 모든 if/else if 문을 수행하는 대신에. C에서 PPM을 통해 플래그 만들기

for(i=0; i < height; i++){ 
    for(x=0; x < width; x++){ 
    if(x <= width *.3 && i <= height * .3) 
    { 
    printf("%i", Pixel(255,51,51)); 
    } 
    else if(x<= width * .1 && i <= height *.1) 
    { 
    printf("%i",Pixel(0,0,0)); 
    } 
    else if(x <= width * .405 && i <= height *.3) 
    { 
    printf("%i", Pixel(255,51,51)); 
    } 
    else if(x <= width * .4 && i <= height) 
    { 
    printf("%i", Pixel(0,0,0)); 
    } 
    else 
    { 
    printf("%i", Pixel(255,51,51)); 
    } 
} 
} 

내 나는 아무 생각이 몸, 어떻게 루프 함께 대신 대량 양을 만드는 경우/다른 진술하는 시간의 절반 아마 실 거예요 작업 .... 또한

void Pixel(int red, int green, int blue){ 
    printf("%i %i %i", red, green, blue); 
} 

어떤 이유로 내 기능이 컴파일됩니다 ... 아무도이 문제를 도와 줄래?

답변

0

논리 연산자 &&||을 사용하는 방법을 읽어보십시오.

'왼쪽 빨간색, 중간 흰색, 오른쪽 빨간색'에 대한 별도의 검사를 추가 할 필요가 없습니다. 으로 가정하고 중간 부분 만 확인하십시오.

는 흰색 그리려 때문에

때 x> 0.3 & & X < = 0.4] 또는 [Y> 0.3 & & Y < = 0.4, 단일 if 체크 이것을 연결할 수있다. 검은 색 테두리에도 동일하게 적용됩니다. 단 하나의 수표 만 있으면됩니다. 또한
if (x < width * .1 || y < height * .1 || x > width * .9 || y > height * .9) 
    ..black.. 
else 
    if ((x > width *.3 && x <= width * .4) || (y > height *.3 && y <= height * .4)) 
    ..white.. 
    else 
    ..red.. 

: 귀하의 픽셀 일상 이미는 RGB 값을 출력, 그래서 당신이 그것을 호출 할 때 다시 시도 할 필요가 없다. 어떤 현재 일어나는 것은 그 다음

printf("%i", Pixel(255,51,51)); 

제를 인쇄 R, G, B의 값을 인쇄Pixel 함수를 호출하는 "결과"에 시도. Pixel이 값을 반환하지 않기 때문에 실패합니다. 컴파일러가에 대해 경고 했으므로 컴파일 설정을 확인하십시오. (그러나 당신이에 관심이 아무것도 계산하지 않기 때문에 그 기능에 return x 문을 추가하는 것은, 조금 도움이되지 않음을 참고.)

마지막으로, 나는 강력하게 명확하게-Y 값을 반복하는 대신 iy을 권장한다 것 . 나는 나의 설명에서 '본능적으로'그것을 사용한다는 것을 알아 차렸다.

나는이있어 (예를 들어, Pixel 출력 세 자리는 공백으로 구분,하지만 당신은 그것을 두 번째로 호출하면, 최초의 새로운 자리가 이전에 충실 것)을 몇 가지 작은 문제를 해결 한 후 :

flag of Denmark

(PPM 이미지가 좋지 않기 때문에 Photoshop에서 제대로 열 수 있고 PNG로 변환 할 수 있음)의 PPM 형식입니다.

+0

아 정말 고마워요 !!! 나는 각 국경의 비율을 알아 내려고 노력했고, 위키 피 디아를 사용하고있었습니다 ... 높이 비율에 너비를 사용했을 때 태드를 벗어난 것처럼 보입니다. – Deej

+0

제 책에서 그들은 항상 내가 항상 따라 왔던 것이었지만, 나는 당신이 어디에서 왔는지 이해하고 있습니다. 다시 한 번 감사드립니다! @Jongware – Deej

+0

이 질문에 대한 답변을 수락하면 고려해 볼 수 있습니다. – usr2564301