많은 자료가 있을 때는 배열을 사용한다. 아래는 배열을 사용하는 경우의 예시이다. 상황에 따라 1차원 또는 다차원 배열 필요.

Slides:



Advertisements
Similar presentations
매매춘과 청소년 賣春과 賣春과 買春의 買春의 차이점 賣春 ; 賣春 ; 성을 판매하는 사람에게 촛점 성을 판매하는 사람에게 촛점 賣買春 ; 賣買春 ; 성을 구매, 판매하는 사람 도 문제. 성을 구매, 판매하는 사람 도 문제.
Advertisements

순천향대학교 정보보호연구회 김 홍 기 포인터와 문자열 순천향대학교 정보보호연구회 김 홍 기
2007 1학기 12 배열.
데이터의 표현과 연산 (1) (Chapter 3)
제12장 표준 입출력과 파일 입출력.
[ 단원 12 ] 파일처리 부산대학교 남 태 우.
Linux/UNIX Programming
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
6 레이스 컨디션.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
-Part3- 제3장 콘솔 입출력과 파일 입출력.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
Chapter 10– 표준 함수(1) Outline 10.1 스트림과 파일 10.2 입출력 표준 함수
Linux System Programming
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
Part 14 파일 입출력 ©우균, 창병모 ©우균, 창병모.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
버퍼 오버플로우 시스템보안 류기환 권재홍.
25장. 메모리 관리와 동적 할당.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
레이스 컨디션 컴퓨터공학과 4학년 이교욱.
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
9장 파일 입출력.
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 11 장 파일 처리.
파일 기술자 복사 파일 기술자 복사 : dup(2) 파일 기술자 복사 : dup2(3)
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
Chapter 11 Strings.
Chapter 4. 보조자료 - 파일 입출력 파일의 기본 개념과 특징을 이해한다. 파일 처리 과정을 이해한다.
C언어 프로그래밍의 이해 Ch14. 파일 입출력.
전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과.
프로그래밍실습 제 16 강.
14주차.
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
4장 제어문 선택문: if 문, if – else 문, switch 문
17강 파일처리함수(1) 강 의 내 용 파일 입출력의 개념 파일포인터를 이용한 입출력 파일 입출력 과정
18강 파일처리함수(2) 강 의 내 용 순차파일 만들기와 읽기 순차파일 입출력함수 랜덤파일 처리
Linux/UNIX Programming
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 11. 1차원 배열.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
Linux/UNIX Programming
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
파일 입출력.
C언어 (8) 정명희.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
1차 발표: 내일은 홈런왕 학번: 이름: 주해성.
어서와 C언어는 처음이지 제16장.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
어서와 C언어는 처음이지 제23장.
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
Chapter 09. 배열.
어서와 C언어는 처음이지 제22장.
배열.
⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나
Presentation transcript:

많은 자료가 있을 때는 배열을 사용한다. 아래는 배열을 사용하는 경우의 예시이다. 상황에 따라 1차원 또는 다차원 배열 필요

6.1 1차원 배열 한 분반의 성적을 읽어 평균과 분산을 구하는 문제 배열 선언 배열에 값 읽어 들이기 평균 계산 분산 계산

6.1.1 사용 규칙 배열의 크기는 미리 지정되어야 한다. (즉 컴파일 할 때 상수로 지정) 몇 가지 예 따라서 충분히 큰 크기로 선언해야 한다. 메모리 낭비 가능성 예, 1000으로 선언했는데 데이터가 50개 라면 950개는 낭비

배열을 함수 매개변수로 넘길 때, 데이터 개수를 알려주어야 함 (아래 예에서 no가 그 역할을 함) 함수 정의에서 배열의 크기는 생략 가능

배열 요소에 접근하는 방법

배열의 초기화

연습 문제

6.1.2 배열과 포인터 배열과 포인터는 매우 밀접한 관련 배열의 이름은 포인터이고, 첫 번째 요소의 주소를 갖는다. 몇 가지 예제

몇 가지 예제를 살펴 보면,

6.1.3 문자 배열 문자열과 포인터는 밀접한 관련 문자열은 배열로 표현되기 때문 문자열 끝에는 문자열 끝을 나타내는 가 채워 짐

문자형 배열과 상수 문자열을 가리키는 포인터의 차이

