coding 15

운영체제 Linux 파이프 통신

IPC 구현방법에는 3가지가 있다. Unnamed pipe : 부모 자식 프로세스들간의 통신에 사용한다. Named pipe : 상관관계 없는 프로세스들간의 통신에 사용한다. Socket : 다른 컴퓨터상에서 동작하는 프로세스들간의 통신에 사용한다. 단방향 통신에는 파이프를 1개만 사용하며, 양방향 통신을 위해서는 2개의 파이프를 사용해야한다. FIFO를 지원하는 특수 파일로 mkfifo명령어를 사용하여 생성한다. pipe 기반의 생산자 프로그램 코드 #include #include int main(void) { int fd, n_write, i; mkfifo("/tmp/my_pipe", 0644); if ((fd = open("/tmp/my_pipe", 0_WRONLY, 0644)) == -1) { p..

coding/운영체제 2021.12.05

Kruskal의 MST 알고리즘

Kruskal이 MST 알고리즘 - 탐욕적인 방법(greedy method) 주요 알고리즘 설계 기법 각 단계에서 최선의 답을 선택하는 과정을 반복함으로써 최종적인 해답에 도달 탐욕적인 방법은 항상 최적의 해답을 주는지 검증 필요 Kruskal MST 알고리즘은 최적의 해답 임이 증명됨 최소비용 신장 트리 : cycle 안생기는 선에서 최소 값 간선 선택 int set_find(정점) : 대표정점을 반환 void set_union(대표정점1, 대표정점2) : 두 집합을 합하며 대표 정점 정한다. void set_init(n) : 독립적인 집합을 만들어줌 - Kruskal 알고리즘은 대부분 간선들을 정렬하는 시간에 좌우됨 - 네트워크의 간선 e개를 퀵정렬과 같은 효율적인 알고리즘으로 정렬한다면 Kruska..

coding/자료구조 2021.12.02

파일 입출력 이해하기. 텍스트파일에서 특정 문자열 탐색하는 프로그램

#define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { FILE* fp; char fname[128]; char buffer[256]; char word[256]; int line_num = 0; printf("입력 파일 이름을 입력하시오: "); scanf_s("%s ", fname); printf("탐색할 단어를 입력하시오: "); scanf_s("%s", word); if ((fp = fopen(fname, "r")) == NULL) { fprintf(stderr, "파일 %s를 열 수 없습니다.\n", fname); exit(1); } while (fgets(buffer, 256, fp)) { line_num++; if (strstr..

coding/C언어 2021.11.23

포인터, 구조체 이해하기. 평점이 제일 높은 학생 출력 프로그램

#include struct student { int number; char name[20]; double grade; }; struct student list[] = { {20180001, "홍길동", 4.2}, {20180002, "김철수", 3.2}, {20180003, "김영희", 3.9} }; int main(void) { struct student super_stu; int i, size; size = sizeof(list) / sizeof(list[0]); super_stu = list[0]; for (i = 1; i super_stu.grade) super_stu = list[i]; } printf("평점이 가장 높은 학생은(이름: %s, 학번: %d, 평점: %f)입니다.\n", supe..

coding/C언어 2021.11.19

구조체를 가리키는 포인터

내가 제일 싫어하는 부분이다. 아직 완벽히 이해하지 못했다. #include struct date { int month; int day; int year; }; struct student { int number; char name[20]; double grade; struct date* dob; }; int main(void) { struct date d; struct student s; s.dob = &d; //구조체 변수 s의 멤버인 포인터 dob에 구조체 d의 주소를 대입하였다. printf("학번을 입력해주세요: "); scanf_s("%d", &s.number); printf("이름을 입력해주세요: "); scanf_s("%s", s.name); printf("학점을 입력해주세요: "); sca..

coding/C언어 2021.11.19

C프로그래밍 구조체 이해하기. 2차원 공간 상의 점의 거리 구하기.

구조체란, 서로 다른 종류의 데이터를 하나로 묶기위해 사용하는 자료형이다. 예를 들어, 학생의 정보를 구조체로 묶어보자. struct student { int number; char name[10]; double grade; } 배열이 여러 개의 같은 자료형을 하나로 묶는 것이라면 구조체는 서로 다른 자료형들을 하나로 묶는 것이다. 2차원 공간 상의 점을 구조체로 표현하기 사용자로부터 두 점의 좌표를 입력받아서 두 점사이의 거리를 계산하여 보자. 점의 좌표를 구조체로 표현한다. 두 점 사이의 거리를 구하는 공식으로 계산한다. #include #include struct point { int x; int y; }; int main(void) { struct point p1, p2; int xdiff, yd..

coding/C언어 2021.11.18

C프로그래밍 함수 이해하기. 섭씨 온도를 화씨 온도로, 그 반대로 변환하는 프로그램 작성. 난수함수로 동전던지기 게임 만들기;

#include void printOptions() { printf(" 'c' 섭씨온도에서 화씨온도로 변환 \n"); printf(" 'f' 화씨온도에서 섭씨온도로 변환 \n"); printf(" 'p' 종료\n"); } double C2F(double c_temp) { return 9.0 / 5.0 * c_temp + 32; } double F2C(double f_temp) { return(f_temp - 32.0) * 5.0 / 9.0; } int main(void) { char choice; double temp; while (1) { printOptions(); printf("메뉴에서 선택하세요."); choice = getchar(); if (choice == 'q') break; else if..

coding/C언어 2021.11.18