PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2017/04/12 21:17:27
Name 올드패션드
File #1 캡처.PNG (43.5 KB), Download : 22
File #2 캡처2.PNG (68.5 KB), Download : 2
Subject [질문] C언어 프로그래밍 질문입니다.






안녕하세요. 실수로 자게에 잘못 올렸다가 깜짝놀라서 옮겼습니다.
C언어 프로그래밍 질문입니다.
첨부한 파일의 문제를 풀고 있습니다.
새로운 함수를 정의하여 문제를 해결하는 문제입니다.

현재 c번부터는 감이 안잡히고 그 전까지 제 생각대로 다음과 같이 써봤는데 c번에서 막히네요. 두번째 첨부파일은 힌트로 주어진것입니다.

#include

int fact(int n)
{
        int k;
        for (k = 1, n >= 1, n--);
        {
                k *= n
        }
        return k;
}

double compute_e()
{
        int k;
        int n = 1;
        for (k = 1, n >= 1, n++)
        {
                k = 1 / fact(n);
        }
        return k;
}

double compute_ex(double x)
{
        int k;
        for (k = 1, n>)
}

int main()
{
        int a;
        double x;
        printf("a! = ? input a :");
        scanf("%d", &a);
        printf("e^x = ? input x :");
        scanf("%lf", &x);
        printf("na! = %d n", fact(a));
        printf("e = %lf n", compute_e());
        printf("e^%.lf = %lf n", x, compute_ex(x));
        return 0;

}

이렇게 써봤습니다. ㅠㅠ 함수부터 C언어가 조금 어렵네요.....

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
꿈을꾸다
17/04/12 21:37
수정 아이콘
함수는 진짜 함순데 compute_ex가 e^x의 x를 실제로 받아서 e^x를 계산하겠다는 겁니다.
기본적으로 compute_e랑 비슷하지만 분자만 x^n으로 바꿔주면 되겠죠. x^n을 어떻게 할지는 k값에 따라 n을 정해주면 될 거 같은데 잘 생각해보세요
올드패션드
17/04/12 21:40
수정 아이콘
혹시 b번에 관해 정의한 함수 쓴거는 맞는 형태일까요?? 사실상 무한루프인데요....
꿈을꾸다
17/04/12 21:43
수정 아이콘
돌려보세요 크크 당연히 무한루프로 안돌아가겠죠. 문제에서도 given your own limitation이라고 하니 적당히 제한을 거시면 될거같네요
self.harden()
17/04/12 21:44
수정 아이콘
e 계산하는 함수부터 이상하네요.
우선 for(시작식;조건식;증감식) 문법은 지켜주셔야되구요.
저렇게 돌리면 무한루프 도는데다가
k에 그냥 대입하시면 마지막 n일때 1/n!값이 저장돼서 의미도 없어요.
k값에 증가연산자(+=) 쓰셔야 sum이 됩니다.
문제 보면 n값을 임의로 지정하라고 돼있으니까,
i를 1부터 n까지 k += 1/fact(i) 더해주시고
e^x 구하는건 다항함수 pow(x,i)를 사용해보세요.
사용법은 www.cplusplus.com에서 pow를 검색하시면 됩니다.
올드패션드
17/04/12 21:49
수정 아이콘
어후...기본적인 문법 실수 했네요.... 한번 사용법 알아보겠습니다.
self.harden()
17/04/12 21:54
수정 아이콘
아 그리고 이건 일반적인 팁인데
한꺼번에 코드를 다짜고 컴파일하지 마시고
중간중간에 컴파일 해가면서 공부하세요.
초반에는 신택스 에러도 많이나고 무한루프도 돌리고
메모리할당도 어렵고 포인터도 헷갈리고...
컴파일이 안되거나 예상치 못한 값이 나올때가 많거든요.
그럴때는 의심되는 부분을 주석으로 바꿔가면서
어디가 잘못됐는지 확인하면서 코딩하는게 수월해요.
방민아
17/04/12 22:15
수정 아이콘
그쵸그쵸 문제를 쪼갠 다음에 쪼갠 문제의 부분들을 하나씩 완성하면서 컴파일을 해줘야 해요!!
세이너스
17/04/12 21:44
수정 아이콘
a,b 번의 for loop 도 이상한데요;
a 번 같은 경우는
int k=1;
for(int i = n; i>0;i--){
k*=i;
}
같이 해주어야 합니다.
변수 선언을 하면 초기화가 필요하고 for loop 에 반복하는 변수 같은 경우 새로 선언해 주는 편이
안정적입니다.
올드패션드
17/04/12 22:46
수정 아이콘
그런가요;; 사실 팩토리얼 구하는 부분에서 윈도우 작동 중지 오류가 나더라구요. 그부분 때문일까요?
스타나라
17/04/12 21:45
수정 아이콘
e^x 계산은... return value용 변수를 하나와 중간 계산값 저장용 변수를 하나씩 선언 해 놓은 후, for루프를 돌며 매 루프마다 return value에 중간 계산값을 더해주는 방식으로 풀이가 가능하겠죠.

