목차
없음
본문내용
list[], int n,int key_pos);
: 힙정렬 함수
5) void merge(SCORE list[], SCORE sorted[], int i, int m, int n,int key_pos);
: 병합정렬 보조함수
6) void merge_sort(SCORE list[], int n,int key_pos);
: 병합정렬 함수
7) void merge_pass(SCORE list[], SCORE sorted[], int n, int length,int key_pos);
:병합정렬 보조함수
▶ 그 외 함수들
1) void malloc_subject(int count)
: 메모리를 할당 하는 함수.
//헤더 구조체의 과목이름 메모리 할당
class_h.field=(char **)malloc(sizeof(char *)*(count+2));
for (i=0;i
class_h.field[i]=(char *)malloc(sizeof(char)*SUBJECT_SIZE);
//스코어 구조체의 학번,과목,총점 메모리 할당
for (i=0;i
{
class_s[i].field=(int *)malloc(sizeof(int)*(count+2));
memset(class_s[i].field,0x00,sizeof(int *)*(count+2));
}
s=trim(s);
if (strlen(s)<=0)return -1;
else
{
temp=strtok(s," ");
if((s_object=find_subject_from_name(temp))==-1)
{
puts("과목 입력이 잘못되었습니다.");return -1;
}
temp=strtok(NULL," ");
if((s_method=find_sort_method_from_name(temp))==-1)
{
puts("정렬방법 입력이 잘못되었습니다.");return -1;
}
return 1;
}
- 먼저 class_h.field에 메모리를 할당한다. 2차 배열이어야 하므로 먼저 과목의수+2(학번,총점) 만큼 char형 이중 포인터로 메모리를 할당 받고, 이것을 다시 for문으로 각 field마다 SUBJECT_SIZE만큼의 포인터로 할당을 받는다. 정적 할당에서의 field[a][b]와 같다.
- 각 학생 데이터마다 field에 과목갯수+2(학번,총점)만큼 int형 포인터로 메모리 할당을 받는다. 그리고 할당 받은 메모리를 초기화 시켜준다.
2 )int parse_input(char *s)
: 명령어 입력을 해석 한다.
- 입력된 명령어를 strtok()함수를 사용해서 공백을 구분자로 나눈다. 문자열의 왼쪽부분을 추출해서 S-ID,과목명들,TOTAL과 비교해서 s_object(정렬 대상을 가리키는 변수)에 넣어주고, 그 값이 -1이면 해당 과목이 없다는 뜻이므로 오류 메시지 출력하고 -1(프로그램 종료)를 리턴해준다. 문자열의 오른쪽 부분을 추출해서 INSERTION, QUICK, HEAP, MERGE과 비교해서 s_method(정렬 방법을 가리키는 변수)에 넣어주고, 그 값이 -1이면 해당 정렬 방법이 없다는 뜻이므로 오류 메시지 출력하고 -1(프로그램 종료)값을 리턴 해준다. 정렬 대상과 정렬 방법을 찾았다면 1을 리턴해서 main()함수에서 적절한 정렬 함수를 호출해서 정렬 시켜준다.
3. 실행 화면
1) 디렉토리, 컴파일
2) 실행 화면
4. 구현 환경
1) OS : Debian Linux/3.0r (Woody)
2) Programming Language : C
3) Compiler : gcc 2.95.4
4) Editor : vi editor
: 힙정렬 함수
5) void merge(SCORE list[], SCORE sorted[], int i, int m, int n,int key_pos);
: 병합정렬 보조함수
6) void merge_sort(SCORE list[], int n,int key_pos);
: 병합정렬 함수
7) void merge_pass(SCORE list[], SCORE sorted[], int n, int length,int key_pos);
:병합정렬 보조함수
▶ 그 외 함수들
1) void malloc_subject(int count)
: 메모리를 할당 하는 함수.
//헤더 구조체의 과목이름 메모리 할당
class_h.field=(char **)malloc(sizeof(char *)*(count+2));
for (i=0;i
//스코어 구조체의 학번,과목,총점 메모리 할당
for (i=0;i
class_s[i].field=(int *)malloc(sizeof(int)*(count+2));
memset(class_s[i].field,0x00,sizeof(int *)*(count+2));
}
s=trim(s);
if (strlen(s)<=0)return -1;
else
{
temp=strtok(s," ");
if((s_object=find_subject_from_name(temp))==-1)
{
puts("과목 입력이 잘못되었습니다.");return -1;
}
temp=strtok(NULL," ");
if((s_method=find_sort_method_from_name(temp))==-1)
{
puts("정렬방법 입력이 잘못되었습니다.");return -1;
}
return 1;
}
- 먼저 class_h.field에 메모리를 할당한다. 2차 배열이어야 하므로 먼저 과목의수+2(학번,총점) 만큼 char형 이중 포인터로 메모리를 할당 받고, 이것을 다시 for문으로 각 field마다 SUBJECT_SIZE만큼의 포인터로 할당을 받는다. 정적 할당에서의 field[a][b]와 같다.
- 각 학생 데이터마다 field에 과목갯수+2(학번,총점)만큼 int형 포인터로 메모리 할당을 받는다. 그리고 할당 받은 메모리를 초기화 시켜준다.
2 )int parse_input(char *s)
: 명령어 입력을 해석 한다.
- 입력된 명령어를 strtok()함수를 사용해서 공백을 구분자로 나눈다. 문자열의 왼쪽부분을 추출해서 S-ID,과목명들,TOTAL과 비교해서 s_object(정렬 대상을 가리키는 변수)에 넣어주고, 그 값이 -1이면 해당 과목이 없다는 뜻이므로 오류 메시지 출력하고 -1(프로그램 종료)를 리턴해준다. 문자열의 오른쪽 부분을 추출해서 INSERTION, QUICK, HEAP, MERGE과 비교해서 s_method(정렬 방법을 가리키는 변수)에 넣어주고, 그 값이 -1이면 해당 정렬 방법이 없다는 뜻이므로 오류 메시지 출력하고 -1(프로그램 종료)값을 리턴 해준다. 정렬 대상과 정렬 방법을 찾았다면 1을 리턴해서 main()함수에서 적절한 정렬 함수를 호출해서 정렬 시켜준다.
3. 실행 화면
1) 디렉토리, 컴파일
2) 실행 화면
4. 구현 환경
1) OS : Debian Linux/3.0r (Woody)
2) Programming Language : C
3) Compiler : gcc 2.95.4
4) Editor : vi editor
키워드
추천자료
- 공개키 기반구조(PKI)
- 기업자본구조 분석
- 기계공학 data acquisition system(DAQ)
- 용어해설(구조해석)
- 컴퓨터구조론-제1장컴퓨터시스템개요
- 커피산업의 유통 구조
- [주류 유통 구조] 국내 외 유통관리 분석과 문제 확인 및 해결 방안 제시
- [생체][생체와 생체막][라이너스폴링 생체물질구조][생체신호][생체역학][생체인증시스템]생...
- [기술적범용마크업언어]SGML(기술적범용마크업언어)의 특성, 장점, SGML(기술적범용마크업언...
- E-BIZ(인터넷비지니스, E비즈니스, 이비즈니스)의 개념, 성격, E-BIZ(인터넷비지니스, E비즈...
- 구글-조직운영,구글의 경영방식,구글의 조직구조 · 조직관리 적용,브랜드마케팅,서비스마케...
- 한 · 러 FTA 추진 예측과 이에 따른 국내 내부 협상 방향 분석 (러시아 거시경제 데이터, 러...
- 소프트웨어 정의 네트워킹-SDN의 특찮 원칙,데이터센터 네트워크,빅스위치의 SDN 활용,클라우...
소개글