기금넷 공식사이트 - 복권 조회 - C 언어로 상을 받은 선발 프로그램을 설계하는 데 누가 도움을 줄 수 있나요? 제목은 다음과 같습니다. 상위 10명의 선수 선정(1. 기능적 요구 사항)
C 언어로 상을 받은 선발 프로그램을 설계하는 데 누가 도움을 줄 수 있나요? 제목은 다음과 같습니다. 상위 10명의 선수 선정(1. 기능적 요구 사항)
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
# N 50 정의
#define M 500
struct sporter
{
int num;
문자 이름 [20];
int vote_num;
}spt[N] /* spt[N]의 각 배열 요소는 선수 정보에 해당하며 vote_num은 투표 수를 기록합니다. */
구조체 투표
{
문자 ID[10]
문자 이름[20]; p> 문자 주소[20];
int a[10];
int Score_order; /*순서 점수*/
int Score_hit;/*hit Score* /
int Score_sum;
}vot[M] /* vot[M]의 각 배열 요소는 투표 정보에 해당하며 Score_sum은 적중률을 기록합니다. 투표의 수*/
void printf_back();
void menu();
void menu_vote();
int save_spt ();
void printf_onevote(int j);
int load_vote();
void search_vote();
void search_vote ()
{
int m, i, flag=0;
char 대[20]
printf("제발 input vote_id:\n" );
scanf("s", amp; vs);
m=load_vote();
for(i= 0; m; i )
{
if(strcmp(vs,vot[i].id)==0)
{ p>
플래그 =1;
printf_onevote(i);
}
}
if(flag==1 )
printf("찾았습니다!");
else
printf("찾을 수 없습니다!")
printf_back() ;
}
/*1_1. 선수 후보 기록을 로드하고 기록 수를 계산할 수 있는 함수*/
int load_sporter() /*기록을 로드합니다. 그리고 레코드 수를 계산할 수 있습니다. 함수 */
{FILE *fp
int i
if((fp=fopen("sporter.txt; ", "r")) ==NULL) /*출력 모드에서 열면 이전 레코드를 덮어씁니다*/
{printf("\nC
파일을 열지 않음\n");
return 0;
}
for(i=0;!feof(fp);i )
fscanf(fp, "ds", amp; spt[i].num, amp; spt[i].name)
fclose(fp); return(i); /*기록 개수를 반환합니다*/
}
/*1_2. 선수의 기록을 표시하는 함수*/
void printf_one ( int i)
{
printf("2d -17s d \n", spt[i].num, spt[i].name, spt[i].vote_num ) ;
}
/*1_3. n명의 선수 기록을 표시하는 함수*/
void printf_n(int n)
{ int j;
for(j=0;jlt;n;j)
{
if(j10==0)
{ printf("\n\n계속하려면 아무 키나 전달하세요. . .")
getchar()
puts("\n\n")
p >}
printf_one(j);
}
getchar();
}
/*1_4. 후보자 투표 기록을 로드하고 기록 수를 계산하는 함수*/
int load_vote()
{FILE *fp;
int i, j;
if((fp=fopen("vote.txt", "r"))==NULL)
{printf("\n파일을 열 수 없습니다\ n ");
0 반환;
}
for(i=0;!feof(fp);i )
{ fscanf(fp, "sss", & vot[i].id, & vot[i].name, & vot[i].address);
for(j=0;jlt ; 10 ; j )
fscanf(fp, "d", amp; vot[i].a[j])
}
fclose( fp) ;
return(i); /*기록 개수를 반환합니다*/
}
/*1_5. /p>
void printf_onevote(int j)
{
int i;
printf("vote_id: s\n",vot [j ].id);
printf("vote_name: s vote_address: s\n", vot[j].name, vot[j].address);
printf (" vote_sporter: ");
for(i=0;ilt;10;i)
printf("d, ",vot[j].a[i]
);
printf("\n\n");
}
/*1_6. n개의 복권 기록을 표시하는 기능*/
void printf_n_vote(int m)
{int j;
for(j=0;jlt;m;j)
{ p >
if(j10==0)
{ printf("\n계속하려면 아무 키나 전달하세요. . .")
getchar(); p> puts("\n\n");
}
printf_onevote(j);
}
getchar( ) ;
}
/*1_7. 투표 기능*/
void stat_vote(int m)
{
int i,j,k;
for(i=0;ilt;=m;i)
{
for(j=0 ; jlt;10;j )
for(k=0;klt;20;k )
if(vot[i].a[j]==spt[k] . num)spt[k].vote_num;
}
}
/*1_8 투표 수를 기준으로 선택 정렬 방법을 사용합니다. */
void order_by_vote(int m)
{
int i, j, k
struct sporter s; p>
for(i=0;ilt;m-1;i)
{ k=i;
for(j=i 1;jlt;m;j ) if( spt[j].vote_numgt; spt[k].vote_num)k=j;
s=spt[i]; spt[i]=spt[k]= s;
}
}
/*1_9. 상위 10개 정보를 표시하고 파일 함수로 출력합니다*/
void print_spt10( ) p>
{
int i;
printf("\n\n최고의 운동선수 10인은 다음과 같습니다:\n");
printf(" 순서, 번호, 이름, vote_num\n");
for(i=0; ilt; 10; i )
{
printf ("5d : 3d, 10s, d \n", i 1, spt[i].num, spt[i].name, spt[i].vote_num)
}
getchar();
save_spt();
}
/*1_10 저장 기능*/
int save_spt () / *저장 기능, 상위 10명의 선수 기록 저장*/
{FILE *fp1;
int i;
if((fp1 =fopen("spt10.txt", "w"))==NULL) /* 출력 모드에서 열기
, 이전 레코드를 덮어씁니다*/
{printf("\n파일을 열 수 없습니다\n")
return 0;
for(i=0;ilt;10;i)
fprintf(fp1, "d s d\n", spt[i].num, spt[i].name, spt[i ] .vote_num);
fclose(fp1);
return 1;
/*1_11. /
int calc_hit(int m)
{FILE *fp>
int i, j, k
struct sporter s; [10];
for(i=0;ilt;10;i)
{
s[i]=spt[i];< / p>
}
for(i=0;ilt;m;i)
for(j=0;jlt;10;j)
for(k=0;klt;10;k)
{
if(vot[i].a[j]==s[j].num) vot [ i].score_order =9-j; /*순서*/
if(vot[i].a[j]==s[k].num) vot[i].score_hit = 10; /*적중 점수*/
vot[i].score_sum=vot[i].score_hit vot[i].score_order;
}
if( (fp=fopen("hit.txt","w"))==NULL)
{printf("\n파일을 열 수 없습니다\n");
return 0;
}
for(i=0; ilt; m; i )
fprintf(fp, "s d d d\n", vot[i] .id , vot[i].score_order, vot[i].score_sum)
fclose(fp) return 1; p>}
/*1_12 선택 정렬 방법을 사용하여 적중률에 따라 투표를 정렬합니다*/
void sort_vote(int m)
{
int i, j, k;
구조 투표 v
for(i=0; ilt; m-1; i )
{ k=i;
for(j=i 1;jlt;m;j) if(vot[j].score_sumgt;vot[k].score_sum)k=j;< /p >
v=vot[i]; vot[k]=v
}
/*1_13. 상위 10명의 우승 후보자의 정보 함수를 표시합니다*/
void print_vot10()
{
int i;
p>
printf("\n\n가장 좋은 유권자 10명은 다음과 같습니다:\n");
p>
printf("order, id, name, vote_sum\n"); /*순위 투표 번호 이름 적중률*/
for(i=0; ilt; 10; i)
{
printf("5d: s, 10s, d \n", i 1, vot[i].id, vot[i].name, vot[i]. Score_sum);
}
getchar();
}
/*1_14. 상위 10명의 당첨자 정보를 저장합니다. 파일에 대한 함수 */
int save_vot10()
{FILE *fp1;
int i;
if((fp1 = fopen("vot10.txt", "w"))==NULL) /*출력 모드에서 열면 이전 레코드를 덮어씁니다*/
{printf("\n파일을 열 수 없습니다\n ") ;
0 반환
}
for(i=0; ilt; 10; i )
fprintf(fp1 , " 5d: s, 10s, d \n", i 1, vot[i].id, vot[i].name, vot[i].score_sum);
fclose(fp1); p>
return 1;
}
int n, m
/*1_15 파일에서 선수 및 투표 기록 읽기* / p>
void readfiles()
{
n=load_sporter() /*파일에서 후보 선수 기록 읽기*/
printf_n(n );/* 후보 선수 기록 표시*/
m=load_vote();/*파일에서 투표 기록 읽기*/
}
/*1_16 . 상위 10명의 선수 계산*/
void calctensp()
{
stat_vote(m) /*vote*/ p>
order_by_vote(n); /*투표수에 따라 선수 기록 정렬*/
print_spt10() /*상위 10명의 선수 정보 출력*/
}< / p>
/*1_17. 10명의 우승 후보 계산*/
void stattenvoter()
{
calc_hit(m) /* 투표 적중률*/
sort_vote(m); /*적중률에 따라 투표 기록 정렬*/
print_vot10() /*10개의 당선작 표시 information*/
save_vot10();/*당선자 10명의 정보를 파일에 출력*/
}
/*1_18. /
void stat()
{
readfiles();
calctensp();
stattenvoter ();
}
/*2_1. 투표 기능 검색*/
void browser_vote()
{ p>
int k;
k=load_vote();
prin
tf_n_vote(k);
printf_back();
}
/*2_2. /*투표 기능 찾기*/
/ ////////////////////////////////////
////// ////////////////////////
/*2_3 투표 기능 확인*/
void check ()
{
int n, w;
/*변수 n은 선택 메뉴 번호를 저장하고, w는 입력된 번호가 범위 내에 있는지 여부를 결정합니다. 기능 메뉴의 해당 숫자 범위 Inside*/
do
{
puts("\t\t********* *************** ****메뉴**********************\n\n");
puts("\t\t\t\ t 1.browse_vote") /*모든 복권 찾아보기*/
puts("\t\t\t\t 2 .search_vote"); /*복권 정보를 찾으려면 복권 번호를 입력하세요*/
puts("\t\t\t\t 3.back"); /*return*/
puts("\n\n\t\t **** ******************************* *********\n");
printf("번호 선택(1-3): [ ]\b\b");
scanf ("d", amp; n);
if(nlt; 1||ngt; 3) /*선택한 숫자를 판단합니다*/
{
w=1;
getchar() ;
}
else {w=0;}
}while(w= =1);
/*함수 선택 */
switch(n)
{case 1: browser_vote(); /*통계 모듈* /
사례 2: search_vote(); /*투표 모듈 찾기*/
사례 3: menu(); > }
}
/*공개*** 기능*/
/*(1) 작업이 끝나면 종료하거나 돌아가도록 선택* /
void printf_back()
{int w;
printf("\n\n\t성공했습니다. ^_^\n\n");
printf("무엇을 하시겠습니까? \n \n\t1).종료\t2).뒤로: [ ]\b\b");
scanf( "d",amp;w);
if(w ==1)exit(0);
else menu_vote()
} p>
/* (2) 작업이 끝나면 종료하거나 메인 페이지로 돌아가도록 선택합니다. Menu*/
void menu()
{
int n, w;
/*변수 n은 선택 메뉴 번호를 저장하고, w는 입력된 번호가 기능 메뉴의 해당 번호 범위 내에 있는지 여부를 결정합니다.*/
do
{
puts("\t\t************************메뉴************** ******** \n\n");
puts("\t\t\t\t 1.통계"); /*통계*/
puts("\t\t \t\t 2.check_vote"); /*투표 확인*/
puts("\t\t\t\t 3.exit"); 종료*/
puts("\n\n\t\t ***************************** ******** *********\n");
printf("번호를 선택하세요(1-3): [ ]\b\b");
scanf ("d",amp;n);
if(nlt;1||ngt;3) /*선택한 숫자를 판단합니다*/
{
w=1;
getchar();
}
else w=0;
}
while(w==1);
/*기능 선택*/
스위치(n)
{케이스 1: stat(); break; /*통계 모듈*/
케이스 2: check(); /*투표 모듈 확인*/
케이스 3: 종료 (0); /*종료* /
}
}
/* (3) 종료하거나 마지막에 추첨 확인 메뉴로 돌아가기를 선택합니다. 작업*/
void menu_vote()
{
int n, w;
/*변수 n은 선택한 항목을 저장합니다. 메뉴 번호, w는 입력된 번호가 기능 메뉴의 해당 번호에 있는지 확인합니다. 범위 내*/
do
{
puts("\ t\t******************** *****메뉴************************\ n\n");
puts("\t\t\t \t 1.browse_vote"); /*모든 복권 찾아보기*/
puts("\t \t\t\t 2.search_vote"); /*복권 정보를 찾으려면 복권 번호를 입력하세요*/
puts("\t\t\t\t 3.esc");/ *반환*/
puts("\n\n\t\t *** ************************* ****************\n"); p>
printf("번호를 선택하세요(1-3): [ ]\b\b");
scanf("d", amp; n);
if(nlt; 1||ngt; 3) /*선택한 숫자를 판단합니다*/
{
w=1;
getchar();
}
else {w=0;}
}while(w== 1);
/*함수 선택*/
switch(n)
{case 1: browser_vote(); /*통계 모듈*/
사례 2: search_vote(); /*투표 모듈 검색*/
사례 3: Exit(0) /*Exit*/
}
}
main() /************************주요 기능***** ************ *****/
{
메뉴();
}