#include <stdio.h>

#include <string.h>

#define COUNT 3


void ex01()

{

char name[COUNT][10], key[10], temp_name[10]; //3명의 이름 입력

int kor[COUNT], eng[COUNT], math[COUNT], tot[COUNT], i, j, rank[COUNT], temp_int;

double avg[COUNT], temp_avg;


for (i = 0; i < COUNT; i++)

{

printf("%d번 이름 입력 : ", i + 1);

scanf("%s", name[i]);

printf("국어 성적 입력: ");

scanf("%d", &kor[i]);

printf("영어 성적 입력: ");

scanf("%d", &eng[i]);

printf("수학 성적 입력: ");

scanf("%d", &math[i]);


tot[i] = kor[i] + eng[i] + math[i];

avg[i] = (double)tot[i] / COUNT;

rank[i] = 1;

}

for (i = 0; i < COUNT - 1; i++)

{

for (j = i + 1; j < COUNT; j++)

{

if (strcmp(name[i], name[j]) > 0) //앞이 큰 경우 양수, 뒤에가 클 경우 음수, 같으면 0 

{

strcpy(temp_name, name[i]); //i번째를 임시변수에 넣는다

strcpy(name[i], name[j]);

strcpy(name[j], temp_name);

temp_int = kor[i];

kor[i] = kor[j];

kor[j] = temp_int;


temp_int = eng[i];

eng[i] = eng[j];

eng[j] = temp_int;


temp_int = math[i];

math[i] = math[j];

math[j] = temp_int;


temp_int = tot[i];

tot[i] = tot[j];

tot[j] = temp_int;


temp_avg = avg[i];

avg[i] = avg[j];

avg[j] = temp_avg;


}

}

}


for (i = 0; i < COUNT - 1; i++)

{

for (j = i + 1; j < COUNT; j++)

{

if (avg[i] < avg[j])

rank[i]++;

else if (avg[i] > avg[j])

rank[j]++;

}

}

printf("조회할 이름을 검색: ");

scanf("%s", key);

int n = binary_search(name, key);

if (n == -1)

printf("찾는 값이 없습니다.\n");

else

{

printf("탐색 결과 배열주소는 [%d] 입니다. \n", n);


printf("   성명  국어  영어  수학  총점  평균  석차 \n");


printf("%7s %5d %5d %5d %5d %5.1lf %5d \n", name[n], kor[n], eng[n], math[n], tot[n], avg[n], rank[n]);


}

}



int binary_search(char name[][10], char key[10])

{

int high = COUNT-1;

int low = 0;

int mid = 0;


while (low<=high)

{

mid= (high + low) / 2;

if (strcmp(name[mid],key) == 0)

return mid;

else if (strcmp(name[mid], key) > 0)

high = mid - 1;

else

low = mid + 1;

}

return -1;

}

'공부 > C' 카테고리의 다른 글

LED전광판 만들기  (1) 2016.06.22
2개의 정렬  (0) 2016.06.17
선택정렬  (0) 2016.06.08
10진수 2진수 변환  (0) 2016.06.01
배열 사용 안하고 10진수 > 2진수 변환 C  (0) 2016.06.01

+ Recent posts