알고리즘 질문입니다
276p
버블정렬(인접한 것끼리의 비교)에서
좌우로 번갈아 정렬인데
순서도를 보면 왜 이 순서대로 진행하면 좌우로 번갈아 정렬인지 이해가 안됩니다
반복문이 두 개가 쓰였는데
첫번째 반복문은 왼쪽에서 오른쪽으로 진행하는건데요,
왼쪽에서 오른쪽으로 한 번 진행하고
오른쪽에서 왼쪽으로 한 번 진행하고
이것이 반복되어야 하는것인데
순서도에서는 첫번째 반복문을 정렬이 끝나서 종료될때까지 계속 진행하게 되는 것 아닌가요?
354p
c언어 코드에서
9번 10번 줄 질문입니다
else일 경우 L =i+1;을 하는데
for문에서 j<=L-1;이 조건식으로 걸려있잖아요
굳이 i에 1을 더해서 대입하고
조건문에서 -1을 넣어서 빼는 것이라면
그냥 +1과 -1 둘 다 빼서
L=i;
j<=L;
로 하는 것이랑 차이점이 있나요?
362p
c언어 코드 1번 줄에서
int a[5][5] = {0}, b[5][5] = {0};
로 되어있는데요
우선 가변길이 배열이 아니므로 배열 선언하면서 동시에 값 초기화 가능하다는 것은 알겠는데
{ 0 }으로 쓰는것은
0을 한번만 썼지만 배열의 방 전체가 값 0 으로 초기화되는 것인가요?
426p
c언어 코드에서
처음에 구조체를 정의할때 char ban[4];로 정의하는데요
이 부분에서 반으로 입력받는 데이터는
1반 2반 3반 4반 이런식으로 입력받는데
문자열의 종료를 알리는 \0 널문자 포함해서
1반\0라면 배열의 방이 3개씩만 필요한것 아닌가요?
->1 과 반이 문자 하나씩 차지하고 널문자 포함 방 3개
왜 방 4개로 선언했는지 이해가 안됩니다
안녕하세요.
1)
순서도의 개념적인 내용을 어느 정도 파악했으면 반드시 직접 값들을 넣어서 디버깅을 수행해 보세요.
그래야 순서도의 흐름을 이해한 내용과 연관지을 수 있습니다.
우선 디버깅을 수행하면서 각 변수의 값 변화를 통해 버블정렬이 수행되는 과정을 살펴보세요.
그 과정에서 이해되지 않는 부분이 있다면 질문 주세요. 자세히 설명드리도록 하겠습니다.
2)
배열이 0부터 시작하는 것으로 인해 중간값 이전의 열에 저장될 값들이 하나씩 밀려출력됩니다.
디버깅을 수행해 보면
1 2 3 4 5 6 7
9 10 11 12 13 14 15
16 17 18 19 20 21 0
22 23 24 25 0 0 0
26 27 28 29 30 0 0
31 32 33 34 35 36 0
37 38 39 40 41 42 43
과 같이 출력됩니다.
3)
{ 0 } 을 이용해 배열의 값들 전체를 0으로 초기화합니다.
4)
숫자 1byte, 한글 2byte 로 최소한 3byte 이상으로 선언을 해야 합니다.
일반적으로 문자열 인식자인 널문자를 감안하여 선언할 크기에 +1하므로
여기서는 4로 크기를 선언하였습니다.
오늘도 즐거운 하루 되세요.
-
*2017-09-26 10:27:53
안녕하세요.
1)
순서도의 개념적인 내용을 어느 정도 파악했으면 반드시 직접 값들을 넣어서 디버깅을 수행해 보세요.
그래야 순서도의 흐름을 이해한 내용과 연관지을 수 있습니다.
우선 디버깅을 수행하면서 각 변수의 값 변화를 통해 버블정렬이 수행되는 과정을 살펴보세요.
그 과정에서 이해되지 않는 부분이 있다면 질문 주세요. 자세히 설명드리도록 하겠습니다.2)
배열이 0부터 시작하는 것으로 인해 중간값 이전의 열에 저장될 값들이 하나씩 밀려출력됩니다.
디버깅을 수행해 보면
1 2 3 4 5 6 7
9 10 11 12 13 14 15
16 17 18 19 20 21 0
22 23 24 25 0 0 0
26 27 28 29 30 0 0
31 32 33 34 35 36 0
37 38 39 40 41 42 43
과 같이 출력됩니다.
3)
{ 0 } 을 이용해 배열의 값들 전체를 0으로 초기화합니다.4)
숫자 1byte, 한글 2byte 로 최소한 3byte 이상으로 선언을 해야 합니다.
일반적으로 문자열 인식자인 널문자를 감안하여 선언할 크기에 +1하므로
여기서는 4로 크기를 선언하였습니다.오늘도 즐거운 하루 되세요.