C언어 코드 상의 10번부터
전체는 while문으로 감싸져 있고
1. If(flag==0)
2. Else if(a>data[i].wgt)
3. Else if(b
4. If(strcmp(c,data[i].ban)==0)
그리고 이 밑에
5. Strcpy(c,data[i].ban)
코드 쓰기가 복잡해서 간단하게 적었습니다
Q1. 4번 if문 같은 경우는 1번 2번 3번 if문 또는 else if 문을 실행하고 나서 무조건 한번 수행하나요?
순서도 상에서는 1번 if문에 해당하는 경우에 4번의 if문에 해당하는 과정(비교변수에 값이 치환되어 있지 않으니 비교작업 수행X)은 수행하지 않는 걸로 나오는데 c언어상에서의 코드는 어떻게 해석해야 하나요
2,3번의 else if문은 실행하고 나서 4번을 실행하는데 1번 if문만 예외로 실행하지 않는 다고 해석하려하니 뭔가 아닌거 같네요
Q2. 5번 strcpy의 경우는 4번과 if else로 묶여있는 경우도 아닌데 4번 실행후 5번을 실행하지 않는 이유가 뭐죠
그렇게 다 실행해버리면 값이 안나오는건 아는데 코드가 이해가 잘 안되네요
안녕하세요. 길벗 수험서 운영팀입니다.
4번 if문 같은 경우는 1번 2번 3번 if문 또는 else if 문을 실행하고 나서 무조건 한번 수행하나요?
[답변]
예, 맞습니다.
C언어 코드는 순서도와는 조금 다른 방법으로 해당 알고리즘을 구현하고 있습니다.
앞의 if문과 elseif로 엮인 1,2,3번을 수행한 후 무조건 4번 if문이 수행하도록 코딩되어 있습니다.
순서도와 정확하게 일치하도록 구현하기 위해서는 goto문을 사용하는 최악의 선택을 하거나 더 복잡하게 구성하는 방법 외에는 없었습니다. 조금 일치하지 않더라도 C언어에 적합한 코드를 구현하는게 맞다는 생각에 가능한한 순서도와 부합하는 형태로 코딩한 것입니다.
C언어 코드를 순서도에 대입해서 설명드리면 flag가 0인 경우 13번(432쪽 순서도 번호)을 수행한 후 20번 가서 c=data.ban가 참인지 거짓인지 판단하여, 거짓인 경우 다시 14번으로 돌아오는 방식입니다.
(flag=0이 참인 경우 변수 c는 어떠한 값도 갖고 있지 않기 때문에 20번 조건문은 거짓이 될 수 밖에 없습니다.)
5번 strcpy의 경우는 4번과 if else로 묶여있는 경우도 아닌데 4번 실행후 5번을 실행하지 않는 이유가 뭐죠
[답변]
If(strcmp(c,data[i].ban)==0) 은 순서도 20번(432쪽 순서도 번호)의 조건과 동일합니다.
새로운 학생의 반이 이전 반(C)과 동일한 경우 C값을 그대로 두고, 번호와 체중만을 출력하고 다음 학생을 조회합니다.
새로운 학생의 반이 이전 반(C)과 다른 경우 C값을 변경하고, 반과 번호, 체중을 출력하고 다음 학생을 조회합니다.
행복한 하루되세요.^^
-
*2018-09-28 11:16:08
안녕하세요. 길벗 수험서 운영팀입니다.
4번 if문 같은 경우는 1번 2번 3번 if문 또는 else if 문을 실행하고 나서 무조건 한번 수행하나요?
[답변]
예, 맞습니다.
C언어 코드는 순서도와는 조금 다른 방법으로 해당 알고리즘을 구현하고 있습니다.
앞의 if문과 elseif로 엮인 1,2,3번을 수행한 후 무조건 4번 if문이 수행하도록 코딩되어 있습니다.
순서도와 정확하게 일치하도록 구현하기 위해서는 goto문을 사용하는 최악의 선택을 하거나 더 복잡하게 구성하는 방법 외에는 없었습니다. 조금 일치하지 않더라도 C언어에 적합한 코드를 구현하는게 맞다는 생각에 가능한한 순서도와 부합하는 형태로 코딩한 것입니다.
C언어 코드를 순서도에 대입해서 설명드리면 flag가 0인 경우 13번(432쪽 순서도 번호)을 수행한 후 20번 가서 c=data.ban가 참인지 거짓인지 판단하여, 거짓인 경우 다시 14번으로 돌아오는 방식입니다.
(flag=0이 참인 경우 변수 c는 어떠한 값도 갖고 있지 않기 때문에 20번 조건문은 거짓이 될 수 밖에 없습니다.)
5번 strcpy의 경우는 4번과 if else로 묶여있는 경우도 아닌데 4번 실행후 5번을 실행하지 않는 이유가 뭐죠
[답변]
If(strcmp(c,data[i].ban)==0) 은 순서도 20번(432쪽 순서도 번호)의 조건과 동일합니다.
새로운 학생의 반이 이전 반(C)과 동일한 경우 C값을 그대로 두고, 번호와 체중만을 출력하고 다음 학생을 조회합니다.
새로운 학생의 반이 이전 반(C)과 다른 경우 C값을 변경하고, 반과 번호, 체중을 출력하고 다음 학생을 조회합니다.
행복한 하루되세요.^^