피드백과 공부 내용
1. 'groundStart가 0보다 크다가 아니라 1이상이다'라고 표현하는 편이 좀 더 논리적인 표현이다.
1. 문제 이해
2. 분석
3. 설계
4. 검토
5. c구현
//calculateFractionsMadeOfFactorial.c
/*
파일 명칭 : calculateFractionsMadeOfFactorial.c
함수 명칭 : main
기 능 : 1부터 100까지 회차를 세며, 회차를 분자로 하고, 분모를 홀수 등차수열의 팩토리얼 값으로 하는 분수를 구하고, 홀수 회차엔 합을, 짝수 회차엔 차를 구해 출력한다. 마지막엔 최종 계산값을 출력한다.
입 력 : 없음
출 력 : 계산값
작성 일자 : 2019-11-11
*/
//매크로 영역
#include <stdio.h>
#define MAX 10
#define DIVIDER 2
//함수 선언
int main(int argc, char* argv[]);
//함수 정의
int main(int argc, char* argv[]) {
//자동 변수 선언
auto double calculation = 0.0;
auto unsigned int count;
auto unsigned int groundStart;
auto unsigned int ground;
auto double fraction;
auto unsigned int remainder;
//1. 제목을 출력한다.
printf("회차\t\t\t분수\t\t\t\t계산값\n");
//2. 회차가 최대값보다 작거나 같을 때 반복한다.
for (count = 1; count <= MAX; count++) {
//2.2. 분모기준수를 구한다.
ground = 1;
groundStart = 2 * count - 1;
//2.3. 분모를 구한다.
while (groundStart > 0) {
ground = ground * groundStart;
groundStart = groundStart - 1;
}
//2.4. 분수를 구한다.
fraction = count * 1.0 / ground;
//2.5. 회차의 홀짝을 확인한다.
remainder = count;
while (remainder >= DIVIDER) {
remainder -= DIVIDER;
}
//2.6. 홀수면, 합을 구한다.
if (remainder == 1) {
calculation += fraction;
}
//2.7. 짝수면, 차를 구한다.
else {
calculation -= fraction;
}
//2.8. 회차, 분수, 계산값을 출력한다.
printf("%d\t\t\t%f\t\t\t%f\n", count, fraction, calculation);
//2.1. 회차를 센다.
}
//3. 계산값을 출력한다.
printf("계산값 : %f\n", calculation);
//4. 끝낸다.
return 0;
}
6. 디버깅
7. JAVA 구현
//Main.java
/*
파일 명칭 : Main.java
메소드 명칭 :main
기 능 : 1부터 100까지 회차를 세며, 회차를 분자로 하고 분모를 홀수 등차수열의 팩토리얼 값으로 하는 분수를 구하고, 홀수회차엔 합을, 짝수회차엔 차를 구해 출력한다. 마지막엔 최종 계산값을 출력한다.
입 력 : 없음
출 력 : 계산값
작성 일자 : 2019-11-11
*/
//패키지 선언
package calculatefractionsmadeoffactorial;
//Main클래스
public class Main{
//main 메소드 정의
public static void main(String[] args){
//상수 변수 선언
final int MAX=10;
final int DIVIDER=2;
//지역 변수 선언
double calculation=0.0;
int count;
int groundStart;
int ground;
double fraction;
int remainder;
//1. 제목을 출력한다.
System.out.println("회차\t\t\t분수\t\t\t계산값");
//2. 회차가 최대값보다 작거나 같을 때 반복한다.
for(count=1; count<=MAX; count++){
//2.2. 분모기준수를 구한다.
ground=1;
groundStart=2*count-1;
//2.3. 분모를 구한다.
while(groundStart>0){
ground=ground*groundStart;
groundStart=groundStart-1;
}
//2.4. 분수를 구한다.
fraction=count*1.0/ground;
//2.5. 회차의 홀짝을 확인한다.
remainder=count;
while(remainder>=DIVIDER){
remainder-=DIVIDER;
}
//2.6. 홀수면, 합을 구한다.
if(remainder==1){
calculation+=fraction;
}
//2.7. 짝수면, 차를 구한다.
else{
calculation-=fraction;
}
//2.8. 회차, 분수, 계산값을 출력한다.
System.out.printf("%d\t\t\t%f\t\t\t%f\n", count, fraction, calculation);
//2.1. 회차를 센다.
}
//3. 계산값을 출력한다.
System.out.println("계산값 : "+calculation);
//4. 끝낸다.
}
}
8. NS차트
'Computer Engineering > 나프잘' 카테고리의 다른 글
나프잘 파랑 후기 (0) | 2019.12.31 |
---|---|
나프잘 파랑 / 9-8번 문제풀이 및 피드백 (0) | 2019.12.31 |
나프잘 파랑 / 9-6 문제풀이 및 피드백 (0) | 2019.12.31 |
나프잘 파랑 / 9-5 문제풀이 및 피드백 (0) | 2019.11.17 |
나프잘 파랑 / 9-4 문제풀이 및 피드백 (0) | 2019.11.17 |