본문 바로가기

Computer Engineering/나프잘

나프잘 파랑 / 9-6 문제풀이 및 피드백

피드백과 공부 내용

1. 논리적 표현이 되도록, 관련있는 것들은 가까이 모아줄 것.
2. 실수형 변수의 경우, 수작업 및 검토 과정에서 소수점까지 정확하게 표현해줄 것.
3. 처리과정 작성을 할 때, '어떻게'가 아니라 '무엇을 할 것인지'에 집중할 것.
4. 초기화를 하지 않는 경우, 자료명세서와 함께 있어야 자료형 구분이 가능함.
5. 굳이 강제 형변환을 사용하지 않고, 처리과정에서 실수형상수를 사용하거나 1.0을 곱해주는 방식으로 형변환을 하도록 할 것.


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

 

1. 문제 이해

 

 

2. 분석



3. 설계






4. 검토





5. C구현
//plusMinusOfFractions.c
/*
파일 명칭 : plusMinusOfFractions.c
함수 명칭 : main
기 능 : 1부터 100까지 숫자를 세며, 숫자를 분모로하고 분자를 1로하는 분수를 만들고, 분모가 홀수면 더하고, 짝수면 빼서 합계를 구한 뒤 출력한다. 최종적으로 합계를 출력한다.
입 력 : 없음
출 력 : 합계
작성 일자 : 2019-11-07
*/

//매크로 영역
#include <stdio.h>

#define MAX 100
#define DIVIDER 2

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

//함수 정의
int main(int argc, char* argv[]) {
 //자동 변수 선언
 auto double sum = 0.0; // unsigned는 정수형에서만 사용
 auto unsigned int number;
 auto double fraction;
 auto unsigned int remainder;
 
 //1. 제목을 출력한다.
 printf("숫자\t\t\t분수\t\t\t\t합계\n");
 //2. 숫자가 최대값보다 작거나 같을 때 반복한다.
 for (number = 1; number <= MAX; number++) { 
  //2.2. 분수를 만든다.
  fraction = 1.0 / number;
  //2.3. 홀짝 여부를 확인한다.
  remainder = number % DIVIDER; // %연산을 할 때 반드시 정수변수만 사용 가능
  //2.4. 홀수면, 합을 구한다.
  if (remainder == 1) {
   sum += fraction;
  }
  //2.5. 짝수면, 차를 구한다.
  else {
   sum -= fraction;
  }
  //2.6. 숫자, 분수, 합게를 출력한다.
  printf("%d\t\t\t%f\t\t\t%f\n", number, fraction, sum);
  //2.1. 숫자를 센다.
 }
 //3. 합계를 출력한다.
 printf("합계 : %f\n", sum);
 //4. 끝낸다.
 return 0;
}



7. JAVA 구현
//Main.java
/*
파일 명칭 : Main.java
메소드 명칭 : main
기 능 : 1부터 100까지 숫자를 세며, 숫자를 본모로하고 분자를 1로하는 분수를 만들고, 분모가 홀수면 더하고, 짝수면 빼서 합계를 구하여 출력한다. 최종적으로 합계를 출력한다.
입 력 : 없음
출 력 : 합계
작성 일자 : 2019-11-07
*/
//패키지 선언
package plusminusoffractions;

//Main클래스
public class Main{
    //main 메소드 정의
    public static void main(String[] args){
        //상수 변수 선언
        final int MAX=100;
        final int DIVIDER=2;
        //지역 변수 선언
        double sum=0.0;
        int number;
        double fraction;
        int remainder;
        
        //1. 제목을 출력한다.
        System.out.println("숫자\t\t\t분수\t\t\t합계");
        //2. 숫자가 최대값보다 작거나 같을 때 반복한다.
        for(number=1; number<=MAX; number++){
            //2.2. 분수를 만든다.
            fraction=1.0/number;
            //2.3. 홀짝 여부를 확인한다.
            remainder=number%DIVIDER;
            //2.4. 홀수면, 합을 구한다.
            if(remainder==1){
                sum+=fraction;
            }
            //2.5. 짝수면, 차를 구한다.
            else{
                sum-=fraction;
            }
            //2.6. 숫자, 분수, 합계를 출력한다.
            System.out.printf("%d\t\t\t%f\t\t\t%f\n",number, fraction, sum);
            //2.2. 숫자를 센다.
        }
        //3. 합계를 출력한다.
        System.out.println("합계 : "+sum);
        //4. 끝낸다.
    }
}

8. NS 차트