02장.배열과 클래스

Similar documents
Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

11장 포인터

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

슬라이드 1

PowerPoint 프레젠테이션

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

untitled

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - chap10-함수의활용.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

기초컴퓨터프로그래밍

슬라이드 1

슬라이드 1

슬라이드 1

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

03장.스택.key

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제3장-배열.pptx

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - 제11장 포인터

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

untitled

Microsoft PowerPoint - chap-11.pptx

OCW_C언어 기초

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

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

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

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap06-1Array.ppt

C++ Programming

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

본 강의에 들어가기 전

윤성우의 열혈 TCP/IP 소켓 프로그래밍

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

CHAP 3:배열, 구조체, 포인터

C 프로그래밊 개요

11장 포인터

설계란 무엇인가?

untitled

Microsoft PowerPoint - [2009] 02.pptx

Chapter 4. LISTS


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

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

PowerPoint 프레젠테이션

중간고사 (자료 구조)

Microsoft PowerPoint - chap12-고급기능.pptx

설계란 무엇인가?

Microsoft PowerPoint - Chapter_08.pptx

Microsoft PowerPoint - chap09-1.ppt

Microsoft PowerPoint - Chapter_09.pptx

14 주차구조체와공용체

K&R2 Reference Manual 번역본

Microsoft PowerPoint - 7장 배열 pptx

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

Data Structure

Microsoft PowerPoint - chap06-2pointer.ppt

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

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

컴파일러

Microsoft PowerPoint - C++ 5 .pptx

슬라이드 1

06장.리스트

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

Microsoft PowerPoint - chap03-변수와데이터형.pptx

중간고사

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

歯7장.PDF

chap7.PDF

PowerPoint Presentation

ch15

11장 포인터

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint 프레젠테이션

untitled

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

슬라이드 1

4장. 순차자료구조

Microsoft PowerPoint - chap06-4 [호환 모드]

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

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

슬라이드 1

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

untitled

슬라이드 1


프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

슬라이드 1

03_queue

슬라이드 1

PowerPoint Presentation

Chapter 4. LISTS

Transcription:

---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20

많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 : 홍길동 1 번 2 번 3 번 45 번 전화 : 010-1234-56XX 84 72 94 87 주소 : 서울특별시 XX 구 YY 동 이메일 : kdhong@korea... 반학생들의성적처리 친구주소록만들기 2/20

배열 같은형의변수를여러개만드는경우에사용 여러개의변수선언 : int A0, A1, A2, A3,,A5; 하나의배열선언 : int A[6]; a3 a5 a6 a2 a1 a4 A[0] A[1] A[2] A[3] A[4] A[5] 변수선언 배열선언 만약배열이없다면? 반복문을사용할수없다! 3/20

배열의특징 배열 : < 인덱스, 요소 > 쌍의집합 인덱스가주어지면해당되는요소가대응되는구조 직접접근 (direct access) 방식 항목접근의시간복잡도가 O(1) 연결리스트 (5장) 벡터? 순차접근 (sequential access) 방식 항목접근의시간복잡도 O(n) C++ 의 STL에서 vector 제공 배열과벡터의차이는? 4/20

1 차원배열 자료형배열이름 [ 배열의 _ 크기 ]; int A[6]; 5/20

배열의복사 변수의복사와배열의복사 #include <stdio.h> void main() { int A[5] = { 10, 20, 30 ; int B[5], i, x = 2018, y = 0; y = x; for (i = 0; i < 5; i++) B[i] = A[i]; printf(" 변수복사결과 : x=%d, y=%d\n", x, y); printf(" 배열복사결과 : \n"); for (i = 0; i < 5; i++) { printf("a[%d] = %d\t", i, A[i]); printf("b[%d] = %d\n", i, B[i]); 6/20

문자열 : 특별한 1 차원배열 char s[12] = game over ; 문자열처리 문자열의복사나비교를위해 = 나 == 또는 < 등의연산자를사용할수없다. strcmp(), strcpy(), <string.h> 포함 7/20

