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
수정 아이콘
자료형 부분은 수업시간에도 다루면서 공부했었는데 듣기만 하고 아직 숙달을 못했습니다...
링크 보고 다시 정리해보겠습니다!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
100961 [질문] 노트북(게이밍) 스펙 질문합니다. 니어엘헨로2057 17/04/12 2057
100960 [질문] V20 SK 기변 일단 계약서만 쓴 상태인데 질문입니다. [3] 광개토태왕2378 17/04/12 2378
100959 [질문] C언어 프로그래밍 질문입니다. [19] 올드패션드2611 17/04/12 2611
100958 [질문] 조조전 금전특성 질문드립니다 [13] 2016LGTwins4215 17/04/12 4215
100957 [질문] 무선충전패드의 위험성?! [3] 연필깎이2979 17/04/12 2979
100956 [질문] [스포?] 영화 더록(1996) 질문입니다. [6] 계란3912 17/04/12 3912
100955 [질문] 이 두 단어의 뜻도 같은 뜻으로 봐야하나요?? [5] 잘가라장동건3390 17/04/12 3390
100954 [질문] 특혜, 역차별이 부당한 이유 [38] 삭제됨4230 17/04/12 4230
100953 [질문] 시티즌 시계 추천 [9] ryn6841 17/04/12 6841
100952 [질문] 민방위 2년차가 3-4년차 교육시간에 가도 되나요? [15] 부폰9196 17/04/12 9196
100951 [질문] 공무원 7급 영어 기준점수 취득중 무엇이 가장 수월할까요? [8] 보로미어4034 17/04/12 4034
100950 [질문] 천안 신부동 신세계백화점 장시간 주차 가능한 곳을 찾습니다. [2] 프리템포4266 17/04/12 4266
100949 [질문] 그브정글로 마이정글 상대법좀 부탁드릴께요. [6] susimaro6167 17/04/12 6167
100948 [질문] 북한과 전쟁시 서울시민은 생존 차원에서 어떻게 해야한다고 생각하세요? [20] Emumu3352 17/04/12 3352
100947 [질문] 위장장애를 어떻게 대처해야할지 모르겠네요 [10] 타타리172719 17/04/12 2719
100946 [질문] 2컷 만화를 찾습니다. [4] 저글링아빠2068 17/04/12 2068
100945 [질문] 라라랜드 OST city of stars 같은 노래가 있나요? [4] 숲 해영 4498 17/04/12 4498
100944 [질문] 안철수씨의 유치원 공약 보고 생기는 의문점 [10] Time of my life2468 17/04/12 2468
100943 [질문] 지금 LG V10구입하는거 어떨까요? [8] 달토끼2231 17/04/12 2231
100942 [질문] 크킹2, 어떤 DLC를 사야 하나요? [11] 레이오네6203 17/04/12 6203
100941 [질문] 지방 공무원은 지자체장의 정치적 목적으로 사용될 수 있나요? [2] NKCC22147 17/04/12 2147
100940 [질문] 맨투맨 티 좀 봐 주시겠습니까(사진 有) [23] 사이시옷2845 17/04/12 2845
100939 [질문] 섀도우버스 각 직업마다 제일 먼저 만들면 좋은 레전드들이 뭔가요? [15] 꿈꾸는드래곤1910 17/04/12 1910
목록 이전 다음
댓글

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