2007_2_project4

Similar documents
슬라이드 1

BMP 파일 처리

chap7.key

歯9장.PDF

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍


Microsoft PowerPoint - chap13-입출력라이브러리.pptx

chap 5: Trees

C++ Programming

11장 포인터

untitled

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

금오공대 컴퓨터공학전공 강의자료

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

슬라이드 1

설계란 무엇인가?

PowerPoint 프레젠테이션

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

슬라이드 1

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

chap10.PDF

11강-힙정렬.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

2002년 2학기 자료구조

Chapter 4. LISTS

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

02 C h a p t e r Java

Microsoft PowerPoint - 04-UDP Programming.ppt

C# Programming Guide - Types

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Chapter 4. LISTS

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

untitled

Microsoft PowerPoint - lecture2.ppt

PowerPoint Template

Microsoft PowerPoint - 제11강 파일 처리

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

13주-14주proc.PDF

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - CSharp-10-예외처리

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

07 자바의 다양한 클래스.key

쉽게 풀어쓴 C 프로그래밍

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

슬라이드 1

자바 프로그래밍

No Slide Title

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint 프레젠테이션


4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

PowerPoint Template

Deok9_Exploit Technique

Chapter #01 Subject

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Microsoft PowerPoint - Java7.pptx

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

C++-¿Ïº®Çؼ³10Àå

6주차.key

Microsoft PowerPoint - a10.ppt [호환 모드]

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

adfasdfasfdasfasfadf

Microsoft PowerPoint - Chapter 6.ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

설계란 무엇인가?

Computer Programming (2008 Fall)

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

