PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2013/10/04 13:11:25
Name 골수KT팬
Subject [질문] C언어 질문드릴게요..ㅠㅠ
어제부터 감기라서 오늘 배운 내용으로 코딩을 해야하는데 정신도 없고 만들긴했는데 이게 계속 오류가 나네요...ㅠㅠ
함수 불러와서 실수 입력 받아가지고 정수부분이랑 소수부분을 나눠야 되는데... 포인터도 사용하고 함수도 사용해야 되서 혼란스러워요..ㅠㅠ

아래는 제가 코딩한 거에요.

#include <stdio.h>

int main(void)
{

        int (*pf)(int num, int x, double y);
        
        pf = fuction;
        printf("정수 부분은 %d입니다.",x);
        printf("소수점 이하 부분은 %f입니다.",y);

        return 0;

}


int fuction(int num, int x, double y)
        {
                printf("실수를 입력하시오:");
                scanf("%d", &num);

                x = (int)num;
                y = num - x;
                
                return 0;

        }


위에 main 함수에서 다른 변수를 선언하면 불러올 함수의 값들을 어떻게 불러와야 될지 고민입니다..


P.S 하.. 수업시간에 앞에서 대답은 열심히 하긴 했는데 각각 떨어져있는 개념들보다 여러개를 이용하는건 저에게는 어렵네요..ㅠㅠ
어떻게 하면 조금이라도 실력을 늘릴수 있을까요..
조언 좀 부탁드려요..ㅠㅠ
제가 봐도 제가 너무 답답해요..


        

        
        

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
13/10/04 13:15
수정 아이콘
1. 실수를 입력하시오 해놓고 %d로 정수를 받고 있습니다. %f로 수정
2. 실수로 받는다쳐도 scanf로 받는 num는 정수형인 int 입니다. float로 고치시면 됩니다.
3. 그냥 c인 경우 사용하는 함수를 main 함수보다 위에 선언해야합니다. int main을 맨 아래로 수정
4. fuction을 호출도 안하고 계시네요. 입출력 정의를 제대로 해보심이 좋아보입니다.
5. fuction이 call by reference를 하고자 하신거 같은데 &기호도 안되어있네요

등등 고칠 부분이 많네요...
골수KT팬
13/10/04 13:26
수정 아이콘
어제부터 감기때문에 사실상 좀비상태였는데다가 계속 생각하다보니 머리가 너무 아파요..흑흑 오늘은 좀 푹 쉬어야 될듯 싶어요.. 한 번 더 곰곰히 생각해볼게요..
13/10/04 13:28
수정 아이콘
그래서 원래 밤샘코딩(..)과 음주코딩은 금해야합니다 크크 푹 쉬시고 천천히 살펴보세요~
골수KT팬
13/10/04 13:37
수정 아이콘
사실 어제는 쉬어야 됬는데 논리회로 레포트도 3개나 내야되서요.. ㅠㅠ 골골 앓으면서 하나 완료했어요ㅠㅠ 이따 집에가면 어머니가 손수 해주신 치느님을 영접하면서 일단 논리회로 레포트나 해야죠 ㅠㅠㅠ 윽 C언어는 항상 멘붕이에요 ㅠㅠㅠㅠ
Bayer Aspirin
13/10/04 13:17
수정 아이콘
질문 1 함수 포인터를 꼭 사용해야 하나요?
질문 2 함수에서 실수를 입력 받고, 정수와 소수를 나눠서 추출한 후에 메인 함수에서 해당하는 정수와 소수를 출력하고자 하시는 건가요?
골수KT팬
13/10/04 13:23
수정 아이콘
질문 1 꼭 사용하진 않아도 되는거 같은데요. 근데 사용하면 좀 더 편하지 않을까 생각해요;; 방금 전에 배웠거든요 ㅠㅠ
질문 2 네 맞아요.ㅠㅠ
Bayer Aspirin
13/10/04 13:28
수정 아이콘
1번이 아니라면

#include <stdio.h>
#include <conio.h>

void function1(int *int_num, float *float_num)
{
printf("\n function1function() \n");
printf("입력 하세요 : ");
scanf("%f", float_num);

*int_num = (int)*float_num;
*float_num -= *int_num;
}

int main(int argc, char* argv[])
{
int int_num;
float float_num;

function1(&int_num, &float_num);

printf("\n main function() \n");
printf("정수 = %d, 소수 = %f\n", int_num, float_num);
printf("finished...\n");
getch();
return 0;
}

