|
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
|