문자열의 길이를 알아내는 함수 strlen() 첫 요소에서 시작하여 이 나타날때까지 진행

문자열이 같은지 비교하는 함수 strcmp() s와 t가 같으면 0, s가 크면 1, s가 작으면 -1 반환

문자열을 복사하는 함수 strcpy()

연습 문제

6.2 다차원 배열 여러 분반의 성적을 저장해야 하는 경우 2차원 배열 필요 int score[100][1000]; // 최대 100개 분반, 분반당 최대 1000명 행 우선으로 저장됨 총 100*1000*4=약 400킬로 바이트 할당됨 실제 20분반에 분반 별로 40명 학생이 있다면 20*40*4=3.2킬로 바이트만 사용, 나머지는 낭비 (6.3절의 동적 메모리 사용하면 낭비 제거)

여러 분반의 성적 처리 프로그램 main() 함수: 세 개 함수를 호출하는 역할

여러 분반의 성적 처리 프로그램 주요 자료 구조 score[][]: 성적 데이터 저장을 위한 2차원 배열 no_student[]: 분반 별 학생수를 저장하는 1차원 배열 ave[], var[]: 분반 별 평균과 분산을 저장하는 1차원 배열

여러 분반의 성적 처리 프로그램 성적을 읽어 들이는 함수 read_score()

여러 분반의 성적 처리 프로그램 평균과 분산을 구하는 함수 compute_stat()

내부 변수 버전으로 수정해 보자. 즉, 주요 자료 구조를 main() 안에 선언 이제 매개 변수를 통해 데이터를 교환해야 한다.

3차원 배열 여러 과목 있고, 과목 당 여러 분반 있고, 분반 당 여러 학생 있는 상황

연습 문제

6.3 동적 메모리와 포인터 배열 동적 메모리 할당을 위한 라이브러리 함수 malloc()과 free()

성적 처리 프로그램을 동적 메모리 버전으로 수정하면, 바뀐 부분에 주목할 것

2차원 배열의 동적 메모리 int *score[MaxClass]로 정의 MaxClass개의 int *형 요소를 갖는 1차원 배열 ‘포인터 배열’이라 부름

여러 분반의 성적 처리 프로그램을 동적 메모리 버전으로 수정하면, main() 함수

주요 자료 구조

성적을 읽어 들이는 함수 read_score() 파란 부분이 동적 메모리 할당

연습 문제

6.4 포인터 배열과 2차원 배열 2차원 배열, 포인터 배열, 그리고 포인터 배열의 포인터 메모리 낭비 가능성: 2차원 배열 > 포인터 배열 > 포인터 배열의 포인터 프로그래밍 쉬움: 2차원 배열 > 포인터 배열 > 포인터 배열의 포인터 좋은 프로그래밍 스타일 가급적 포인터 배열 또는 포인터 배열의 포인터를 사용하라

‘포인터 배열의 포인터’를 사용한다면, 생각보다 손질할 곳이 적다. 프로그램 [6.10]에서 두 곳을 수정

2차원 배열의 초기화 방법

연습 문제

6.5 파일 입출력: fscanf와 fprintf 많은 데이터를 입력해야 하는 경우, 키보드에서 직접 입력하는 것은 매우 번거로움 이때는 파일을 통해 입출력 하는 것이 적절함 파일 포인터를 통해 파일에서 읽거나 파일에 씀 라이브러리 함수 fscanf()와 fprintf() 파일 포인터가 있다는 점만 빼면, scanf()와 printf()와 같다.

파일 포인터는 어떻게 생성하나? fopen()을 이용한다. 예), fp_in=fopen(“score_data.txt”, “r”); score_data.txt라는 파일을 r (읽기) 모드로 열고, 그 파일 포인터를 fp_in에 대입한다. 이제 fscanf(fp_in, …)을 수행하면 score_data.txt에서 읽게 된다. 파일 모드 (부록 D에서 fopen() 함수 참조) “r” 읽기 “w” 쓰기 “a” 덧붙여 쓰기 파일 사용이 끝나면 fclose()로 닫는다.

뒤에 계속 …

연습 문제

6.6 프로그래밍 연습: 마방진

알고리즘으로 정리하면,

보다 상세하게 다시 정리하면,

C 코딩 하면,

연습 문제