teuria / Engineering-computer-programming-CJU

청주대학교 항공기계공학과 2021010530학번 박진우 공학컴퓨터프로그래밍
GNU General Public License v3.0
1 stars 0 forks source link

10주차 수업 #8

Open teuria opened 1 year ago

teuria commented 1 year ago

1번 문제 코드와 실행 결과 10th_week_project 1_코딩1 10th_week_project 1_코딩2 10th_week_project 1_실행결과 입력할 숫자인 num과 소수를 판별해 줄 pn과 i, j 변수를 선언한다. 먼저 "양수를 입력하세요."이라고 출력 되고 num에 들어갈 숫자를 입력한다. pn을 동적할당 해준다. 만약 pn이 비어있다면 "메모리가 없습니다."이라고 출력되고 끝난다. 그 다음 i가 1부터 내가 입력한 숫자에서 1을 뺸 만큼 pn[ i ] = i + 2를 반복한다. 이것은 0과 1을 제외하기 위해서 이다. 다음 무한 반복 안에 pn[ i ] 가 0 이고 i가 (num - 2) 조건을 만족하면 i의 값이 계속 1씩 반복되고 아니면 반복을 멈춘뒤 i == (num - 2)라면 break로 무한 반복이 끝나고 아니면 j가 i+1부터 (num - 1)까지 만약 (pn[ j ] % pn [ i ])== 0이라면 pn [ j ] = 0이다. 이렇게 무한 반복이 끝나면 i가 0부터 (num - 2)까지 만약 pn[ i ]이 0이 아니라면 숫자로 출력되고 아니라면 X가 출력이 된다. 그리고 만약 (i + 1) % 5 ==0 이라면 한 칸 뛴다. 마지막으로 동적 할 영역을 반환하고 끝난다.

2번 문제 코드와 실행 결과 10th_week_project 2_코딩1 10th_week_project 2_코딩2 10th_week_project 2_실행결과 구조체 book에 변수 title, author, page, price를 선언하고 typedef struct book해서 Book으로 다시 정의 했다. main문에서 Book information[NUMBER_OF_BOOKS]라고 선언한 뒤 i가 0부터 NUMBER_OF_BOOKS (3)까지 책의 제목, 저자, 페이지 수, 가격을 적는 것을 반복한다. 정보가 다 입력을 하면 함수 void print_data(Book *information)에서 i가 0부터 NUMBER_OF_BOOKS 까지 책의 정보를 출력하는 함수를 main문에 가지고 와서 책에 대한 정보를 출력한다고 출력한 뒤 책의 정보를 출력하고 끝난다. 함수 void clearBuffer(void)는 버퍼를 해결해 준다.

3번 문제 코드와 실행 결과 10th_week_project 3_코딩1 10th_week_project 3_실행결과 구조체 crackers에 변수 price, calories를 선언했다. 그 다음 바사삭 크레커의 가격과 칼로리를 입력하라고 출력한다. 각각의 가격과 칼로리를 입력하면 입력한 가격과 칼로리가 출력되고 끝난다.

4번 문제 코드와 실행 결과 10th_week_project 4_코딩1 10th_week_project 4_실행결과 구조체 marriage에 변수 name[20], age, sex, height를 선언했다. m1 (남자1)의 이름은 Andy, 나이는 22, 성별은 m(남자), 키는 187.5이다. mp로 m1을 가리키고 이름이 뭐 인지 물어볼 때 포인터가 mp인 name을 가리켜서 name에 들어간 문자열로 출력이 되고 나이가 몇 인지 물어볼 때 포인터인 mp가 age을 가리켜서 age에 들어간 숫자로 출력이 되고 성별이 뭐 인지 물어볼 때 포인터인 mp가 sex을 가리켜서 sex에 들어간 문자열로 출력이 되고 키가 몇 인지 물어볼 때 포인터인 mp가 height을 가리켜서 height에 들어간 숫자로 출력이 되고 끝난다.

5번 문제 코드 10th_week_project 5_코딩1 구조체 train에 seat, Train next를 선어했다. typedef struct train Train로 struct train를 Train라고 다시 정의했다. 다음으로 Train head, *tail를 초기화했다. i가 0부터 5까지 만약 head가 비어있다면 head는 tail과 같고 동적할당을 하고 아니라면 tail은 다음 칸을 가리키고 동적할당을 하고 끝난다.

6번 문제 코드와 실행결과 10th_week_project 6_코딩1 10th_week_project 6_실행결과 열거형 enum으로 COLOR에 { CYAN, MAGENTA, YELLOW = 5, BLACK } 다시 정의 했다. 이러면 CYAN은 0, MAGENTA은 1, YELLOW은 5, BLACK은 6이다. 또 열거형 enum으로 ARROW { UP, DOWN, LEFT, RIGHT } 다시 정의 했다. 이것도 UP은 0, DOWN은 1, LEFT은 2, RIGHT은 3이다. COLOR my_color = YELLOW이고 ARROW direction = UP이다. 변수 c, d= direction(d는 1)을 선언했다. C가 CYAN부터 BLACK까지 ,즉 1부터 6까지 d는 1 올라가고 d를 4로 나누고 남은 나머지를 d에 저장한다. 만약 c가 my_color = YELLOW라면 멈춘다. 그러니깐 d는 2가 된다. switch를 사용해서 d가 0이라면 옳은 방향은 UP이라고 출력이 되고 d가 1이라면 옳은 방향은 DOWN이라고 출력이 되고 d가 2이라면 옳은 방향은 LEFT이라고 출력이 되고 d가 3이라면 옳은 방향은 RIGHT이라고 출력이 된다. d가 2이니 case 2번째이므로 옳은 방향은 LEFT이라고 출력이 되고 끝난다.

