[C언어] shell sort 프로그램
- 등록일 / 수정일
- 페이지 / 형식
- 자료평가
- 구매가격
- 2007.11.07 / 2019.12.24
- 5페이지 / zip (압축파일)
- 평가한 분이 없습니다. (구매금액의 3%지급)
- 1,200원
추천 연관자료
- 목차
-
#define MAXMAJOR 9 /*전공의 최대 크기*/
#define MAXNAME 10 /*이름의 최대 크기*/
typedef struct _people { // 학생 자력이 입력될 변수.
char *major; // 전공
char *name; // 이름
double point; // 학점
} people;
people *Get_DataFromFile(char *s, int *cnt); // 파일로 부터 자료를 받아오는 함수.
people *Save_Data(people *t, people *s, int n); // 자료를 다른 변수로 옮기는 함수.
char *Get_major(char *t); // 전공을 저장하는 함수.
char *Get_name(char *t); // 이름을 저장하는 함수.
void print_Data(int *index, people *t, int n); // 자료를 출력하는 함수.
int double_cmp(const people a, const people b); // 학점을 비교하는 함수.
int str_cmp(const people a, const people b); // 이름을 비교하는 함수.
void shell_sort(int *index, people *base, int nelem, int (*fcmp)(const people, const people)); // 정렬 함수.
- 본문내용
-
int main(int argc, char *argv[])
{
int i, cnt = 0;
people *data;
int *index;
char *s = "infile.txt";
if(argc == 1) data = Get_DataFromFile(s, &cnt); // 프로그램 시작할 때 파일명을 안주면 infile 오픈.
else{
data = Get_DataFromFile(*++argv, &cnt); // 프로그램 시작시 입력한 파일명으로 자료 저장.
}
index = (int *)malloc(sizeof(int) * cnt); // 인덱스 배열 생성.
for(i = 0; i < cnt; i++) index[i] = i;
shell_sort(index, data, cnt, str_cmp); // 이름순으로 정렬.
print_Data(index, data, cnt); // 출력.
printf("\n\n");
shell_sort(index, data, cnt, double_cmp); // 학점순으로 정렬.
print_Data(index, data, cnt); // 출력.
printf("\n\n");
free(index);
return 1;
}
people *Get_DataFromFile(char *s, int *cnt)
{
///////////////////////////////////////////////////////////////////////////
/*파일로 부터 자료를 저장하는 함수. 동적으로 배열을 생성하여 자료를 입력. /
/ 입력하면서 자료의 개수를 함께 증가시켜준다. */
///////////////////////////////////////////////////////////////////////////
char strbuf[10];
people *temp, *data;
FILE *in;
in = fopen(s, "r"); // 파일 오픈.
if(!in) { printf("File not found.\n"); return 0; } // file이 없는 경우 오류처리.
temp = (people *)malloc(sizeof(people)); // 이전 자료를 저장할 변수.
while(fscanf(in, "%s", strbuf) != EOF) {
data = Save_Data(temp, data, *cnt); // 자료를 저장할 구조체를 선언하고 이전 자료 저장.
data[*cnt].major = Get_major(strbuf); // 전공 저장.
if(fscanf(in, "%s", strbuf) != EOF) { data[*cnt].name = Get_name(strbuf);} // 이름 저장.
if(fscanf(in, "%s", strbuf) != EOF) { data[*cnt].point = atof(strbuf);} // 학점 저장.
*cnt += 1; // 카운터 증가.
temp = Save_Data(data, temp, *cnt); // 이전 자료를 저장.
}
fclose(in);
free(temp);
return data;
}
자료평가
-
아직 평가한 내용이 없습니다.
오늘 본 자료
더보기
최근 판매 자료
- [조경실무]조경실무 - 도시경관의 문제점과 발전방향
- 바이오인포매틱스(생물정보학)개념, 바이오인포매틱스(생물정보학)정보과학적기법, 바이오인포매틱스(생물정보학)현황, 바이오인포매틱스 과제
- [생물학] 유전자와 돌연변이
- 디지털 회로 실험 및 설계 - ADC(Analog to Digital Converter) 실험 1
- 회로이론1 이정훈 년도 표기
- 회로이론1 이정훈 년도 표기 X
- 연세대 고려대 성균관대 한양대 기계공학 대학원 구술면접자료 및 공부
- 전자기학 응용예제_04장 hayt
- [생화학 실험] TLC를 이용한 아미노산의 적정실험
- 광결정(Photonic crystal)
저작권 관련 사항 정보 및 게시물 내용의 진실성에 대하여 레포트샵은 보증하지 아니하며, 해당 정보 및 게시물의 저작권과 기타 법적 책임은 자료 등록자에게 있습니다. 위 정보 및 게시물 내용의 불법적 이용, 무단 전재·배포는 금지됩니다. 저작권침해, 명예훼손 등 분쟁요소 발견시 고객센터에 신고해 주시기 바랍니다.