본문 바로가기

분류 전체보기208

[43] 배열과 포인터 배열의 포인터 변수 선언 . &변수명[index] ㄴ 배열의 기준이 될 주소 한 개를 대입 // 예제 1) int arr[3] = {10, 20, 30}; int *p = &arr[0]; p[1] = 200; printf("arr[1] : %d\n", arr[1]); // 예제 2) int scores[5] = {98, 100, 50, 76, 80}; int *sp = &scores[2]; sp[0] = 10; printf("sp[0~] : %d %d %d\n", sp[0], sp[1], sp[2]); printf("sp[-1] : %d\n", sp[-1]); // 예제 3) int *sp2 = &scores[0]; int *sp3 = sp2; sp3[4] = 0; printf("%d %d %d %d %.. 2020. 7. 23.
[42] 포인터 기본 포인터 Pinter ㄴ 주소를 저장하는 변수 (4byte) ㄴ 포인터는 변수의 주소를 저장한다. 1) 선언 자료형 *변수명; 2) 사용 포인터명 = &일반변수명; ㄴ 주소 : 변수명 앞에 &앤퍼센드를 붙임 ㄴ 주소만 저장할 수 있음 // 포인터 int a = 10; // 일반변수의 선언과 초기화(값 대입) int *p = &a; // 포인터변수의 선언과 초기화(일반변수 주소 대입) // char c = 0; // 1 byte int n = 0; // 4 byte double d = 0; // 8 byte char *cp = &c; // 4 byte(on 32 bits) int *np = &n; // 4 byte double *dp = &d; // 4 byte printf("c의 사이즈는 %d 이다.\n".. 2020. 7. 23.
[41] 셔플 셔플 ㄴ 배열 안에 있는 값을 랜덤으로 배치 . 인덱스 0의 값과 인덱스 랜덤의 값을 교환 . 100번 반복 int scores[5] = {100, 90, 80, 70, 60}; srand((unsigned int)time(NULL)); // while int n = 0; while(n < 100){ int r = rand() % 4 +1; // index 1~4 (0제외) int temp = scores[0]; scores[0] = scores[r]; scores[r] = temp; n += 1; } // for for(int i=0; i 2020. 7. 23.
[40] 정렬 정렬 : 배열응용 . 기준 인덱스(0~)의 변수부터 나머지와 값 비교 . 최대값을 찾아서 값 교환 . 기준 인덱스 증가 . 반복하며 내림차순 정렬 진행 . 흐름 {5, 6, 8, 1, 3} // max = 8 {8, 6, 5, 1, 3} // max = 6 {8, 6, 5, 1, 3} // max = 5 {8, 6, 5, 3, 1} // max = 3 {8, 6, 5, 3, 1} // max = 1 srand(time(0)); int score[5] = {0}; for(int i=0; i 2020. 7. 23.
[39]-A. 회원가입 // 실습예제 : 2차원 배열 // → 회원가입 // . 회원가입 가능 인원은 5명 (제한) // . 정수형의 아이디와 패스워드를 저장 // . 중복되는 아이디는 메세지 출력 (중복되는 아이디 입니다) // . 회원가입 가능인원 초과 시, 메세지 출력 (회원가입 마감) // . Develope // . 로그인, 로그아웃 기능 구현 int members[5][2] = {0}; // GV -> 값 초기화 int cnt = 0; while(1){ printf("---- J O I N ----\n"); // print data for admin printf("cnt : %d\n", cnt); printf("id\tpw\n"); for(int i=0; i 2020. 7. 23.
[39] 회원가입 실습예제 : 2차원 배열 → 회원가입 . 회원가입 가능 인원은 5명 (제한) . 정수 4자리의 아이디와 패스워드를 저장 . 중복되는 아이디는 메세지 출력 (중복되는 아이디 입니다) . 회원가입 가능인원 초과 시, 메세지 출력 (회원가입 마감) . Develope . 로그인, 로그아웃 기능 구현 2020. 7. 23.
[40] 다차원 리스트 다차원 리스트 . 리스트는 리스트를 담을 수 있다. . 선언 및 초기화 listname = [ [0] * N1 for in range(N2) ] nums = [[1, 2, 3],[4, 5, 6],[7, 8, 9]] for i in range(len(nums)): # 2차원 반복문 활용 for j in range(len(nums[i])): print(nums[i][j], end=" ") print() # 선언 및 초기화 # 3행 2열 (2차원 리스트) num = [[0] * 2 for i in range(3)] print(num) # [[0, 0], [0, 0], [0, 0]] # 맵 그리기 : 2차원 # 4행 5열 (2차원 리스트) map = [[0]*5 for i in range(4)] # 값의 초기화.. 2020. 7. 23.
[39] 리스트 함수 리스트(List) 함수 . 리스트는 크기가 정해지지 않음 . 얼마든지 값의 추가/삭제/수정 가능 . 불변 시퀀스 '튜플'에는 존재하지 않는 기능(함수) 1) 추가 : listname.append() 2) 삭제 (index) : del listname[index] 3) 삭제 (value) : listname.remove(value) 4) 삽입 : listname.insert(index, value) 5) 길이 : len(listname) nums = [ ] # square brackets[ ] 대괄호 #nums[0] = 10 # IndexError # 1. 추가 : append() nums.append(10) nums.append(20) nums.append(30) nums.append(40) nums.a.. 2020. 7. 23.
[38]-A. 리스트 컨트롤러 # 리스트 컨트롤러[2단계] # 1. 추가 # . 값을 입력받아 순차적으로 추가 # 2. 삭제(인덱스) # . 인덱스를 입력받아 해당 위치의 값 삭제 # 3. 삭제(값) # . 값을 입력받아 삭제 # . 없는 값 입력 시 예외처리 # 4. 삽입 # . 인덱스와 값을 입력받아 삽입 # 삭제 시, 주의 : 재정렬 # . [10, 20, 0, 40, 50] -> X # . [10, 20, 40, 50, 0] -> O datas = [0, 0, 0, 0, 0] cnt = 0 while True: print("--- Controller ---") # print for i in range(5): print("[%d]" % i, datas[i]) print("------------------") print("1) 추.. 2020. 7. 23.
[38] 리스트 컨트롤러 실습예제 : 리스트 → 리스트 컨트롤러 만들기 1. 추가 . 값을 입력받아 순차적으로 추가 2. 삭제(인덱스) . 인덱스를 입력받아 해당 위치의 값 삭제 3. 삭제(값) . 값을 입력받아 삭제 . 없는 값 입력 시 예외처리 4. 삽입 . 인덱스와 값을 입력받아 삽입 삭제 시, 주의 : 재정렬 . [10, 20, 0, 40, 50] -> X . [10, 20, 40, 50, 0] -> O datas = [0, 0, 0, 0, 0] cnt = 0 2020. 7. 23.
[37]-A. 정렬 import random user = ["runner","blink","crown","superstar","avengers"] score = [0,0,0,0,0] for i in range(5): r_num = random.randint(10,100) score[i] = r_num # align for i in range(5):# score 리스트를 돌면서, max = score[i]# 최대값을 기억 max_idx = i# 최대값의 인덱스도 기억 for j in range(i,5):# ㄴ 비교하는 범위 if score[j] > max:# ㄴ max값과 비교 max = score[j] max_idx = j temp = score[i]# 최대값 발견 시, 값 교체 score[i] = max score[max.. 2020. 7. 23.
[37] 정렬 실습예제 : 리스트 → 정렬 . 워밍업 # 다음 리스트의 값을 내림차순으로 정렬하세요. scores = [68, 70, 95, 50, 42] 더보기 for i in range(5): max = scores[i] max_idx = i for j in range(i,5): if max < scores[j]: max = scores[j] max_idx = j temp = scores[i] scores[i] = max scores[max_idx] = temp for i in range(5): print(scores[i], end=" ") 랜덤 스코어 랭킹 . 랜덤으로 10~100까지 범위의 5개의 수를 score리스트에 저장하고 . 내림차순으로 랭킹을 출력한다.(1위 id 00점) user = ["runner".. 2020. 7. 23.
[36]-A. TIC TAC TOE map = [0,0,0,0,0,0,0,0,0] # RUN run = True while run : # 초기화 print("New Game!") for i in range(9): map[i] = i+1 p1 = 0 p2 = 0 win = 0 turn = 0 while True : print("--TIC TAC TOE--") for i in range(9): if map[i] == 11: print("[ ■ ]", end="") elif map[i] == 22: print("[ □ ]", end="") else: print("[ %d ]" % map[i], end="") if i % 3 == 2: print() print("---------------") # result if win == 11: print(.. 2020. 7. 23.
[36] TIC TAC TOE 실습예제 : 1차원 배열 → TIC TAC TOE . 워밍업 # 워밍업 # . map 리스트를 3x3 바둑판 모양으로 출력해보자 # . index의 증가하는 규칙을 응용하여 줄바꿈 # . 출력예) # 1 2 3 # 4 5 6 # 7 8 9 map = [1,2,3,4,5,6,7,8,9] 더보기 map = [1,2,3,4,5,6,7,8,9] for i in range(9): print(map[i], end=" ") # default 줄바꿈 해제 if i % 3 == 2: # 줄바꿈 조건 설정 print() . 플레이어 2명이 번갈아가며 인덱스 입력 [0~8] . 이미 차지한 인덱스는 입력불가 (alert) . P1 과 P2의 표식을 다르게 출력 (O,X) . 먼저 1줄 완성한 플레이어가 승리! ㄴ 가로 / .. 2020. 7. 23.
[35] 연습문제 : 리스트 연습문제 1) # 리스트 기본문제 nums = [10, 20, 30, 40, 50] print(nums[0]) print(nums[1]) print(nums[2]) # print(nums[5]) [5]는 없는방번호라 에러가난다. 0부터 시작하기때문에 # 예) 전체 값 출력 i = 0 while i 2020. 7. 23.
[34] 튜플 튜플 Tuple 1) 선언 a = ( ) a = (10, 20, 30, 40) 2) 사용 print(a[3]) 3) 특징 . 여러 종류의 값을 저장할 수 있다. . 불변 시퀀스 (리스트와의 차이점) # 리스트와의 차이점 a = ["apple", 'a', 20, 3.14, True] b = ("blue", 'b', 10, 3.14, False) print("튜플 출력") for i in range(5): print(b[i]) print("리스트 출력") for i in range(5): print(a[i]) # 예시 a[2] = 100 print(a[2]) b[2] = 200# error print(b[2]) # 리스트 : mutable 변화할 수 있다. (가변) # 튜플 : immutable 변화할 수 .. 2020. 7. 23.
[33] 리스트 리스트 List : 변수들의 집합 1) 선언 a = [ ] 빈 리스트의 주소를 a가 저장하고 있다. a = [10, 20, 30, 40] 2) 사용 리스트 변수들은 0번부터 1씩 증가하면서 번호가 생성된다.(index) a[0] => 10 a[1] => 20 a[2] => 30 a[3] => 40 3) 특징 . 크기의 제한이 없다. (가변 시퀀스) . 여러 종류의 값을 저장할 수 있다. . 0부터 시작되는 방번호(index)가 순차적으로 생성된다. 2020. 7. 23.
[37] 연습문제 : 2차원 배열 연습문제1 int d_arr[3][4] = {{1,2,3,4},{12,33,14,15},{23,24,25,26}}; int s_arr[12] = {0}; // 위 2차원의 값을 1차원 arr에 저장 후 출력 더보기 int k = 0; for(int i=0; i 303 ==> 3200 // 3. 주소 2개를 입력하면 관리비 교환 // 4. 관리비 가장많이 나온집 출력 더보기 int apt[3][4] = { {101, 102, 103, 104}, {201, 202, 203, 204}, {301, 302, 303, 304}, }; int pay[3][4] = { {1000, 1100, 1200, 1300}, {2000, 2100, 12200, 2300}, {3000, 3100, 3200, 3300}, }; /.. 2020. 7. 23.
[36] 2차원 배열 2차원 배열 . 구조 : 자료형 변수명[행수][열수] . 선언 int arr[3][3]; int map[2][3] = {{1,2,3},{4,5,6}}; . 사용 : 행과 열의 인덱스를 넣어 값을 대입 arr[0][0] = 10; # include # incldue void main(){ // 배열 2차원 // 구조 : 자료형 변수명[행수][열수] // 선언 : int arr[3][2]; // Default : Garbage Value // 사용 : arr[0][0] = 10; arr[0][1] = 20; arr[1][0] = 30; arr[1][1] = 40; arr[2][0] = 50; arr[2][1] = 60; printf("%d ", arr[0][0]); // 10 printf("%d ", arr.. 2020. 7. 22.
[35]-A. CGV 영화관 예매 # include # include // 실습예제 : 1차원 배열 // CGV 영화관 예매 // //. 7개 좌석 생성 (좌석에는 고유번호가 있음) //. 사용자에게 좌석번호를 보여주고, //. 원하는 자리의 번호를 입력받는다. //. 좌석의 예약상태를 확인해서, //. 결과를 출력 (예약완료 or 이미 선택된 좌석입니다) //. 매진 시, 메세지 출력 void main(){ int nums[7] = {0};// 모두 0으로 저장 int seats[7] = {0}; for(int n=0; n 2020. 7. 22.
[35] CGV 영화관 예매 실습예제 : 1차원 배열 → CGV 영화관 예매 . 7개 좌석 생성 (좌석에는 고유번호가 있음) . 사용자에게 좌석번호를 보여주고, . 원하는 자리의 번호를 입력받는다. . 좌석의 예약상태를 확인해서, . 결과를 출력 (예약완료 or 이미 선택된 좌석입니다) . 매진 시, 메세지 출력 . Tip 1차원 배열 2개 활용 1) 좌석번호 2) 예매현황 2020. 7. 22.
[34]-A. Mini Lotto # include # include # include void main(){ // # 실습예제 : 1차원 배열 // # Mini Lotto // . 1~3까지 랜덤번호 1개를 출력 : 당첨번호 // . 7자리 자동복권 생성 (1~3의 수) // . 생성된 자동복권의 당첨여부 출력 // . 당첨조건 : 연속 3개의 당첨번호 유무 srand(time(0)); int goal = rand() % 3 +1; printf("(당첨번호 : %d)", goal); int mini[7]; int bell = 0; printf("--- MINI LOTTO ---\n"); printf("자동복권 생성>>\n"); for(int i=0; i 2020. 7. 21.
[32]-A. 카카오 택시 import random # 목적지(destination) des_x = random.randint(-10, 10) des_y = random.randint(-10, 10) # 현재 위치 x = 0 y = 0 # 방향(direction) direc = 0 # 속도 speed = 0 # 요금 fee = 0 # 이동 칸 수 count = 0 run = True while run: print("--- T A X I ---") print("목적지 :", des_x, des_y) print("현위치 :", x, y) print("방 향 :", direc) print("속 도 :", speed) print("1.방향설정") print("2.속도설정") print("3.이동하기") choice = int(input(.. 2020. 7. 21.
[32] 카카오 택시 실습예제 → 카카오택시 1. 손님을 태워 목적지까지 이동하는 게임이다. 2. -10~10 사이의 랜덤 숫자 2개를 저장해 목적지로 설정한다. 3. 메뉴는 아래와 같다. 1) 속도설정 : 1~3까지만 가능 2) 방향설정 : 1)동 2)서 3)남 4)북 3) 이동하기 : 설정된 방향으로 설정된 속도만큼 이동 4. 거리 2칸 당 50원씩 추가되어 요금도 출력한다. 예) 1(50) 2(50) 3(100) 4(100) ... import random # 목적지(destination) des_x = random.randint(-10, 10) des_y = random.randint(-10, 10) # 현재 위치 x = 0 y = 0 # 방향(direction) direc = 0 # 속도 speed = 0 # 요금 .. 2020. 7. 21.
[31]-A. 369 게임 # 369 게임 #1) 1~50을 차례대로 출력 #2) 숫자가 3 이나 6이나 9면 숫자대신 "짝" 출력 #3) 숫자가 3 이나 6이나 9가 2개면 "짝짝" 출력 ##.. ##28 ##29 ##짝 ##짝 ##짝 ##짝짝 ##.. gameNum = 1 while gameNum 2020. 7. 21.
[31] 369 게임 실습예제 → 369 게임 만들기 1) 1~50을 차례대로 출력 2) 숫자가 3 이나 6이나 9면 숫자대신 "짝" 출력 3) 숫자가 3 이나 6이나 9가 2개면 "짝짝" 출력 .. 28 29 짝 짝 짝 짝짝 .. 2020. 7. 21.
[30]-A. 베스킨라빈스 # 베스킨라빈스31 # 1. p1과 p2가 번갈아가면서 1~3을 입력한다. # 2. br은 p1과 p2의 입력값을 누적해서 저장한다. # 3. br이 31을 넘으면 게임은 종료된다. (넘긴쪽이 패배) # 4. 승리자를 출력한다. # # 예) # 1턴 : p1(2)br(2) # 2턴 : p2(1)br(3) # 3턴 : p1(3)br(6) p1 = 0 p2 = 0 br = 0 turn = 0 # 0: p1 / 1: p2 print("--- B E S K I N ---") while br = 1 and p1 = 1 and p2 30 : turn = (turn + 1) % 2 # turn을 반전시켜줌 break print("-------------------") print("BOMB!!!") if turn ==.. 2020. 7. 21.
[30] 베스킨라빈스 실습예제 → 베스킨라빈스 게임 만들기 1) p1 , p2 는 번갈아가면서 1~3을 입력한다. 2) br 는 p1 , p2 의 값을 누적 저장한다. 3) br 가 31을 넘어가면 게임종료 (넘긴쪽이 패배 : 승리자출력) 4) p1 ==> 2 , br ==> 2 5) p2 ==> 3 , br ==> 5 6) p1 ==> 1 , br ==> 6 .. br > 31 ==> 종료 2020. 7. 21.
[29]-A. 소수찾기 # 소수찾기 # 1) 1~100까지의 정수 중 소수를 찾아 # 2) 소수를 모두 출력하고, # 3) 소수의 개수를 출력 # while문 사용 cnt = 0 n = 1 while n 2020. 7. 21.
[29] 소수찾기 실습예제 → 소수찾기 1) 1~100까지의 정수 중 소수를 찾아 2) 소수를 모두 출력하고, 3) 소수의 개수를 출력 2020. 7. 21.