이런 식이면 해결 가능합니다.
골수KT팬
13/10/04 13:38
수정 아이콘
아 근데 conio.h는 쓰면 안될거같아요 ㅠㅠ 제가 배운것을 이용해서 코딩해야되거든요 ㅠㅠㅠㅠ
Bayer Aspirin
13/10/04 13:41
수정 아이콘
conio.h는 마지막에 콘솔창이 그냥 닫히지 말라고,
엔터등의 키값 하나 받아가는 getch();
함수를 써서 그러는 것이예요.
conio.h와 getch() 두개를 지우셔도 됩니다.
골수KT팬
13/10/04 13:19
수정 아이콘
에러가 나는걸 말씀드리면 위에 메인함수에서 x,y가 정의되지 않았다고 나오고, fuction이라는 함수를 불러올때 *pf로 불러오는데도 정의되지 않았다고 나옵니다 ㅠㅠ
Bayer Aspirin
13/10/04 13:32
수정 아이콘
main보다 아래에 함수를 구현하려면
프로토 타입을 위에 부분 또는 해더에 써주셔야 합니다.
int fuction(int ,int ,double);<-- 요놈이 프로토 타입.
또는 아래 함수를 긁어서 위로 main위로 올려도 됩니다.

그리고 x,y변수는 정의가 안되어 있었습니다.
제가 적은 소스처럼 정의를 하시고, 해당하는 주소값을 줘야지
다른 함수에서 메인 변수의 값을 바꿔줄 수가 있습니다.
아니라면 return 들어오는 값으로 밖에 알 수 없으니깐요.
call by reference, call by value 에 대해서 구글링 하셔서 공부해 보시길 추천드립니다.
골수KT팬
13/10/04 13:39
수정 아이콘
넵...ㅠㅠ 사실 지금도 뭐가 뭔지 모르겠어요 ㅠㅠ 좀 푹 쉬고 한글날까진 마쳐봐야 겠어요 ㅠㅠ 여튼 정말 감사합니다^^;
탑갱좀요
13/10/04 13:21
수정 아이콘
main 함수위에 function 함수를 놓으시거나 아니면 프로토타입 선언을 하세요
유치리이순규
13/10/04 13:45
수정 아이콘
1. main 함수 위에 함수가 선언되야 합니다.
2. main 에서 function 함수를 호출하지 않고 있습니다.
3. main 에서 num, x, y 변수도 선언하지 않고 있습니다.
4. function 에 num, x, y 값을 넘겨줄때 주소가 아닌 값만 넘기고 있습니다.
이렇게 되면 function 에서 값을 변경해도 main 에있는 num, x, y 값은 변하지 않습니다.
int fuction(int num, int x, double y) 이 선언은
function 에서만 사용되는 num, x, y를 새로 선언하는 방법입니다.
포도사과
13/10/04 13:55
수정 아이콘
#include <stdio.h>


int function(double &_num, int &_x, double &_y);

typedef int (*pf)(int &_num, int &_x, double &_y);

int main(void)
{
int num = 0;
int x=5;
double y=0.5;


*(pf)function(num, x, y);

printf("정수 부분은 %d입니다.",x);
printf("소수점 이하 부분은 %f입니다.",y);

return 0;

}


int function(int &_num, int &_x, double &_y)
{
printf("실수를 입력하시오:");
scanf("%d", &_num);

_x = (int)_num;
_y = _num - _x;

return 0;

}

일단 컴파일이 되도록 수정해두었습니다.
typedef로 자료형 정의해두었구요..
나머지 내용은 보면서 수정하시면 될 것 같네요~
Je ne sais quoi
13/10/04 15:34
수정 아이콘
음... 일단 함수 파라미터에 &를 쓰는건 정확히 말하면 C가 아니라 C++입니다...
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
24622 [질문] 동영상 인코딩 관련 질문 드리겠습니다. 구라타812 14/01/26 812
23645 [질문] PHP 입문서 추천 부탁드립니다. [3] 안산소도둑2156 14/01/14 2156
23250 [질문] 윈도우 태블릿 질문드려요 [4] 이든1260 14/01/09 1260
18377 [질문] 유투브 영상 보고 싶은데 볼수가 없어요 ㅜㅜ [2] 갈색시티관장991 13/11/13 991
15741 [질문] 개인 홈페이지 제작관련.. [6] 치탄다 에루1167 13/10/15 1167
14772 [질문] C언어 질문드릴게요..ㅠㅠ [16] 골수KT팬3699 13/10/04 3699
14309 [질문] 코딩 문제입니다 ^^ [2] 삭제됨1229 13/09/28 1229
12012 [질문] PC 견적 질문입니다. [7] 항즐이1665 13/08/31 1665
2934 [질문] C언어 질문입니다. [7] Insomniaa1350 13/05/14 1350
2899 [질문] 로지스틱 회귀분석에 대한 질문입니다. [2] 플토만세1791 13/05/13 1791
1478 [질문] [C언어]삼각형 찍기 질문입니다. [17] Lucky-Strike5943 13/04/24 5943
1462 [질문] 노트북 추천 부탁드립니다. [6] 제로스1259 13/04/23 1259
1273 [질문] [프로그래밍]별표 출력 질문입니다. [7] Lucky-Strike1790 13/04/21 1790
761 [질문] c++ release debug질문입니다. [7] 뇌업드래군2098 13/04/13 2098
115 [질문] 코딩에 대해 전혀 모르는 문외한이 개인 목적으로 익히려면 어떻게 하는 게 좋은지요...? [18] nexon2268 13/04/04 2268
목록 이전 다음
댓글

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