레포트샵

fileicon[C언어] shell sort 프로그램

이전

  • icon

다음

  • 최대 100페이지까지 확대보기 서비스를 제공합니다.

> 레포트 > 공학계열 > 자료상세보기 (자료번호:181046)

구매가격
1,200원 할인쿠폰1,080원
등록/수정
2007.11.07 / 2007.11.08
파일형식
fileiconzip(압축파일) [무료뷰어다운]
페이지수
5페이지
자료평가
평가한 분이 없습니다.
등록자
lhil008
  • 다운로드
  • 장바구니 담기

닫기

이전큰이미지 다음큰이미지
  • 트위터
  • 페이스북
신규가입 200원 적립! + 10% 할인쿠폰 3장지급! banner구매자료를 평가하면 현금처럼 3%지급!

소개글

[C언어] shell sort 프로그램에 대한 자료입니다.

목차

#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;
}

태그 쉘소트, shellsort, 정렬프로그램, 자료구조, 일반화함수

자료평가

아직 평가한 내용이 없습니다.

오늘 본 자료

  • 오늘 본 자료가 없습니다.
  • img

    저작권 관련 사항 정보 및 게시물 내용의 진실성에 대하여 레포트샵은 보증하지 아니하 며, 해당 정보 및 게시물의 저작권과 기타 법적 책임은 자료 등록자에게 있습니다. 위 정보 및 게시물 내용의 불법적 이용, 무단 전재·배포는 금지됩니다. 저작권침해, 명예훼손 등 분쟁요소 발견시 고객 센터에 신고해 주시기 바랍니다.