어서와 C언어는 처음이지 제22장.

Slides:



Advertisements
Similar presentations
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
Advertisements

제6장 조건문.
데이터의 표현과 연산 (1) (Chapter 3)
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
배열, 포인터 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
2007 1학기 10 함수 활용.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
제5장 제어명령
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
7. while 문의 흐름 제어.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
Chapter 06. 선택문.
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express.
6장 배열.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
제 11 장 전처리기.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
제어문 & 반복문 C스터디 2주차.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제7장 반복문이란 무엇인가.
18장. 다차원 배열 그리고 포인터.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
-Part2- 제2장 다차원 배열이란 무엇인가.
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
어서와 C언어는 처음이지 제16장.
어서와 C언어는 처음이지 제23장.
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
Chapter 09. 배열.
배열, 포인터, 함수 Review & 과제 1, 2.
Presentation transcript:

어서와 C언어는 처음이지 제22장

배열 채우기 초기값 대입 사용자 데이터 입력 디스크 파일

배열 탐색하기 신용카드 회사가 하나 있다. 회사는 고객의 ID 정보가 저장된 배열을 가지고 있다. 고객들의 카드 사용액을 저장하고 있는 배열도 있다. 평행 배열

예제: 신용카드 회사의 프로그램 고객 ID 번호를 요구한다. (이것이 키이다.) 키 값과 일치하는 고객 카드 사용액을 찾아서 배열을 탐색한다. 고객이 이미 $100 이상의 카드 사용액이 있으면 고객에게 경고한다.

실행 결과 /* 이 프로그램은 사용자로부터 ID 번호를 받는다. ID를 가지고 데이터베이스에서 고객들의 리스트를 탐색한다. 고객이 있으면 현재 카드 사용액을 검사하기 위하여 발견된 첨자를 이용한다. 그리고 현재 카드 사용액이 100달러이상이면 경고한다. */ *** 고객 카드 사용액 검색 *** 어떤 고객의 카드 사용액을 검색하시겠습니까? 313 ** 고객의 카드 사용액이 아직 여유가 있습니다! 어떤 고객의 카드 사용액을 검색하시겠습니까? 891 ** 잘못된 사용자 ID입니다. ID 891은 발견되지 않았습니다. 어떤 고객의 카드 사용액을 검색하시겠습니까? 475 ** 고객의 카드 사용액은 $192.41. 더 이상의 사용은 불가능합니다.

// 완전 초보자 가이드 3판 22장 예제 #1 #include <stdio.h> main() { int ctr; // 루프 카운터 int idSearch; // 탐색할 고객(키) int found = 0; // 고객이 발견되면 1 (true) // 2개의 평행 배열에 10개의 요소를 정의한다. int custID[10] = { 313, 453, 502, 101, 892, 475, 792, 912, 343, 633 }; float custBal[10] = { 0.00, 45.43, 71.23, 301.56, 9.08, 192.41, 389.00, 229.67, 18.31, 59.54 };

/* 사용자와 상호작용한다. */ printf("\n\n*** 고객 카드 사용액 검색 ***\n"); printf("어떤 고객의 카드 사용액을 검색하시겠습니까? "); scanf(" %d", &idSearch); /* 고객 배열에서 입력받은 고객 ID가 존재하는 지를 검사한다. */ for (ctr = 0; ctr<10; ctr++) { if (idSearch == custID[ctr]) found = 1; break; }

if (found) { if (custBal[ctr] > 100.00) printf("\n** 고객의 카드 사용액은 $%.2f.\n", custBal[ctr]); printf(" 더 이상의 사용은 불가능합니다. \n"); } else printf("\n** 고객의 카드 사용액이 아직 여유가 있습니다!\n"); printf("** 잘못된 사용자 ID입니다. "); printf("\n ID %3d은 발견되지 않았습니다. \n", idSearch); return(0);

