본문 바로가기

Computer Engineering/나프잘

나프잘 파랑 / 9-2번 문제 풀이와 피드백

피드백과 공부 내용

1. 분석 단계의 선택 구조에 대한 설명이 조금은 부족하다. (책에서는 물론 저자의 피드백에서도 설명이 불충분했다.)
지금까지 공부한 것으로 미루어 보아, 선택 구조는 하나의 처리 과정 밑에 두 가지 선택지가 주어지고,
한 선택지에서'만' 추가로 처리과정이 필요할 때 사용되어야 하는 것으로 보인다.
그렇기 때문에 처리과정 상 선택 구조로 표현되지 않더라도, 설계 단계에서 선택 구조로 작성될 수도 있다.

2. 대입식을 사용할 때 좌측에 대입하는 변수를 빼먹는 실수를 줄일 것.


1. 문제 이해

 

2. 분석

3. 설계

 

 

 

 

4. 검토

 

5. C구현

//sumOfOddsAndEvens.c
/******************************************************************************************
파일 명칭 : sumOfOddsAndEvens.c
함수 명칭 : main
기       능 : 1부터 100까지 수를 세며, 홀짝 여부를 판단하고, 홀수면 홀수의 합을
구하고, 짝수면 짝수의 합을 구해 출력하고, 최종적으로 홀수와 짝수의 합을 출력한다.
입       력 : 없음
출       력 : 홀수의 합, 짝수의 합
작성 일자 : 2019-08-08
******************************************************************************************/

//헤더 파일
#include <stdio.h>

//매크로 상수
#define MAX 100
#define DIVIDER 2

//함수의 선언
int main(int argc, char* argv[]);

//함수의 정의
int main(int argc, char* argv[]) {
auto unsigned long int sumOdds = 0;
auto unsigned long int sumEvens = 0;
auto unsigned short int remainder;
auto unsigned long int number;

//1. 제목을 출력한다.
printf("숫자\t\t\t홀수의 합\t\t짝수의 합\n");

//2. 숫자가 MAX 보다 작거나 같을 때 반복한다.
for (number = 1; number <= MAX; number++) {

//2.2. 홀수인지 짝수인지 판단한다.
remainder = number % DIVIDER;
if (remainder == 1) {

//2.2.1. 홀수이면 홀수의 합을 구한다.
sumOdds+=number;
}
else {
//2.2.2. 짝수이면 짝수의 합을 구한다.
sumEvens+=number;
}

//2.3. 숫자, 홀수의 합, 짝수의 합을 출력한다.
printf("%d\t\t\t%d\t\t\t%d\n", number, sumOdds, sumEvens);

//2.1. 숫자를 센다.
//number++;
}

//3. 홀수의 합과 짝수의 합을 출력한다.
printf("홀수의 합 : %d, 짝수의 합 : %d\n", sumOdds, sumEvens);

//4. 끝낸다.
return 0;
}

 

 

 

 

 

6. 디버깅

 

7. JAVA 구현

//Main.java
/******************************************************************************
 * 파일 명칭 : Main.java
 * 메소드 명칭 : main
 * 기    능 : 1부터 100까지 수를 세며 홀짝여부를 판단하고, 홀수면 홀수의 합을, 짝수면 
 *           짝수의 합을 구해 출력한 후 최종 홀수와 짝수의 합을 출력한다.
 * 입    력 : 없음
 * 출    력 : 홀수의 합, 짝수의 합
 * 작성 일자 : 2019-08-10
 *****************************************************************************/

//패키지 선언
package sumofoddsandevens;

//클래스 선언
public class Main{

    //main 메소드 선언
    public static void main(String[] args){

        //상수 변수 선언
        final int MAX=100;
        final int DIVIDER=2;    

        //지역 변수 선언
        int sumOdds=0;
        int sumEvens=0;
        int remainder;
        int number;        

        //1. 제목을 출력한다.
        System.out.println("숫자\t\t홀수의합\t\t짝수의합");

        //2. 숫자가 MAX보다 작거나 같을 때 반복한다.
        for(number=1; number<=MAX; number++){

            //2.2. 홀수인지 짝수인지 판단한다.
            remainder=number%DIVIDER;
            if(remainder==1){

                //2.2.1. 홀수이면 홀수의 합을 구한다.
                sumOdds+=number;
            }
            else{

                //2.2.2. 짝수이면 짝수의 합을 구한다.
                sumEvens+=number;                

            }

            //2.3. 숫자, 홀수의 합, 짝수의 합을 출력한다.
            System.out.printf("%d\t\t%d\t\t%d\n", number, sumOdds, sumEvens);

            //2.1. 숫자를 센다.
            //number++;
        }

        //3. 홀수의 합과 짝수의 합을 출력한다.
        System.out.println("홀수의합"+sumOdds+"짝수의합"+sumEvens);

        //4. 끝낸다.
    }
}

8. NS 차트