프로그래밍

 3198, 1/160 회원가입  로그인  
   capt_0669
   [C 언어] 다시 컴백했읍니다...문제와 함께...ㅠ.ㅠ 문제해결 끝!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2809 [복사]


예..몇일간 활동안하다가

학교시작과 함께 C를 접고 공부에만 몰두??는 아니고 다니기 바빠서..

11학년이 되보니 할께 은근히 많더라고요..

일단 배운거 까먹지않고 (그냥 함수전까지만 배워서 까먹을께 뭐가있겠습니까??ㅋㅋㅋ)

함수에서 다시 시작하였습니다

"일단 프로그램은 세 개의 정술르 입력받아서 그 중 가장 큰 수를 반환하는 함수와 가장 작은 수를 반환하는 함수를 만들어

보자" 인데요..

제가 만든 코드는...



#include <stdio.h>

int Large1(int a, int b);                        //int a 와 int b 중 큰값을 정한다
int Large2(int Large1, int c);                //위에서의 큰값과 c 중 큰값을 정한다
int Small1(int a, int b);                        //int a 와 int b 중 작은값을 정한다
int Small2(int Small1, int c);                //위에서의 작은값과 c 중 작은값을 정한다

int main(void)
{
        int a, b, c;
        printf("세게의 정수를 입력하시오: ");
        scanf("%d %d %d", &a, &b, &c);

        printf("\n %d와 %d와 %d중 제일 큰 값: %d \n", a, b, c, Large2);
        printf("%d와 %d와 %d중 제일 작은 값: %d", a, b, c, Small2);

        return 0;
}

int Large1(int a, int b)
{
        if (a>b)
                return a;
        else
                return b;
}

int Large2(int Large1, int c)
{
        if (Large1 > c)
                return Large1;
        else
                return c;
}

int Small1(int a,int b)
{
        if (a<b)
                return a;
        else
                return b;
}

int Small2(int Small1, int c)
{
        if (Small1<c)
                return Small1;
        else
                return c;
}

인데요

지금 정답보지않고 일단 왜 틀렸는지...어디서 틀렸는지 알고 고치고 넘어갈려고 하는데요

세개의 정수를 예를 들어 1 과 2 와 3을 넣었다면

무슨 젤큰수 젤작은수 에 10000이상의 값이 나옵니다...

왜그렇죠??

----------------------------------------------------------------------------------------------------------------

제가 학교에서 VB를 하는데요....

왜 그걸 가르치는지... 뭐 JAVA이런거 알려주면 좋을텐데..

어쨋든 VB에 보시면 (아마 VB6인가 길꺼에요)

F8누르시면 한줄 한줄마다 값을 보여주던데...

C에선 그렇게 못하나요??

예를들어

Do until a = 10

a = a + 1

Loop

이렇다면

한번줄렀을때

Do until에 노랗게 하이라이트 되있고

2번째 누를때 a = a + 1 이거 하고있고

3번째때 Loop에 하이라이트 되고 a = a + 1에서 a에다가 마우스를 갖다대면

a는 이제 1이라고 이렇게 되있는식....

파트별 컴파일? 법 어떻게 하나요??

왜냐하면

VB에서 그런거 알면서 고치면 되는데

C에서는 못하니깐 맨날 이 해커스쿨에 모르는 문제들을 다 도배하는 퓔이 들어서요...

도와주세요!!


---------------------------

도와 주신분 감사합니다!!

되는녀석입니다


#include <stdio.h>

int Large1(int a, int b);                        //int a 와 int b 중 큰값을 정한다
int Large2(int Large1, int c);                //위에서의 큰값과 c 중 큰값을 정한다
int Small1(int a, int b);                        //int a 와 int b 중 작은값을 정한다
int Small2(int Small1, int c);                //위에서의 작은값과 c 중 작은값을 정한다

int main(void)
{
        int a, b, c;

        printf("세 게의 정수를 입력하시오: ");
        scanf("%d %d %d", &a, &b, &c);

        printf("\n%d와 %d와 %d중 제일 큰 값: %d \n", a, b, c, Large2(Large1(a,b),c));
        printf("%d와 %d와 %d중 제일 작은 값: %d \n", a, b, c, Small2(Small1(a,b), c));

        return 0;
}

int Large1(int a, int b)
{
        if (a>b)
                return a;
        else
                return b;
}

int Large2(int Large1, int c)
{
        if (Large1 > c)
                return Large1;
        else
                return c;
}

int Small1(int a,int b)
{
        if (a<b)
                return a;
        else
                return b;
}

int Small2(int Small1, int c)
{
        if (Small1<c)
                return Small1;
        else
                return c;
}

끝!

  Hit : 4573     Date : 2010/12/20 09:58



    
ruka270 우선 첫번째 질문에서는 함수의 결과를 출력문에 넘기는게 아니라 함수의 포인터를 넘기고 있네요-_-;
printf("\n %d와 %d와 %d중 제일 큰 값: %d \n", a, b, c, Large2);
printf("%d와 %d와 %d중 제일 작은 값: %d", a, b, c, Small2);
여기서 뭐가 잘못됐는지 한번 잘 살펴보시기 바랍니다.

그리고 VB6에서 줄마다 컴파일이 되는게 아니라 편집기와 디버거가 연동되어 동작되어서 그렇게 보이는것 뿐입니다.
각 동작 시점에서의 변수 값을 확인 하려면 디버거의 사용방법을 숙지하시는게 좋을것 같네요.
VB를 하신다니 윈도우 환경에서 프로그래밍 하실테니 VS6.0구하셔서 VC++로 하시면 비슷한 감각으로 프로그래밍 하실수 있을겁니다.
2010/12/20  
ruka270 참고로 윈도우를 계속 쓰실거라면 Visual Basic 무시하지 않는게 좋습니다.
윈도우로 놀거라면 Visual Basic Script로 할수있는게 상당히 많거든요.
2010/12/20  
.Dolphin 마소에서 VB 첫 출시 때 설명으로 ' 강력한 툴' 이라고 했는데 정말 강력해요 ㅋㅋㅋ
공부 해 보시면 아시게 될꺼에용...
2010/12/20  
sedcreta 제가 잘 몰라서 그러는데요...함수는 pf에서 부르긴 하는데 인자 전달은 없어 보이는데...

제가 잘못 본건가요...??c에선 인자 전달을 해야되던데...vb는 그런게 없어두 되는건가요????
2010/12/21