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
수정 아이콘
자료형 부분은 수업시간에도 다루면서 공부했었는데 듣기만 하고 아직 숙달을 못했습니다...
링크 보고 다시 정리해보겠습니다!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
100996 [질문] 영화 마이너리티 리포트/스트레인지 데이즈의 장면 관련 질문입니다. [1] 헥스밤2951 17/04/13 2951
100995 [질문] 살색 패치? 반창고? [4] 노예3511 17/04/13 3511
100994 [질문] 제주에서 오늘 밤 숙소를 찾습니다. [2] Bettersuweet2442 17/04/13 2442
100993 [질문] [서피스/윈도우10] 서피스에서 만든 윈도우10 설치USB [1] SkinnerRules2337 17/04/13 2337
100992 [질문] 한국드라마 추천 부탁드릴께요~ [22] 카스트로폴리스6795 17/04/13 6795
100991 [질문] 부모님 폰으로 노트5 괜찮나요? [18] 나가사끼 짬뽕4486 17/04/13 4486
100990 [질문] 윈도우 10. 완벽한가요? [19] 교자만두4557 17/04/13 4557
100989 [질문] [LOL] 새로 탐구할 챔프 추천드립니다. [23] 이슬먹고살죠6897 17/04/13 6897
100988 [질문] 이게 영업 방해죄에 해당이 될까요? [1] 개망이3081 17/04/13 3081
100987 [질문] 삭제 된 파일 복구하는 법 안할란다1761 17/04/13 1761
100986 [질문] 우도 구경 몇시간 정도가 충분할까요? [3] 칼퇴추구자3076 17/04/13 3076
100985 [질문] 새구두를 산 후 뒤꿈치 물집/까짐 때문에 너무 아픕니다. [6] 파츠5130 17/04/13 5130
100984 [질문] 컴퓨터 견적에 대한 조언 부탁드립니다! [16] Christmas3666 17/04/13 3666
100983 [질문] 손목통증관련 질문입니다. [4] BosS2672 17/04/13 2672
100982 [질문] 결혼때 남자가 집해가는 경우를 많이 보시나요? [58] 마르키아르13793 17/04/13 13793
100981 [질문] 4차산업 관련 대선공약 볼 수 있는 곳 있을까요 [1] 마션2042 17/04/13 2042
100980 [질문] 옛날 프로레슬링 영상들 한번에 볼 수 있나요? [2] 아니이걸왜들어가1887 17/04/13 1887
100979 [질문] 유머 관련 노래 가사 질문입니다. [2] 애패는 엄마1950 17/04/13 1950
100978 [질문] [LOL] kt vs 삼성 어떻게 보시나요? [44] 이선빈3900 17/04/13 3900
100977 [질문] 중고차/신차 구매를 위한 차량 추천 [43] 김아영4732 17/04/13 4732
100976 [질문] 컴알못의 견적요청입니다.(+추가) [5] Naked Star2249 17/04/13 2249
100975 [질문] PC용 RPG게임 추천부탁드립니다. [9] 순규성소민아쑥5470 17/04/13 5470
100974 [질문] 바람의 나라 하시는 분 계신가요? [6] pppppppppp2571 17/04/13 2571
목록 이전 다음
댓글

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