배열 기반 문자열 변수

Download Report

Transcript 배열 기반 문자열 변수

게임프로그래밍 I
- 1차원 배열 -
공주대학교 게임디자인학과
박 찬 교수
2011년 4월 25일
배열이란 무엇인가?
 같이 생각해 볼 문제: 10명의 성적 처리 프로그램을 작성하라.
– 10명의 성적은 국어/영어/수학 별로 주어진다고 가정하자.
– 석차를 계산하기 위해서는 총점/평균을 계산하고, 총점/평균 순으
로 정렬하면 됨.



성적을 저장할 변수를
어떻게 선언할 것인가?
만일 100사람의 성적을
처리한다면 ?
#include <stdio.h>
void main( )
{
int kor0, kor1, kor2, … kor9;
int eng0, eng1, eng2, … eng9;
int math0, …;
int total0, total1, total2, … total9;
int avg0, avg1, … avg9;
이 프로그램을 쉽게
작성하려면 ?
 배열을 이용한다!!
total0 = kor0+eng0+math0;
avg0 = total0 / 3;
total1 = kor1+eng1+math1;
avg1 = total1 / 3;
…
}
배열이란 무엇인가?
 배열을 이용하여 프로그램을 작성하면 ?



프로그램이 간결해지고,
확장이 용이해진다 !
#include <stdio.h>
void main( )
{
int kor[10];
int eng[10];
int math[10];
반복문을 이용하여 효율
적으로처리할 수 있다 !
int total[10], avg[10];
int i;
for (i=0; i<10; i++) {
total[i] = kor[i]+eng[i]+math[i];
avg[i] = total[i]/3;
}
…
 배열이 유용함!!
}
배열이란 무엇인가?
• 둘 이상의 변수를 동시에 선언하는 효과를 지닌다.
• 많은 양의 데이터를 일괄적으로 처리해야 하는 경우에 유용하다.
• 지역적 특성을 지닐 수도 있고, 전역적 특성을 지닐 수도 있다.
1차원 배열의 선언 및 초기화
• 배열 선언에 있어서 필요한 것 세 가지
– 배열 길이 : 배열을 구성하는 변수의 개수
(반드시 상수를 사용)
– 배열 요소 자료형 : 배열을 구성하는 변수의 자료형
– 배열 이름 : 배열에 접근할 때 사용되는 이름
1차원 배열의 선언 및 초기화
• 1차원 배열의 접근
– 배열 요소의 위치를 표현 : 인덱스(index)
– 인덱스는 0에서부터 시작
1차원 배열의 선언 및 초기화
• 배열 선언과 접근의 예
int main(void)
{
int array[10];
// 배열 선언
array[0]=10;
// 첫 번째 요소 접근
array[1]=20;
// 두 번째 요소 접근
array[2]=30;
// 세 번째 요소 접근
.....
return 0;
}
1차원 배열의 선언 및 초기화
/* array1.c */
#include <stdio.h>
int main(void)
{
double total;
double val[5];
val[0]=1.01;
val[1]=2.02;
val[2]=3.03;
val[3]=4.04;
val[4]=5.05;
total=val[0]+val[1]+val[2]+val[3]+val[4];
printf("평균 : %lf \n", total/5);
return 0;
}
1차원 배열의 선언 및 초기화
• 선언과 동시에 초기화
int main(void)
{
int arr1[5]={1, 2, 3, 4, 5};
int arr2[ ]={1, 3, 5, 7, 9};
int arr3[5]={1, 2}
}
1차원 배열의 선언 및 초기화
배열 기반 문자열 변수
• 문자열 상수
– 문자열이면서 상수의 특징을 지닌다.
printf("Hello World! \n");
• 문자열 변수
– 문자열이면서 변수의 특징을 지닌다.
char str1[5]="Good";
char str2[]="morning";
배열 기반 문자열 변수
/* ar_str.c */
#include <stdio.h>
int main(void)
{
char str1[5]="Good";
char str2[]="morning";
printf("%s \n", str1);
printf("%s %s \n ", str1, str2);
return 0;
}
배열 기반 문자열 변수
#include <stdio.h>
void main()
{
char *strchar = "Good";
char strarry[] = "Good";
printf("%s \n", strchar);
printf("%s \n", strarry);
}
배열 기반 문자열 변수
• 문자열의 특징
– 문자열은 널(null)문자를 끝에 지닌다.
– 널(null) 문자 : '\0'(아스키 코드 값으로 0)
int main(void)
{
char str[6]="Hello";
printf("Hello");
.....
배열 기반 문자열 변수
• 널(null) 문자를 지녀야 하는 이유
– 문자열의 끝을 표현하기 위해서
– 쓰레기 값과 실제 문자열의 경계를 나타내기 위해
– printf 함수는 널 문자를 통해서 출력의 범위를
결정 짓는다.
int main(void)
{
char str[100]=”Hello World!”;
printf(“%s \n”, str);
.....
배열 기반 문자열 변수
/* va_str.c */
#include <stdio.h>
int main(void)
{
int i;
char ch;
char str[6]="Hello";
printf("--변경 전 문자열--\n");
printf("%s \n", str);
for(i=0; i<6; i++)
printf("%c | ", str[i]);
/* 문자열 변경 */
for(i=0; i<3; i++)
{
ch=str[4-i];
str[4-i]=str[i];
str[i]=ch;
}
printf("\n\n--변경 후 문자열--\n");
printf("%s \n", str);
return 0;
}
#실습 1
• 20명의 학생의 성적을 입력 받은 후 다음을 계산하는 프로그램을 작
성하라.
– int student[20] = {10, 20, 30, 40, 23, 43, 55, 23, 54, 33, 90, 34, 77, 85,
56, 48, 98, 45, 67, 32};
– 총점을 계산한 후 출력함.
– 평균을 계산한 후 출력함.
– 분산을 계산한 후 출력함.
• 분산 공식은 인터넷을 이용
#실습 2
• 20명의 학생의 성적을 입력 받은 후 성적이 높은 순으로 점수를 출
력하시오.
– int student[20] = {10, 20, 30, 40, 23, 43, 55, 23, 54, 33, 90, 34, 77, 85,
56, 48, 98, 45, 67, 32};
– 반대로 성적이 낮은 순으로 출력하시오.
#과제
• 프로그램 작성
– 키보드로 아무런 문자를 입력후 이중 0~9 사이의 숫자형 문자가 몇 번
입력되었는가를 출력하는 프로그램을 작성하라
• (Enter 키를 누르면 끝낸다)
– 버블 정렬 알고리즘을 조사하여 설명한 후, 10명의 성적을 입력 받아 1
차원 배열에 저장한 후, 버블 정렬 하는 프로그램을 작성하라.
• 그외 정렬 알고리즘에 대하여 최소한 2가지 이상 조사하시오.