#include <stdio.h>

task main()
{
 use ultrasonicsensor();

 if(distance>=20&&distance<=30)
  sound("do")
 else if(distance>=10&&distance<=20)
  sound("re")
 else if(distance>=0&&distance<=10)
  sound("mi")
 else
  sound("nothing")
} // 2번

task main()
{
 int count=0;
 go_front();

 use lightsensor();

 do{
 if(light==255)
 {
  sound("beep")
  go_back();
  turn_left(90);
 }
 count++;
 } while(count==5);
} //1번

 



문제는 http://220.81.36.44/30stair/beer/beer.php?pname=beer

챕터가 다중반복문이라 어떻게든 만들어 보려고 했는데 표면적의 최소값을 구해야 하는데서 ㅈㅈ...
주석에서 보이는 고뇌의 흔적 ㅠㅠ
어떻게든 혼자 해보려고 하다가 도저히 안되서 선배님께 도움을 요청

                    if(minsurface==0){
                        minsurface = surface;
                        mina = a;
                        minb = b;
                        minc = c;
                    }
                    else if(minsurface>surface){
                        minsurface = surface;
                        mina = a;
                        minb = b;
                        minc = c;
                    }
요 부분을 넣으니까 해결.. 신기신기
사실 이게 어떻게 최소값을 뽑아내는건지 이해를 아직 못했음;;

근데 이건 만약 max까지 연산을 할 경우 시간이 너무 오래 걸려서 선배님이 아예 새로 짜심... 그게 밑에 pow함수를 쓴 부분
저걸 짜는거 보면서 느낀게 진짜 아이디어가 중요한것 같아... 난 저렇게 하는건 생각도 못했는데 ㅠㅠ





숫자 2개를 입력받아서 사칙연산을 수행하는거

처음에 input함수를
int input1(int m)
{
    do
    {
        scanf("%d", &m);
    }while(m<50 || m>100);
    return m;
}
이렇게 두고 duhagi(input1(m),input2(n)) 이렇게 뒀더니  처음에 값 입력을 받고도 1~4중 선택하고나서 한번더 입력을 하고 나서야 결과가 떠...
그리고 이상하게도 저기선 입력받는 순서가 input2 먼저...
그래서 void형으로 바꾸고 입력받은 값을 각각 변수 a,b에다가 대입시켜서 해결...
다른데서 할땐 return받은 값으로 바로 연산이 됬던것 같은데 뭐가 문제였던건지 ㅜ_ㅜ
그리고 굳이 할 필요는 없었지만 default에서 1~4 외의 값이 입력되면 다시 입력받게 하려고 goto문을 썼음
goto문을 쓰지 않고도 다시 입력 받을수 있게 하는 방법이 있었던것 같은데 기억이 안나...
여튼 심화문제보다 이게 더 짜증났음 ㅠㅠ

+ Recent posts