for 루프 1회에는 return value에 1을 더해줍니다.
for 루프 2회에는 1에다가 x를 곱하고 1로 나눠준 값을 return value에 더해주고, 중간 계산값에 기록합니다.
for 루프 3회에는 중간 계산값에다가 또 x를 곱하고 1+1 값으로 나눠준 값을 return value에 더해주고, 중간 계산값에 새로 기록합니다.
for 루프 4회에는 중간 계산값에다가 또 x를 곱하고 1+1+1 값으로 나눠준 값을 return value에 더해주고, 중간 계산값에 새로 기록합니다.
.
.
.
unlimite하게는 더하지 못한다 했으니, 사전에 지정한 횟수만큼만 더하도록 for 루프를 설정해줍니다.

이게 말로 설명하자니 좀 답답한데...for루프를 어떻게 이용할지 결정하셔야 합니다. 각 항마다 더해줄지, for루프를 반복할때마다 x를 곱해줄지 등등..
올드패션드
17/04/12 22:31
수정 아이콘
e^x 구하는 부분을 pow 함수 이용해서
double compute_ex(double x)
{
double k;
double sum=1;
for (k = 10; k >= 1; k--)
{
sum += pow(x, k) / fact(k);
}
return sum;
}



요런식으로 생각해봤습니다.
횟수는 10번으로 지정했구요.
나머지부분은 약간씩 수정하여서 최종적으로





#include <stdio.h>
#include <math.h>

int fact(int n)
{
int k;
for (k = 1; n >= 1; n--);
{
k *= n;
}
return k;
}

double compute_e()
{
int k;
int n = 1;
for (k = 1; n <= 10; n++)
{
k += 1 / fact(n);
}
return k;
}

double compute_ex(double x)
{
double k;
double sum=1;
for (k = 10; k >= 1; k--)
{
sum += pow(x, k) / fact(k);
}
return sum;
}

int main()
{
int a;
double x;
printf("a! = ? input a :");
scanf("%d", &a);
printf("e^x = ? input x :");
scanf("%lf", &x);
printf("na! = %d n", fact(a));
printf("e = %lf n", compute_e());
printf("e^%.lf = %lf n", x, compute_ex(x));
return 0;

}




이렇게 해봤는데 일단 빌드는 성공해서 실행이 되는데
힌트에서 주어진대로 5, 3을 넣어봤더니 a! 구하는 도중에 윈도우 작동 중지되면서 오류가 나네요...
방민아
17/04/12 22:51
수정 아이콘
int fact(int n)
{
int k;
for (k = 1; n >= 1; n--);
{
k *= n;
}
return k;
}
함수가

int fact(int n)
{
[ int k = 1; ]
[ for (int i = n; i >= 1; i--); ]
{
k *= i;
}
return k;
}
로 수정되어야 합니다.
나머지 for문은 스스로 넣어보세요 흐흐
올드패션드
17/04/12 23:09
수정 아이콘
ㅠㅠ흐 신경써주셔서 감사한데 i가 정의 되지 않았다는 오류가 납니다....
for문 초기화 조건에 넣으면서 선언한 걸로 생각이 되는데요.
방민아
17/04/12 23:11
수정 아이콘
아... for문 뒤에 ;을 빼주어야죠 크크
올드패션드
17/04/12 23:12
수정 아이콘
어후 챙피해라,,,
올드패션드
17/04/12 23:13
수정 아이콘
; 빼니까 기존 식도 되네요크크
방민아
17/04/12 23:16
수정 아이콘
다행이네요 하하
방민아
17/04/12 22:20
수정 아이콘
for문의 사용법 뿐만 아니라
interger (int)와 real number (float, double)도 이해가 조금 더 필요해보입니다.
http://200315193.tistory.com/825

