기금넷 공식사이트 - 복권 조회 - 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)

{

플래그 =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)

{

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

{

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

return 1;

}

int n, m

/*1_15 파일에서 선수 및 투표 기록 읽기* /

void readfiles()

{

n=load_sporter() /*파일에서 후보 선수 기록 읽기*/

printf_n(n );/* 후보 선수 기록 표시*/

m=load_vote();/*파일에서 투표 기록 읽기*/

}

/*1_16 . 상위 10명의 선수 계산*/

void calctensp()

{

stat_vote(m) /*vote*/

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

{

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

}

/* (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");

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() /************************주요 기능***** ************ *****/

{

메뉴();

}