톱니바퀴
Last updated
Last updated
회전 판단하는 함수, 회전시키는 함수 따로 구현함.
틀린 이유
재귀함수호출 안함 : rotate_check 함수에서 재귀호출을 통해 왼쪽의 왼쪽 톱니바퀴, 오른쪽의 오른쪽 톱니바퀴에 대해 처리해줘야하는데 재귀함수 호출을 하지 않고 회전시키는 함수를 호출해버리니 현재의 왼쪽, 오른쪽 톱니바퀴만 해당되기 때문에 틀린다!!!
(구현은 했지만 좀 더 발전시키기)flag변수를 만들어서 왼쪽의 경우 왼쪽 방향에 있는 톱니바퀴들만 회전, 오른쪽의 경우 오른쪽 방향에 있는 톱니바퀴들만 회전하도록 한다. =>초기의 경우는 일단 무조건 실행되야하므로 초기 flag=0으로 해서 flag가 0인 경우는 둘다 실행되도록 한다.
왼쪽 방향에 있는 톱니바퀴들만 회전, 오른쪽의 경우 오른쪽 방향에 있는 톱니바퀴들만 회전 구현 안함. 위의 flag값을 이용해서 왼쪽인 경우, 오른쪽인 경우 따로 재귀호출 처리해준다!
(구현은 했지만 좀 더 발전시키기)범위 체크 => 범위체크 잘 하긴 했는데 범위체크는 재귀함수 호출할 때 처리해주면 된다. 재귀함수 호출 전에 prev[2] cur[6] 조건 체크할 때 범위 체크도 함께 해주면(if문을 하나로 합친다!) 코드가 간결해진다! 재귀함수 호출할 때 범위체크를 하기 때문에 재귀함수 시작하자마자 범위체크는 없애도 된다.
반시계방향 회전시키는 증감문 틀림(또 틀린 부분) => 우변 먼저 생각해라!! 우변이 실제로 들어가는 값이다!!!!!!
반시계방향 틀린 이유 아래코드는 손코딩 디버깅해보면 이것은 시계방향이다!! 좌변을 기준으로 생각해버려서 틀렸다!! 코드는 우변의 값이 좌변에 대입되는 개념인데 아래 코드는 글을 읽듯이 왼쪽부터 해석해버려서 틀렸다!! g[7] = g[6] g[6] = g[5] g[5] = g[4] ... g[1] = g[0]
rotate_check 함수 : 회전 여부 확인하고 톱니회전함수 rotate 호출, 실행.
2. rotate 함수 : 톱니바퀴들 회전. 틀린 이유=>시계, 반시계 방향에서 회전시킬 때 증감문부분 서로 반대됨!
디버깅용 톱니바퀴 출력