for loop는 연산과정에서는 덧셈을 하면 sigma연산, 곱셈을 하면 팩토리얼연산이라고 생각하면 됩니다. 뭐 그외에 응용하면 여러가지가 가능하긴 한데 일단은 말이죠...

int sum = 0;
for(int i = 0; i <= n; ++i)
sum += i;
라는 문장은
sigma(i=0~n) i
라고 생각하시면 됩니다.

int sum = 3;
sigma(i=0~n) 2*i+3을 for 문으로 표현한다고 하면
for(int i = 0; i <= n; ++i)
sum += 2*i;
이구요

sigma(i=0~n) f(i)는
for(int i = 0; i <= n; ++i)
sum += f(i);가 되겠죠

또한, 나중에 하시게 될 수도 있을듯 한데 적분연산은 for문을 조금만 응용하면 됩니다.
올드패션드
17/04/12 22:42
수정 아이콘
자료형 부분은 수업시간에도 다루면서 공부했었는데 듣기만 하고 아직 숙달을 못했습니다...
링크 보고 다시 정리해보겠습니다!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
100974 [질문] 바람의 나라 하시는 분 계신가요? [6] pppppppppp2518 17/04/13 2518
100973 [질문] 바람의나라 무기 이름 질문드립니다 [4] 스윗앤솔티2363 17/04/13 2363
100972 [질문] 공익 겸직 허가 어렵나요? [10] 반전여친10392 17/04/13 10392
100971 [질문] 부모님 결혼기념일 선물은 뭐가 좋을까요 [2] 말랑3035 17/04/13 3035
100970 [질문] 토요일 잠실로 콘서트 보러 가는데 주차 문제.. [7] 피지알볼로2875 17/04/13 2875
100969 [질문] 꽁돈이 150만원생기면 뭘하실꺼에요?? [51] 참교육4679 17/04/13 4679
100968 [질문] 뭘 해야 좋을지 모르겠습니다. [5] 물리쟁이2887 17/04/13 2887
100967 [질문] 삼성 hdmi 모니터 질문입니다. [2] 회색추리닝2173 17/04/13 2173
100966 [질문] 갤럭시 S8 기변 관련 궁금합니다 [3] back4more3522 17/04/12 3522
100965 [질문] 마이크로소프트 워드 쓰시는분들 계신가요? [5] alphamale6071 17/04/12 6071
100964 [질문] 부동산 전세 조건에 대해 평가 부탁드립니다. 처음이라... [2] 츠라빈스카야1726 17/04/12 1726
100963 [질문] 미성년자 안드로이드 태블릿 사용 문의 [1] 롤내일부터끊는다1999 17/04/12 1999
100962 [질문] [노래질문] 간질간질 간~질 발가락이 간지러워 무좀약을 발랐더니 화끈하더라~ [4] 기린그린그림8155 17/04/12 8155
100961 [질문] 노트북(게이밍) 스펙 질문합니다. 니어엘헨로2039 17/04/12 2039
100960 [질문] V20 SK 기변 일단 계약서만 쓴 상태인데 질문입니다. [3] 광개토태왕2375 17/04/12 2375
100959 [질문] C언어 프로그래밍 질문입니다. [19] 올드패션드2600 17/04/12 2600
100958 [질문] 조조전 금전특성 질문드립니다 [13] 2016LGTwins4208 17/04/12 4208
100957 [질문] 무선충전패드의 위험성?! [3] 연필깎이2961 17/04/12 2961
100956 [질문] [스포?] 영화 더록(1996) 질문입니다. [6] 계란3902 17/04/12 3902
100955 [질문] 이 두 단어의 뜻도 같은 뜻으로 봐야하나요?? [5] 잘가라장동건3379 17/04/12 3379
100954 [질문] 특혜, 역차별이 부당한 이유 [38] 삭제됨4207 17/04/12 4207
100953 [질문] 시티즌 시계 추천 [9] ryn6832 17/04/12 6832
100952 [질문] 민방위 2년차가 3-4년차 교육시간에 가도 되나요? [15] 부폰9191 17/04/12 9191
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로