7번 문제 코드와 실행결과 10th_week_project 7_코딩1 10th_week_project 7_코딩2 10th_week_project 7_코딩3 10th_week_project 7_코딩4 10th_week_project 7_실행결과 구조체 typedef struct student Student는 struct student를 Student로 다시 정의한다는 말이다. 예약어 Student에는 변수 st_id, name[20], kor, eng, math, total, avg, grade를 선언했다. 함수 void input_data(Student pary)는 for문을 사용하여 학생들의 정보를 입력해서 저장하는 함수이다. 함수 void calc_data(Student pary)는 각각의 학생들의 점수의 평균을 구해서 90이상이면 A, 80이상이면 B, 70이상이면 C, 나머지는 F를 정하는 함수이다. 함수 void sort_data(Student pary)는 학생들의 학점 순으로 정리하는 함수이다. max를 첫 번째 학생으로 정한 뒤 모든 학생들과 비교해서 비교한 것보다 크면 그대로 작으면 서로 바뀌게 만들었다. 이렇게 모든 학생들을 비교해서 학점 순으로 정리한 것이다. 함수 void print_data(Student pary)는 학생들의 정보를 보여주는 함수이다. main문은 학생들의 정보를 정리하기 전과 정리한 후를 보여주고 끝난다.

8번 문제 코드와 실행결과 10th_week_project 8_코딩1 10th_week_project 8_실행결과 변수 character[100] = "C:\n\nDocument\n\nGithub\n\nTest1\n\ntest.txt" 선언했다. 포인터 cut_cha도 선언한 뒤, strtok로 character를 \n\n 기준으로 자르고 그 다음은 NULL을 기준으로 자르고 잘라서 test.txt만 남겨서 test.txt가 출력 되도록 하고 끝난다.

9번 문제 코드와 실행결과 10th_week_project 9_코딩1 10th_week_project 9_코딩2 10th_week_project 9_실행결과 변수 character[100] = "C:\n\nDocument\n\nGithub\n\nTest1\n\ntest.txt" 선언하고 변수 char cut[100] = "\"도 선언했다. 포인터 Backslash = cut로 가리킨다. 포인터 cut_cha1에 character를 cut[100]기준으로 자른 것을 저장, 포인터 cut_cha2에 character를 NULL기준으로 자른 것을 저장, 포인터 cut_cha3에 character를 NULL기준으로 자른 것을 저장, 포인터 *cut_cha4에 character를 NULL기준으로 자른 것을 저장한다. strcpy를 사용해서 cut_cha4에 test2를 저장한다. 그 다음 strcat을 사용해서 Backslash에 cut_cha2을 붙이고 cut_cha1에 Backslash를 붙인다. 그 다음 Backslash는 Backslash + cut_cha2을 붙었으니 strtok을 사용해 D를 기준으로 자른 것을 Backslash에 저장하면 원상복귀한다. 그 다음 똑같이 Backslash에 cut_cha3 붙이고 cut_cha1에 Backslash를 붙인다. 이번에는 Backslash를 G 기준으로 자르고 cut_cha4를 붙인다. cut_cha1에 Backslash를 붙인다. 마지막으로 Backslash를 t기준으로 자르고 cut_cha5를 붙인다. 붙인뒤 cut_cha1에 Backslash를 붙이면 완성이다. 다 붙인 것을 출력하면 끝난다.

10번 문제 코드와 실행결과 10th_week_project 10_코딩1 10th_week_project 10_실행결과 파일 포인터 *fp와 변수 integer, real_number, character, string[10]를 선언했다. fp는 test.text 파일을 읽기모드로 열었다. 만약 fp == NULL이면 파일이 열리지 않았다고 출력한다. 그리고 integer, real_number, character, string를 순서대로 출력한다. 마지막으로 파일 fp를 닫으면 끝난다.

11번 문제 코드와 실행결과 10th_week_project 11_코딩1 10th_week_project 11_코딩2 10th_week_project 11_실행결과 파일 포인터 fp1, fp2를 선언했다. fp1은 yolo_label_data.txt 파일을 읽기모드로 열었다. 만약 fp1 == NULL이면 파일이 열리지 않았다고 출력한다. fp2는 yolo_bbox_data.txt 파일을 읽기모드로 파일을 열었다. 만약 fp2 == NULL이면 파일이 열리지 않았다고 출력한다. 무한 반복문을 만들고 만약 fgets(num, MAX, fp2) != NULL라면 num[MAX]에 있는 숫자들이 출력되고 아니면 무한 반복문이 깨진다. 그리고 한 칸 띄고 feof(fp1) == 0이 될 때까지 fgets(str, MAX, fp1)을 한 뒤 str[MAX]를 출력하는 것을 반복한다. 마지막으로 fp1, fp2 파일을 닫고 끝난다.

@swcho84