2 차원배열 자료형배열이름 [ 행의 _ 크기 ][ 열의 _ 크기 ]; int A[4][3]; int A[4][3]= { {1,2,3, {4,5,6, {7,8,9, {10,11,12 ; 8/20

함수의매개변수로서의배열 변수의전달 값을복사 (call by value) 배열의전달 첫번째항목의주소를전달 ( 주소를복사 ) void copy_array(int a[], int b[], int len) { int i; for (i = 0; i < len; i++) b[i] = a[i]; void copy_variable(int a, int b) { b = a; int A[5] = { 10, 20, 30 ; int B[5], i, x = 2018, y = 0; copy_variable(x, y); copy_array(a, B, 5); 9/20

배열에서의주의사항 매개변수로배열의길이도전달해야함. int findmaxvalue( int a[], int len ) int arr[10] = {3, ; int maxval = findmaxvalue( arr, 10 ); 2 차원이상의다차원배열의매개변수전달에조심. int findmaxpixel( int a[][5], int h, int w ) 10/20

구조체 기존의자료형들을조합해새로운자료형을만드는방법 배열과의차이 구조체 (structure): 타입이다른데이터를하나로묶음 배열 (array): 타입이같은데이터들을하나로묶음 11/20

구조체의정의와선언 정의 선언 struct Student { typedef struct Student_t { int id; int id; char name[20]; char name[20]; double score; double score; ; Student; struct Student a; Student a; Student a = { 201803156, 홍길동, 96.3 ; 멤버접근 : 항목연산자 (membership operator) '.' a.id = 30830; a.score = 92.3; strcpy(a.name, "Jinyoung"); // a.name = Jinyoung ; 은오류발생 12/20

구조체와연산자 대입연산자만가능 int x, y=10; Student a, b={ 201803156, 홍길동, 96.3 ; x = y; // OK: int 변수의복사 a = b; // OK: 구조체변수의복사 다른연산자사용불가 if( a > b ) a += b; // 오류 : 구조체의비교연산불가 // 오류 : 구조체의다른대입연산도불가 int compare(student a, Student b) { return a.id b.id; 13/20

구조체와함수 함수의매개변수나반환형으로사용할수있음. Call by value 다음함수의동작은? void print_complex(complex c) { printf("%4.1f + %4.1fi\n", c.real, c.imag); void reset_complex(complex c) { c.real = c.imag = 0.0; 14/20

배열과구조체의응용 : 다항식 다항식의일반적인형태 n p( x) a x a a x a n n 1 n 1 x... 처리를위한다항식의자료구조가필요 어떤자료구조가다항식의연산을편리하게할까? 1 0 다항식을위한자료구조? 배열을사용하는방법 모든항의계수를배열에저장 다항식의 0이아닌항만을배열에저장 : 희소다항식 15/20

다항식구조체 #define MAX_DEGREE 101 // 다항식의최고차수 + 1 typedef struct { int degree; float coef[max_degree]; Polynomial ; 방법 1: coef [0] [1] [2] [3] [4] [5] [6] [7] [8] 10 0 0 0 6 3... [9]... 방법2: coef 3 6 0 0 0 10 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 16/20

다항식입출력연산 ( 방법 1) void print_poly(polynomial p, char str[]) { int i; printf("\t%s", str); for( i=0 ; i<p.degree ; i++) printf("%5.1f x^%d + ", p.coef[i], p.degree-i); printf( "%4.1f\n", p.coef[p.degree] ); Polynomial read_poly() { int i; Polynomial p; printf(" 다항식의최고차수를입력하시오 : "); scanf( "%d", &p.degree ); printf(" 각항의계수를입력하시오 ( 총 %d 개 ): ", p.degree+1); for( i=0 ; i<=p.degree ; i++) scanf( "%f", p.coef+i ); return p; 17/20

다항식의덧셈연산 다항식덧셈알고리즘? 단순화방법? c=a+b c = a; c += b; Polynomial add_poly(polynomial a, Polynomial b) { int i; Polynomial p; if (a.degree > b.degree) { p = a; for( i=0 ; i<=b.degree ; i++ ) p.coef[i+(p.degree-b.degree)] += b.coef[i]; else { p = b; for( i=0 ; i<=a.degree ; i++ ) p.coef[i+(p.degree-a.degree)] += a.coef[i]; return p; 18/20

다항식프로그램 void main() { Polynomial a, b, c; a = read_poly(); b = read_poly(); c = add_poly (a, b); print_poly(a," A = "); print_poly(b," B = "); print_poly(c,"a+b= "); 19/20

희소다항식의표현 희소다항식 (Sparse Polynomial) 이란? 대부분항의계수가 0 인다항식 Polynomial: [0] [1] [2] [3] [4] [5]... [98] [99] [100] coef 10 0 0 0 0 0... 0 0 6... SparsePoly: expo coef Term 100 0 10 6 [0] [1] [2] [3] [4] [5] [6] typedef struct { int Term SparsePoly; nterms; term[max_terms]; typedef struct { int float Term; expon; coef; 20/20