[ 정보 ] 과학고 R&E 결과보고서 Monte Carlo Method 를이용한 고교배정시뮬레이션 연구기간 : ~ 연구책임자 : 강대욱 ( 전남대전자컴퓨터공학부 ) 지도교사 : 최미경 ( 전남과학고정보 컴퓨터과 ) 참여학생 : 박진명 ( 전

C프로-3장c03逞풚

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

강의10

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter_09.pptx

Chapter 4. LISTS

05-class.key

C++ Programming

Microsoft PowerPoint - Lesson13.pptx

12-file.key

Microsoft PowerPoint APUE(File InO).pptx

쉽게 풀어쓴 C 프로그래밍

Transcription:

Programming Methodology Instructor: Kyuseok Shim Project #4: external sort with template Due Date: 0:0 a.m. between 2007-12-2 & 2007-12-3 Introduction 이프로젝트는 C++ 의 template을이용한 sorting algorithm과정렬해야할데이터의크기가 main memory의크기를넘어갈때데이터를정렬하는 external sorting algorithm을구현하는것이다. Implementation 1. in memory sorting algorithm. memory안에들어갈수있는크기의데이터를정렬하는 heap-sort을구현한다. 데이터의 type은정해져있는것이아니라 template을사용하고, 정렬은오름차순으로한다. 2. main memory의크기보다큰사이즈의데이터를정렬하는 external sorting algorithm을구현한다. 입력파일과결과파일은 text형태이다 중간생성파일들은 text 형태가아닌 binary 형태로저장한다 page size는 1024 byte로고정한다 Input & Output input file은숫자들의집합이다. 첫줄의첫번째숫자는현재파일에들어있는데이터의개수를나타내고그다음은 S/I/L/F/D 중한문자이다 short, int, long, float, double. 다음줄은빈칸이나탭키로구별되는숫자들이나열된다. 100 I // 앞으로 integer 100개가나옴 722 329 62 1958 2 2950 6291 58 942... 2984 output file은정렬된숫자들의집합이다. 각줄마다숫자를하나씩출력한다. 2 66 245...

프로그램실행예시 >( 실행파일 ) ( 입력 ) ( 메모리사이즈-byte) ( 출력 ) 의형식으로실행한다 > external_sort.exe input.txt 102400 output.txt > 참고 1. external sort와 heap의 pseudo-code는게시된 pdf 파일을참고하도록한다. 2. heap 다음 skeleton code를참고한다. 기능만동일하다면아래코드와전혀다르게구현하더라도무방하다. 클래스이름, 함수이름, 함수인자종류등은임의로변경가능 template<class T> class HeapEntry { public : T value; // data int run; // 어느 run에서온 data인가를기록 ; template<class T> class Heap { private: HeapEntry<T> *heap; // heap으로사용할공간 Int maxsize; // allocate 받은 heap size Int cursize; // 현재 heap size, insert나 extract있을때 +/-... // 추가로필요한항목추가 public : Heap(); // Constructor, 필요하면인자추가 ~Heap(); // Destructor int insert(const HeapEntry<T>& h); // Heap에 data를삽입 HeapEntry<T>& extract(); // top node에있는값을반환, 삭제 void build_heap(); // heap을구성하는함수 void heapify(); // 주어진 data로 heap을만듬 HeapEntry<T>& looktop(); // heap의젤윗부분반환, 삭제X... // 추가로필요한항목추가 ;

3. binary 형태로읽고쓰기 C의함수를이용 # 메모리의내용을파일을쓰는함수 size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream ); ptr : Pointer to the array of elements to be written size : Size in bytes of each element to be written count : Number of elements, each one with a size of size bytes stream : Pointer to a FILE object that specifies an output stream example #include <iostream> #include <cstdio> using namespace std; int main() { FILE* pfile; int buffer[5] = {1,2,3,4,5; pfile = fopen("myfile.bin","wb"); if ( pfile == NULL ) { // 파일을열지못했으면오류출력 cerr<<"file error"<<endl; return 1; fwrite(buffer,sizeof(int),5,pfile); // buffer가가리키는주소부터 fclose(pfile); // sizeof(int)*5 byte를 return 0; // pfile에씀

# 파일의내용을메모리에읽어들이는함수 size_t fread (void *ptr, size_t size, size_t count, FILE* stream ); ptr : Pointer to a block of memory with a minimum size of (size*count) bytes size : Size in bytes of each element to be read count : Number of elements, each one with a size of size bytes stream : Pointer to a FILE object that specifies an input stream example #include <iostream> #include <cstdio> using namespace std; int main() { FILE* pfile; int buffer[5]; pfile = fopen("myfile.bin","rb"); if ( pfile == NULL ) { cerr<<"file error"<<endl; return 1; fread(buffer, sizeof(int), 5, pfile);// buffer가가리키는주소로부터 fclose(pfile); // sizeof(int)*5 byte 읽음 for ( int i = 0; i < 5; i++ ) cout<<"buffer["<<i<<"]="<<buffer[i]<<endl; return 0;

# 파일에서원하는위치로포인터를움직이는함수 int fseek ( FILE * stream, long int offset, int origin ); stream : Pointer to a FILE object that identifies the stream offset : Number of bytes to offset from origin origin : Position from where offset is added. It is specified by one of the following constants defined in <cstdio> SEEK_SET - Beginning of file SEEK_CUR - Current position of the file pointer SEEK_END - End of file example #include <iostream> #include <cstdio> using namespace std; int main () { FILE* pfile; int buf; pfile = fopen("myfile.bin","rb"); if ( pfile == NULL ) { cerr<<"file error"<<endl; return 1; fseek(pfile,-sizeof(int),seek_end); // 파일의끝에서 sizeof(int) 이동 fread(&buf,sizeof(int),1,pfile); // 현재위치에서 sizeof(int) byte cout<<"buf : "<<buf<<endl; // 를 buf에카피 ( 읽음 ) fseek(pfile,2*sizeof(int),seek_set); // 파일의시작부분에서 2*sizeof(int) fread(&buf,sizeof(int),1,pfile); //byte 이동해서 sizeof(int) byte cout<<"buf : "<<buf<<endl; // 읽어서출력 return 0;

제출사항 1. 제출방법및내용 1) 프로젝트구현파일제출 - 파일은 ee 홈페이지에과제제출을이용하여제출한다. - 소스파일과컴파일을할수있는파일과실행파일을압축하여제출한다. - 각제출파일이름은다음의형식을따른다. pro_4_ 학번.zip 예 ) pro_4_2007-12345.zip - 각소스파일상단에 E-mail 주소와작성자학번이름을적는다. 2) 보고서제출간단한설명과 discussion을하드카피로제출한다. 2. 제출일시파일제출마감일 : 2007년 12월 2 일과 3일사이새벽 0:00 - 구현파일제출시각은홈페이지과제제출시각에준한다보고서제출마감일 : 2007년 12월 3일오전 12:00( 정오 ) 302동 516-2호앞과제제출함 채점규칙몇가지다양한대용량데이터들에대해서정렬이정확히되는지, 중간생성파일이생성이되는지확인하여채점딜레이는하루에 10% 씩감점 Copy 발견시 F 처리