실행 결과 *** 고객 카드 사용액 검색 *** 어떤 고객의 카드 사용액을 검색하시겠습니까? 313 ** 고객의 카드 사용액이 아직 여유가 있습니다! 어떤 고객의 카드 사용액을 검색하시겠습니까? 891 ** 잘못된 사용자 ID입니다. ID 891은 발견되지 않았습니다. 어떤 고객의 카드 사용액을 검색하시겠습니까? 475 ** 고객의 카드 사용액은 $192.41. 더 이상의 사용은 불가능합니다.

예제: 농구 예제 사용자에게 10개의 정수값을 받아서 배열에 저장한다. 배열에 저장된 값들의 합계와 평균을 계산하여 출력한다. 선수의 최다득점 경기 기록: 최다득점 경기는 game 1 득점은 100 점 리바운드는 20 회 어시스트는 10 회

// 완전 초보자 가이드 3판 22장 예제 #2 // 파일 Chapter22ex2.c /* 이 프로그램은 3개의 배열을 선수의 득점, 리바운드 횟수, 어시스트 횟수로 채운다. 반복 루프를 통하여 득점 배열에서 가장 많은 득점을 했던 경기를 찾는다. 그 경기의 3가지 카테고리에서의 점수를 출력한다. */ #include <stdio.h> main() { int gameScores[10] = { 12, 5, 21, 15, 32, 10, 6, 31, 11, 10 }; int gameRebounds[10] = { 5, 7, 1, 5, 10, 3, 0, 7, 6, 4 }; int gameAssists[10] = { 2, 9, 4, 3, 6, 1, 11, 6, 9, 10 }; int bestGame = 0; // 이제까지의 최다 득점 int gmMark = 0; // 가장 득점이 많았던 경기 번호를 저장한다. int i;

for (i = 0; i<10; i++) { // 반복 루프에서 각 경기의 득점을 이제까지의 최다득점 기록과 비교한다. // 현재의 점수가 더 높으면, 이것이 새로운 최다득점이 된다. // 그리고 현재의 요소 번호가 gmMark에 저장된다. if (gameScores[i] > bestGame) bestGame = gameScores[i]; gmMark = i; } // 최다 득점 게임의 세부 사항을 출력한다. // 배열이 0에서 시작하기 때문에 경기 번호에 1을 더한다. printf("\n\n선수의 최다득점 경기 기록:\n"); printf("최다득점 경기는 game #%d\n", gmMark + 1); printf("득점은 %d 점\n", gameScores[gmMark]); printf("리바운드는 %d 회\n", gameRebounds[gmMark]); printf("어시스트는 %d 회\n", gameAssists[gmMark]); return(0);

Lab: 평균 계산 크기가 10인 1차원 배열에 0부터 99 사이의 난수를 저장한 후에, 최대값과 최소값을 출력하는 프로그램을 작성하시오. 난수는 rand() 함수를 호출하여 생성하라. 58 27 29 12 89 67 0 85 71 3 최대값은 89, 최소값은 0입니다.

#include <time.h> #include <stdio.h> #include <stdlib.h> #define SIZE 10 main() { int values[SIZE]; int i, max, min; srand((unsigned int)time(NULL)); for (i = 0; i < SIZE; i++){ values[i] = rand() % 100; printf("%d ", values[i]); } printf("\n");

max = values[0]; min = values[0]; for (i = 1; i < SIZE; i++){ if (values[i] > max) max = values[i]; if (values[i] < min) min = values[i]; } printf("최대값은 %d, 최소값은 %d입니다. \n", max, min); return 0;

학습 정리 배열을 채우는 것은 단지 첫 번째 단계일 뿐이다. 배열이 채워진 다음에 프로그램이 데이터와 상호작용해야 한다. 탐색에 대해 더 많이 배우기 전에, 일단 순차 탐색부터 익혀야 한다. 이것이 가장 쉬운 탐색 기법이다. 탐색이 실패할 수도 있다는 것을 항상 기억해야 한다. 탐색값이 리스트에 없을 수도 있다고 항상 생각하자. 그리고 실패한 탐색을 처리하는 코드도 추가하자.

Q & A