22020, 1/1101 회원가입  로그인  
   someone3
   곱셈_연습_프로그램.exe (0 Byte), Download : 175     [오른쪽 버튼 눌러 다운 받기]
   C 문법을 책으로 보는거랑 직접 짜는거랑은 완전히 다르네요...

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Board&no=12364 [복사]


열혈강의 C 책을 다 읽고 곱셈 연습 프로그램을 짜봤는데요... 모듈화라는 걸 해보려

고 했는데 변수가 이곳 저곳에서 꼬이고 함수도 많고 하니까 뭘 어떻게 나누어야 할

지 또 나눠놔도 어떻게 해야 될지 모르겠네요...하다가 포기하고 다 뭉쳐버렸습니다 ㅋㅋ

열혈강의에서 시간을 반환하는 함수

에 대해 나와있길래 딜레이 시키는 걸로 응용 해봤어요. time(NULL)으로 시간을 받아

놓고 5초 까지 무한 루프를 돌리다가 5초 후 시간을 받아서 비교하게 해서 루프를 빠

져나오게 하는 식으로 했는데 아무리 봐도 이건 아닌 것 같지만...

짜면서 변수 관

리 라든지 주석 다는 거라든지 실제로 만드니까 모르는게 한두가지가 아니네요... 하

튼 완성하고 뿌듯해서 올려봅니다. ㅋㅋ

몇가지를 물은다음 곱셈 문제를 내서 결과를 뽑아주는 프로그램입니다. ㅎㅎ

조언좀 많이 부탁드려요~

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int progress(void);//아래 있는 함수들
int play(void);
int information(void);

int hwaesu_count;//변수 선언
int answer;
int munje[2];
int jaehan_time;
int show_sco_count;
int score=0;
int jinan_time;
int record[1000];
int jari;
int nanido;
int hwaesu;
int time_save;
int count,n,i;
int next_level;
int nansu_formun;





int main(void)
{
        system("cls"); //화면 지우고 시작
        printf("=================================================\n"); //프로그램 이름 제시
        printf("               곱셈 연습 프로그램\n");
        printf("=================================================\n");
        
        progress();//진행 함수 호출
        
        
        
}














int play(void)
{
        
        srand((int)time(NULL));    //시간으로 시드 넣기
        for(hwaesu_count=0; hwaesu_count<hwaesu; hwaesu_count++)//횟수 진행
        {
                                        
                //문제 생성        
                        
                
                
                for(nansu_formun=0; nansu_formun<2; nansu_formun++)
                {
                        munje[nansu_formun]=(rand()%jari);//문제에 쓸 난수 두 개 저장
                }
                
                
                
                
                information();//information 함수 호출을 통해 상태창 보여주기
                jaehan_time=(int)time(NULL);
                printf("%d X %d = ",munje[0],munje[1]);//문제 제시
                scanf("%d",&answer);
                
                //답 확인
                if((jaehan_time+(5*nanido)) <= ((int)time(NULL)))//시간 초과 시엔 답을 0으로 만들어서 오답처리
                        answer = 0;                
                if(answer == (munje[1]*munje[0]))//정답일 경우
                {
                        printf("정답입니다");
                        score++;//점수 1점 올리기
                        record[hwaesu_count]=1;
                }
                else if(answer==0)
                {
                        printf("시간 초과 오답!\n");//오답일 경우
                        record[hwaesu_count]=0;
                }
                else
                {
                        printf("답이 틀렸다. 멍충아.\n");
                        record[hwaesu_count]=0;
                }
                printf("다음문제를 보려면 아무 키나 입력하세요");
                //scanf("%d",&next_level);
        }



        information();
        printf("정답 : 1 오답 :0\n");
        for(show_sco_count=0;show_sco_count<hwaesu;show_sco_count++)
        {
                printf("%d회 : %d\n",show_sco_count+1,record[show_sco_count]);
        }

}
                
                













int progress(void)
{
        while(1) //연습할 자릿수 입력 받기
        {        
                printf("연습을 원하시는 자릿수를 선택하세요 100:2자리 이하 or  1000:3자리 이하\n");        
                printf("100이나 1000를 써주세요 : ");
                scanf("%d",&jari);
        
                if(jari==100 || jari==1000) //100,1000 가 아닌 수 나오면 다시 묻기
                        break;
        }
        
        while(1)//난이도 입력 받기
        {
                printf("연습을 원하시는 난이도를 결정하세요 : ");
                printf("3: easy 2:medium 1:hard");
                scanf("%d",&nanido);
                if(nanido ==1 || nanido ==2 || nanido ==3)
                        break;
        }
        
        while(1)//진행할 횟수 입력 받기
        {
                printf("연습을 원하시는 횟수를 입력하세요 : ");
                scanf("%d",&hwaesu);
                if(hwaesu >= 0)//양수만 받기
                        break;
                
        }
                
        
        time_save=(int)time(NULL);//시작하는 순간 현재 시간 저장
        count=0;
        
        while(1)
        {
                if((int)time(NULL)==time_save+count)
                {
                        printf("준비하세요 로딩중... %d초 남았습니다.\n",3-count);
                        count++;
                }
                if((int)time(NULL)==time_save+3)
                        break;
        }
        
        play();

        
}















