일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 졸업 작품 소재
- 강의
- 충남 천안
- 동영상 강의
- 파이썬
- 소켓 통신
- 프로젝트
- 독립기념관
- 동영상
- 표준 입출력
- c#
- 실습
- 유튜브 동영상 강의
- C++
- 원격 제어 프로그램
- c언어
- 언제나휴일
- 네트워크 프로그래밍
- 안드로이드 앱 개발
- 소스 코드
- Windows Forms
- 추천
- 표준 라이브러리 함수
- 알고리즘
- 무료 동영상 강의
- 언제나 휴일
- 클래스 다이어그램
- 산책하기 좋은 곳
- 실습으로 다지는 c#
- 캡슐화
- Today
- Total
목록C & C++ (217)
프로그래밍 언어 및 기술 [언제나휴일]
[C언어 소스] 연결리스트를 이용하여 구현한 큐안녕하세요. 언제나 휴일이예요.이번에는 연결리스트를 이용하여 구현한 큐의 소스 코드예요.큐는 자료를 한쪽으로 보관하고 다른쪽에서 꺼내는 FIFO(First In First Out) 방식의 자료구조입니다. 큐에 자료를 보관하는 연산을 PUT 혹은 ENQUEUE라 말하고 꺼내는 연산을 GET 혹은 DEQUEUE라고 말합니다. 그리고 보관할 위치 정보를 rear, 꺼낼 위치 정보를 front라고 말해요.연결리스트를 이용하여 구현한 큐에서는 보관할 때 rear 뒤에 보관하고 꺼낼 때 front에 있는 것을 꺼냅니다. 그리고 보관할 때 허용하는 메모리 범위 내에서 보관할 수 있어 꽉 찼는지 확인할 필요가 없습니다.알고리즘PUT 연산now = MakeNode(data)..
알고리즘부분 문자열 복사(dest: 버퍼, dsize:버퍼 길이, src: 원본 문자열, n:복사할 문자 개수)origin:= dest반복(dsize와 n이 참이고 dest 가리키는 곳에 src가 가리키는 문자 대입)dest와 src를 다음 위치로 증가, dsize 1감소, n 1감소origin 반환소스 코드//부분 문자열 복사하는 함수 만들기 - 버퍼 오버플로우 방지#include #include char *mystrncpy_s(char *dest, size_t dsize, const char *src, size_t n);int main(void){ char source[100] = "Hello World"; char dest[100] = "abcde Yahoo"; printf(..
알고리즘부분 문자열 복사하기(dest:복사할 버퍼, src: 원본 문자열, n:복사할 문자 개수)origin:= dest반복(n이 0보다 크면서 dest가 가리키는 곳에 src가 가리키는 문자 대입)dest와 src를 다음 위치로 증가, n 1감소origin 반환소스코드//부분 문자열 복사하는 함수 만들기#include char *mystrncpy(char *dest, const char *src, size_t n);int main(void){ char source[100] = "Hello World"; char dest[100] = "abcde Yahoo"; printf("원본 문자열:%s 의 5개 문자 복사\n", source); printf("복사 전 현재 결과 문자열:%s\n..
알고리즘문자열 복사하기(dest:복사할 버퍼, dsize:버퍼 길이, src: 원본 문자열)….dsize 1감소…..origin:= dest….반복(dsize가 참이면서 dest가 가리키는 곳에 src가 가리키는 문자 대입)//대입한 결과가 참이면 반복……..dest와 src를 다음 위치로 증가, dsize 1감소….dest가 가리키는 곳에 종료 문자 대입….origin 반환소스 코드//문자열 복사 - 버퍼 오버플로우 방지#include char *mystrcpy_s(char *dest, size_t dsize, const char *src);int main(void){ char source[100] = "Hello World"; char dest[100]; printf("원본 문..
[C언어 소스] 문자열 복사하는 함수 만들기알고리즘문자열 복사하기(dest:복사할 버퍼, src: 원본 문자열)….origin:= dest….반복(dest가 가리키는 곳에 src가 가리키는 문자 대입) //대입한 결과가 참이면 반복……..dest와 src를 다음 위치로 증가….origin 반환소스 코드//문자열 복사하는 함수 만들기#include char *mystrcpy(char *dest, const char *src);int main(void){ char source[100] = "Hello World"; char dest[100]; printf("원본 문자열:%s\n", source); mystrcpy(dest, source); printf("복사 결과 문자열: %s\n..
알고리즘부분 문자열 비교(str1:비교 대상 문자열1, str2: 비교 대상 문자열 2, n:비교할 문자 개수)….반복(n이 0보다 크면서 str이 가리키는 문자가 참이면서 str1과 str2가 가리키는 문자가 서로 같으면)……..str1과 str2를 다음 위치로 이동……..n을 1 감소….str1과 str2가 가리키는 문자의 차이 반환소스코드//부분 문자열 비교하는 함수 만들기#include int mystrlen(const char *str);//사전식 비교: 사전에 앞에 나오는 단어가 작고 뒤에 나오는 단어가 크다고 판별//차이가 없으면 0 반환int mystrncmp(const char *str1, const char *str2, size_t n);int main(void){ char src..
알고리즘문자열 비교하기(str1:비교 대상 문자열1, str2: 비교 대상 문자열 2)….반복(str이 가리키는 문자가 참이면서 str1과 str2가 가리키는 문자가 서로 같으면)………str1과 str2를 다음 위치로 이동….str1과 str2가 가리키는 문자의 차이 반환소스코드//문자열 비교하는 함수 만들기#include //사전식 비교: 사전에 앞에 나오는 단어가 작고 뒤에 나오는 단어가 크다고 판별//차이가 없으면 0 반환int mystrcmp(const char *str1, const char *str2);int main(void){ char names[5][20] = { "홍길동","강감찬","이순신","을지문덕","한석봉" }; char name[20]; ..
[C언어 소스] 문자열 길이를 계산하는 함수 만들기알고리즘문자열 길이 구하기(str:문자열 시작 위치)cnt:=0반복(str[cnt]가 참인 문자) cnt 1 증가cnt 반환 소스 코드//문자열 길이 구하는 함수 만들기//참고 에 strlen 함수가 있습니다.#include int mystrlen(const char *str);int main(void){ char name[100] = "Hello World"; printf("%s\n", name); printf("길이: %d\n", mystrlen(name)); return 0;}int mystrlen(const char *str){ int cnt; //str[cnt]가 거짓 문자(종료 문자, '\0')가 나올 때까..
n 개의 정수를 표현하기 가장 적합한 자료 형식은 정수 형식을 원소로 하는 배열이겠죠.n을 10으로 하드 코딩한다면 다음과 같습니다.int arr[10];제일 먼저 함수 이름을 결정합시다.홀수 합계를 구하는 것이므로 GetOddSum 이라고 정할게요.n개의 정수 중에 홀수의 합계를 구하는 함수의 함수 원형을 정해봅시다.C언어에서 배열 이름은 할당한 메모리 주소입니다. 해당 주소에 원소 형식을 사용할 것이므로 원소 형식 포인터로 생각할 수 있어요.그리고 배열의 크기를 전달해야겠죠.따라서 입력 매개변수는 2개로 int *base, int size 정도면 적당하겠네요.*원소 개수가 음수가 올 수 없다는 것을 고려한다면 unsigned 은 size_t로 표현할 수도 있어요.*함수에서는 결과로 홀수의 합계를 반환..
알고리즘n:←높이 입력반복(space:1→(n-1)) 공백 출력‘*’출력개행 출력반복(line:1→n-2) 반복(space:1→n-line-1) 공백 출력 ‘*’출력 반복(space:1→2line-1) 공백 출력 ‘*’ 출력 개행반복(star:1→(2n-1)) ‘*’출력개행소스코드//반복문 연습 - 속이 빈 삼각형//입력//5 - n//출력// * 공백 4, 별1, 개행// * * 1- 공백 3, 별1, 공백1,별1, 개행 // * * 2- 공백 2, 별1, 공백3,별1, 개행// * * 3- 공백 1, 별1, 공백5,별..
알고리즘n:←산의 높이 입력반복(line:1→2n) 조건(line 반복(space:1→4n-1-line) 공백 출력 반복(star:1→2line-1) ‘*’ 출력 개행아니면 반복(space:1→2n-line) 공백 출력 반복(start:1→2(line-n)) ‘*’ 출력 반복(space:1→2(2n-line)) 공백 출력 반복(star:1→(2n-line-1)) ‘*’ 출력 반복(space:1→2(2n-line)) 공백 출력 반복(start:1→2(line-n)) ‘*’ 출력 개행소스코드//반복문 연습 - 산봉우..
[C언어 소스] 숫자 피라미드다음처럼 출력할 라인 수를 입력하여 정수 피라미드를 출력하시오. 라인 수 입력Loop(i:1->line) Loop(space:0->line-1) printf space Loop(num:1->i) print num Loop(num:i-1->1) print num#include int main(){ int line = 0; int num = 0, i = 0, space = 0; printf("정수:"); scanf_s("%d", &line); for (i = 1; i 0; num--) { printf("%d", num); } putchar('..
Queue를 이용한 스케쥴러 시뮬레이션 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 실습은 Queue를 이용한 스케쥴러 시뮬레이션입니다.스케쥴러는 운영체제의 핵심 개체로 누가 CPU를 점유하여 사용할 것인지를 판단하는 역할을 수행합니다.여기에서는 대기 큐를 이용하는 라운드 로빈 방식의 스케쥴러를 코드로 표현해 볼게요.보다 자세한 사항은 자료구조와 알조리즘 C++ 3.5 큐를 이용한 스케쥴러 시뮬레이션을 참고하세요.EHProcess.H#include using namespace std;class EHProcess{ string pname; //프로그램 이름 const int tjob; //전체 작업량 const int cjob; //cpu 점유 시 수행가능 최대 작업량 int n..
파서 트리를 이용한 계산기 [C++] Part1 파서 트리를 이용한 계산기 [C++] Part2안녕하세요. 언제나 휴일에 언휴예요.이번에는 파서 트리를 이용한 계산기를 구현하는 실습이예요.23+8*9-7 과 같은 수식을 계산하면 8*9를 먼저 계산하고 23+(8*9)-7 순으로 계산합니다.이처럼 수식을 연산자 우선 순위에 맞게 계산하기 위해 여기에서는 파서 트리를 이용할 거예요.파서 트리를 이용한 계산기에 관한 이론적인 내용은 자료구조와 알고리즘 C++ 9.3 수식 파서 트리를 참고하세요.#include #include using namespace std;class Calculator{ string expr;public: Calculator(string expr) { ..
함수 개체, 회원 및 회원 컬렉션 구현[C++]안녕하세요. 언제나 휴일에 언휴예요.이번에는 함수 개체 실습이예요.함수 개체는 특정 형식 개체를 함수처럼 호출 가능한 개체를 말합니다.이를 위해 해당 형식에는 함수 호출 연산자를 중복 정의합니다.이 외에도 이번 실습에는 개체 출력자, 인덱스 연산자 중복 정의를 구현하는 부분도 있습니다.다음은 함수 호출 연산자를 중복 정의한 간단한 예제입니다.class FunObject{public: int operator()(int a, int b) { return a + b; }};int main(){ FunObject fobj; int re = fobj(3,4); cout 위 예에서 FunObject 클래스에는 함수 호출 연산..
개체 출력자 실습 – 회원 클래스 및 쉬프트 연산자 중복 정의 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 실습에서는 개체 출력자를 구현합니다.C++에서 출력을 위해 ostream 형식을 정의하고 있어요. cout이 대표적인 ostream 형식 개체죠.개체 출력자는 ostream 형식 개체를 이용하여 개체 정보를 출력할 수 있게 정의하는 코드 집합을 개체 출력자라 부릅니다.이번 실습에서는 회원 클래스를 정의하고 개체 출력자를 정의할 거예요.기본 형식처럼 회원 개체 정보를 ostream 형식 개체로 출력할 수 있게 구현하는 실습입니다./* https://ehpub.co.kr C++ 예제 - 언제나 휴일 개체 출력자 - 회원 클래스*/#include #include using namespace..
다형성 실습 – 오케스트라, 음악가, 피아니스트, 드러머 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번에는 다형성 실습이예요.다형성은 하나의 이름으로 보여도 실제 형태는 다양할 수 있는 성질입니다.기반 형식 포인터 변수로 파생 형식 개체를 사용할 수 있는 특징을 형식의 다형성이라고 부릅니다.기반 형식의 가상 메서드를 파생 형식에서 재정의할 수 있습니다.이 때 기반 형식 포인터 변수로 해당 메서드를 호출하면 실제 개체 형식에 정의한 메서드가 동작합니다.이러한 특징을 메서드의 다형성이라고 부릅니다.이러한 다형성에 관한 실습을 오케스트라(음악가, 피아니스트, 드러머) 소재로 진행합니다./* https://ehpub.co.kr C++ 예제 - 언제나 휴일 다형성 실습*/#include using na..
상품과 할인 상품 – 상속 실습 [C++] 안녕하세요. 언제나 휴일에 언휴예요.이번에는 상속 실습을 해 볼 거예요.실습 소재는 상품과 할인 상품 클래스를 정의합니다.클래스 다이어그램에서 삼각형과 실선으로 표현하는 관계를 일반화 관계라고 불러요.일반화 관계는 기반 형식(Product)과 파생 형식(Discount Product) 사이의 관계입니다.일반화 관계에서 파생 형식은 기반 형식의 멤버를 상속받는 특징을 갖습니다./* https://ehpub.co.kr C++ 예제 - 언제나 휴일 상속 실습 - 상품과 할인 상품 클래스 정의하기*/#include #include using namespace std;class Product{ string name; int price;public: ..
회원 클래스 정의 – 정적 멤버 캡슐화 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 예제는 정적 멤버 캡슐화를 다룰 거예요.실습은 회원 클래스를 정의합니다.클래스 다이어그램에서 밑줄로 표시한 멤버가 정적 멤버입니다.가장 최근에 부여한 회원 번호(lastnum)과 현재까지 생성한 회원 수를 반환하는 메세드(GetMemberCount)를 캡슐화할 거예요.이 두 개의 멤버는 개체의 멤버가 아닌 형식의 멤버로 형식 이름으로 접근할 수 있어요./* https://ehpub.co.kr C++ 예제 - 언제나 휴일 회원 클래스 정의 - 정적 멤버 필드 캡슐화*/#include #include using namespace std;class Member{ static int last_num; co..
복소수 클래스 정의 – 캡슐화 실습 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 강의는 캡슐화 실습으로 복소수 클래스를 정의할 거예요. 실수부와 허수부를 멤버 필드로 갖고 있습니다. 그리고 실수부와 허수부의 값을 접근하는 접근자 메서드와 설정하는 설정자 메서드를 갖습니다. 마지막으로 복소수 개체 정보를 문자열로 반환하는 메서드를 멤버로 갖습니다. #include #include using namespace std;class Complex{ double image; double real;public: Complex(double real = 0, double image = 0) { SetReal(real); SetImage(image); } vo..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어]알고리즘n:←정수 입력반복(line:0→n)반복(space:0→n-line-1)공백 출력반복(star:0→2*line+1)‘*’ 출력개행반복(line:n-2→n)반복(space:0→n-line-1)공백 출력 반복(star:0→2*line+1)‘*’ 출력개행소스코드//반복문 연습 - 다이아몬드 출력// 입력// 5 - n//출력// * 0- 공백 4, 별1, 개행// *** 1- 공백 3, 별3, 개행 // ***** 2- 공백2, 별5, 개행// ******* 3- 공백1, 별7, 개행 // ********* 4- 공백0,..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어] 알고리즘n:←출력할 라인 수 입력 반복(line:0→n)—반복(space:0→line)——공백 출력—반복(star:0→2(n-line)-1)——‘*’ 출력—개행소스코드 //반복문 연습 - 역삼각형 출력//입력//5 - n //출력// ********* 0- 공백0, 별9, 개행// ******* 1- 공백1, 별7, 개행 // ***** 2- 공백2, 별5, 개행// *** 3- 공백 3, 별3, 개행// * 4- 공백 4, 별1, 개행 //공백 = line//별 = 2*(n-line)-1//개행=1 #include in..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어]알고리즘n:←출력할 라인 수 입력 반복(line:0→n)—반복(space:0→(n-line))——공백 출력—반복(star:0→(2line+1))——‘*’ 출력—개행소스코드//반복문 연습 - 삼각형 출력//입력// 5 - n//출력// * 0- 공백 4, 별1, 개행// *** 1- 공백 3, 별3, 개행 // ***** 2- 공백2, 별5, 개행// ******* 3- 공백1, 별7, 개행 // ********* 4- 공백0, 별9, 개행//공백 = n-line//별 = 2*line +1//개행=1#include int..
제어문, 정사각형, 삼각형, 역삼각형, 다이아몬드 출력 [C언어]알고리즘n:←출력할 라인 수 입력반복(i:0→n)—반복(j:0→n)——‘*’출력—개행소스 코드//정사각형 출력// 입력// 5//출력// *****// *****// *****// *****// *****#include int main(void){ int n; int i, j; printf("출력할 라인 수:"); scanf_s("%d", &n);//입력 for (i = 0; i 언제나휴일 추천 여행 및 산책
안녕하세요. 언제나 휴일의 언휴예요.함수만들기 - 합계 구하기, 소수 판별, 소문자 판별, 대문자 판별, 소문자 변환, 대문자 변환자주 사용하는 알고리즘을 함수로 만들어 사용합니다.함수를 만들고 사용하는 것은 많은 연습을 필요합니다.이번에는 기초적인 함수들을 만들어 보는 실습을 해 볼게요.특정 범위 내의 정수 합계를 구하는 함수함수를 만들 때 제일 먼저 해야 할 일은 무엇을 만들어야 하는지 정확히 분석하는 거예요. 이러한 작업은 도메인 분석이라고도 부르죠.함수를 만들 때는 전달해야 할 인자가 무엇이고 어떠한 결과를 나와야 하는지 결정할 수 있어야 합니다.특정 범위 내의 정수 합계를 구하는 함수를 예를 든다면 입력 인자로 특정 범위를 전달해야 할 거예요. 범위의 시작과 범위의 끝을 전달하면 되겠죠. 그리고..
안녕하세요. 언제나휴일의 언휴예요.함수 선언, 함수 정의, 함수 호출 [C언어] 프로그램을 만들다 보면 자주 사용하는 알고리즘이 있어요.이러한 코드는 이름(함수 명), 알고리즘에 필요한 입력 인자(입력 매개변수), 원하는 결과(리턴 타입)를 정하여 알고리즘을 전개하여 함수로 만들 수 있습니다.함수를 만들면 필요할 때 함수를 호출하여 사용할 수 있어요.함수 개요우리는 초등학교부터 함수에 관한 교육을 받아왔어요.블랙 박스에 입력 값을 넣으면 출력 값이 나오는 형태, y = x+2 처럼 방정식 형태, 정의역과 공역의 요소를 매핑하는 형태와 f(x) = x+2 등 다양하게 다루었어요. 함수 정의문C언어의 함수 관련 문법은 크게 함수 정의문, 함수 호출문, 함수 선언문이 있어요.함수 정의문은 함수를 만드는 구문을..
안녕하세요. 언제나휴일의 언휴예요.제어문은 문법이 어려운 것은 아니죠.하지만 막상 문제를 표현하려고 할 때 어떠한 제어문을 어떻게 전개해야 할 지 막막합니다.이는 문법보다는 문제 해결 능력에 관한 것이죠.문제를 해결하기 위해 알고리즘, 자료구조를 비롯한 다양한 경험을 요구합니다.이번에는 다양한 제어문을 연습할 수 있는 다양한 문제를 제시할게요.여러분께서 먼저 해결해 본 후에 코드를 비교해 보길 권할게요.여기에서는 별도의 설명은 생략합니다.두 수를 입력받은 후 작은 수~큰 수 사이의 모든 수의 합을 구하는 프로그램을 작성하시오.#include int main(void){ int a, b; int sum; printf("두 개의 정수 입력:"); scanf_s("%d%d", &a, &b..
안녕하세요. 언제나휴일의 언휴예요.반복적인 작업은 while 혹은 for 문을 사용하세요. [C언어] C언어의 반복문C언어는 세 종류의 반복문을 제공하고 있어요.while(조건 표현) statement;do statement while(조건 표현);for(statement;statement;statement)statement;while 문C언어에서는 특정 조건이 참일 동안 반복하는 구문으로 while 문을 제공하고 있어요.while(표현) statement;while문 소괄호 표현은 참과 거짓을 판별할 수 있는 표현이어야 합니다. 다음은 0에서 10까지 정수의 합계를 계산하는 코드입니다.i를 0으로 초기화하였고 i가 10보다 작거나 같다면 블록({}) 에 있는 구문을 반복합니다.while문도 if 문처럼..
안녕하세요. 언제나 휴일의 언휴예요.값에 따라 수행할 구문을 선택하는 switch case 문 [C언어] 선택문C언어에서는 특정 표현의 값에 따라 구문을 선택하여 수행하는 switch 선택문을 제공하고 있어요.switch(표현){case 상수: [수행 구문] [break]case 상수: [수행 구문] [break]…[default:] [수행구문] [break] }switch 선택문에서 중괄호는 반드시 달아야 합니다. 물론 개발할 때 중괄호를 달지 않으면 문법 오류가 발생하기 때문에 개발할 때 실수할 확률은 지극히 낮겠죠.여러 조건에 따라 수행할 구문을 표현할 때 if 조건문을 사용하면 복잡할 때가 있습니다. 이 때 switch 선택문으로 해결할 수 있는지 고민해 보세요.학점 부여하기로 조건문과 선택문 비..
안녕하세요. 언제나휴일의 언휴예요.조건문 실습 문제 [C언어] 이전 글에서 제시했던 문제 솔루션이예요.1. 두 개의 정수를 입력받은 후에 큰 수를 출력하는 프로그램을 작성하시오.//[언제나 C언어] https://ehpub.co.kr//1. 두 개의 정수를 입력받은 후에 큰 수를 출력하는 프로그램을 작성하시오.#include int main(){ int a = 0, b = 0; printf("두 개의 정수:"); scanf_s("%d %d", &a, &b);//a,b에 두개의 정수를 입력 if (a > b)//조건 a가 b보다 크면 { printf("%d\n", a);//a를 출력 } else//그렇지 않..