프로젝트 & 과제/3학년 22

[데이터베이스] DB 연동 웹사이트

개요 프로그래밍 언어 : python 과제 수행 날짜 : 2020.11.19 ~ 2020.12.16 과제 개요 : 국립현대미술관에서 제공하는 데이터를 이용하여 데이터베이스를 구성하고, 데이터베이스에 존재하는 전시를 예매하는 페이지를 제작 개발 환경 개발 언어는 python을 사용하고, 웹 프레임 워크로 Flask를, DBMS로 sqlite3을 사용한다. 데이터베이스 데이터의 출처는 국립현대미술관 (http://www.mmca.go.kr/contents.do?menuId=6094005450)으로, 전시 이름, 장소와 같은 기본적인 정보를 담고 있다. 이 데이터를 목적에 맞게 수정하여 사용하였다. 기능 1) 로그인 ① 표시되는 정보 사용자가 이미 회원가입을 한 경우, ID와 PW를 입력하도록 하고, 로그인 ..

[C언어] 구조체 출력

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.12.04 과제 개요 : 구조체에 다음 구조체를 가리키는 포인터를 추가하여 5개의 구조체를 연결한 후, 특정 데이터를 출력 코드 총 5개의 구조체 데이터를 생성한 후, sID가 20으로 시작하는 데이터만 출력한다. #include // 구조체 정의 struct data { char name[10]; char sID[10]; int number; struct data *next; }; int main() { // 구조체 변수 5개를 임의의 값으로 초기화 struct data d1 = { "김길동","20882020",1 }; struct data d2 = { "홍길동","21992020",2 }; struct data d3 = { "마이클","2..

[C언어] 문자열의 마지막 문자 변경

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.12.04 과제 개요 : 포인터 배열을 이용하여 2차원 배열에 저장된 문자열의 마지막 글자를 *로 변경 코드 #include #define N 6 int main() { char *p[N], count; char str[N][10] = { "가나다","123","wxyz","가나다000","78다", "가나다" }; count = 0; while (1) // 포인터 배열 p가 str을 가리키도록 { if (count > N-1) break; p[count] = str[count]; count++; } count = 1; while (count

[C언어] 문자열 배열의 순서를 바꾸는 함수

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.11.27 과제 개요 : main 함수 내에 있는 문자열 배열의 순서를 바꾸는 함수 코드 #include #define N 2 void change(char str[][100]); int main() { char str[N][100] = { "banana","apple"}; change(str); for (int j = 0; j < N; j++) { printf("%s ", str[j]); } } void change(char str[][100]) { for (int i = 0; i < N / 2; i++) { char tmp[100] = { 0, }; //tmp 초기화 int a = 0; while (1) //앞쪽 문자열을 tmp 배열에 저장..

[C언어] 포인터로 값 복사

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.11.20 과제 개요 : int a를 가리키는 포인터를 이용하여 a의 값을 b로 복사 코드 #include int main() { int a = 0x1234abcd, b = 0, *p = &a; p = &b; *p = a; printf("%x", b); return 0; } 결과 a를 가리키고 있는 포인터 p를 이용해서 변수 b에 a의 값을 복사하려고 하므로, 먼저 포인터 p가 b를 가리키도록 한다. 그리고 포인터 p가 가리키고 있는 주소의 값을 a의 값으로 바꾸면 b의 자리에 a의 값이 복사되어 저장된다. 변수 선언시 생성된 변수들의 상태. 포인터 p가 a를 가리킨다 p=&b로 포인터 p가 b를 가리키도록 한다 포인터가 가리키고 있는 곳의 값..

[C언어] 포인터로 문자열 복사

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.11.13 과제 개요 : 2개의 문자열이 있을 때, 입력받은 수만큼 한 문자열에서 문자를 복사하여 다른 문자열에 붙여넣기 코드 #include char* strNcpy(char* s1, char* s2, char n) { char *tmp = s1; int c = 0; // s1의 길이를 구하기 위한 변수 char a = 0, b = 0; // 문자열에 접근하기 위한 인덱스 while (s1[a++] != 0) c++; if ((c + 1 == n) && (s2[n] != 0)) return "error"; // 두 번째 예외 a = 0; for (char k = 0; k < n; k++) { if (s1[a] == 0) { return "er..

[C언어] call by value/reference

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.10.30 과제 개요 : call by value와 call by reference Call by Value #include void swap(int p, int q) { int tmp; tmp = p; p = q; q = tmp; } int main() { int i = 3, j = 5; swap(i,j); printf("%d, %d",i,j); } call by value 방식에서는 swap 함수로 main 함수의 값을 변경할 수 없다. 왜냐하면 swap 함수에서 인수로 받는 변수가 복사본이기 때문이다. 즉, 인수로 변수의 "값"만 전달하였기 때문에 원본인 변수의 값을 바꿀 수 없다. Call by Reference #include void..

[C언어] char 포인터로 배열 읽기

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.10.16 과제 개요 : char 포인터로 int 배열의 값을 한 바이트씩 읽어서 출력 코드 #include int main() { int data[6] = { 256001,100000000,2147483647,3,4,5}; int i; for (int j = 0; j < 6; j++) { char *p = &data[j]; for (int k = 0; k < 4; k++) { i = (*p &0xFF) +((*(p + 1) & 0xFF) * 256) + (*(p + 2) & 0xFF) * (256*256) + (*(p+3)&0xFF)*(256*256*256); //printf("%3x ", *(p+k)&0xFF); } printf("1차원 배..

[C언어] 포인터로 배열 수정

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.10.16 과제 개요 : char 포인터 변수를 이용하여 int 1차원 배열의 값을 5씩 빼서 다시 저장(int 배열의 요소는 5이상 255이하) 코드 #include int main() { int data[6] = { 5,20,30,40,250,60 }; int d = 5; for (int i = 0; i < 6; i++) { char *p = (char *)&data[i]; *p = data[i] - d; printf("%d ", data[i]); } } 결과 char *p = (char *)&data[i]; 와 같이 char 형식으로 캐스팅 연산을 하여 *p 는 data[i]의 첫 번째 바이트를 가리키도록 한다. 그리고 첫 번째 바이트에서..

[C언어] 입력 문자 빈도수 계산

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.10.09 과제 개요 : 3차원 배열을 이용하여 입력받은 문자들의 빈도수를 계산 코드 #define _CRT_SECURE_NO_WARNINGS #include #include int main() { char statement[2][2][100]; char record[62] = { 0, }; int count; int a_s = 36; // a가 시작하는 record 배열의 인덱스 int A_s = 10; // A가 시작하는 record 배열의 인덱스 for (int a = 0; a < 4; a++) { scanf("%s", &statement[a / 2][a % 2][0]); // 문자열 4번 입력받기 } for (int b = 0; b < ..