int information(void)
{

        
        
        system("cls");
        
        jinan_time= ((int)time(NULL)-time_save); //현재 시간에서 처음 시간을 빼서 소요 시간 저장
        printf("\n\t\t\t\t 점수:%d  횟수:%d/%d  소요시간:%d초\n\n\n\n\n\n\n\n",score,hwaesu,hwaesu_count,jinan_time);
}

  Hit : 12318     Date : 2009/01/31 10:42



    
someone3 이거 변수 관리를 어떻게 해야하는건가요? 하나하나 다 설명을 달아야 하나요? 2009/01/31  
jung456 전 긴자리수 곱셈,덧셈이 그렇게 어렵더라구요 ㅠㅠ 2009/01/31  
someone3 아 책 구조체, 문자열 처리 함수, 파일입출력을 안봤네요... 쩝 2009/01/31  
jung456 변수를 좀 정리해주시면 더 좋을듯 합니다.
초보가 줄 수를 줄이려고 하는건 좋지 않긴 합니다만,
그래도 너무 길면 또 보기가 힘들거든요.
비슷한 종류의 변수끼리 정리를 해주시면 좋겠네요 ^^
2009/01/31  
someone3 아 감사합니다. 그런데? 정해진 방법이란건 없는건가요? 제가 생각한대로 맘대로 짜도 그리 나쁘지만 않다면 허용이 되는건가요? 예를들어서 프로그래머가 짤 때 이런경우엔 거의 꼭 이런 방법을 사용한다 이런게 있을 것 같은데요... 너무 걱정을 많이 하나... 2009/02/01  
prosper 꾸준히 많이 해보세요..
자꾸 해보다 보면 늘껍니다.
while 구문이 너무 많아 보이네요.. (오타 수정)
최적화 알고리즘이란 것도 나중에 생각하게 될 날이 오게 될껍니다.
물론 맘대로 짜도 나쁘진 않습니다만..
지금 부터 체계적으로 생각해서 짤려고하면.. 쉽지 않을껍니다.

다 때가 있으니 지금은 할 수 있는 한도에서 최선을 다하시면 될것 같네요.
2009/02/01  
muzen Coding Convension 이라고 좋은 문서들이 많이있습니다.
보통 다수가 개입되는 프로젝트나, 유지보수, 가독성의 용의함때문에
변수명에 타입이나 속성에 따라 대문자를 쓰느니 마느니, 이름은 어떻게 적어야 하느니
라는 부분이 있습니다. 보통 변수명 타입에 관한건 헝가리안 표기법을 많이 따르곤합니다.
2009/02/02  
someone3 감사합니다~ 많이 보고 많이 짜보고 고민해야겠네요 2009/02/02  
     [공지]해커스쿨 이용수칙 2021/04/11 수정판 [55] 한승재 01/05 12824
22019   해커구함[1]    New! k1230
10/04 31
22018   카타고 AI[1]     해킹잘하고싶다
10/01 55
22017   시스코 라우터랑 스위치 케이블 장비 질문이에요.[1]     해킹잘하고싶다
09/22 116
22016   ㅇㅅㅇ     해킹잘하고싶다
08/15 297
22015   요즘 하고 있는 거     해킹잘하고싶다
07/13 506
22014   2위 ㅇㅅㅇ     해킹잘하고싶다
07/13 442
22013   ...     해킹잘하고싶다
03/31 833
22012   ...     해킹잘하고싶다
03/25 814
22011   15년전쯤 이 사이트 보고 꿈을 정했었는데~~~[1]     ambition65
03/20 1218
22010   으앙!!![1]     해킹잘하고싶다
02/05 957
22009   오랜만~     DarkSlayer
12/11 1156
22008   해커스쿨 옛날 BGM[1]     wkfhddl4041
11/07 1257
22007   히잉...     해킹잘하고싶다
11/02 1082
22006   바둑과 장기     해킹잘하고싶다
10/30 1168
22005   나는 언제 애인이 생기나욤...     해킹잘하고싶다
10/27 1247
22004   전국 1위     해킹잘하고싶다
10/27 1190
22003   담배 ㅋㅋ[1]     해킹잘하고싶다
10/27 1195
22002   매트릭스의 파란약을 아십니까..?     해킹잘하고싶다
10/27 1148
22001   ㅇㅇ[1]     해킹잘하고싶다
10/20 1118
1 [2][3][4][5][6][7][8][9][10]..[1101]

Copyright 1999-2026 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org