반응형

 

void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);
  pinMode(5, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  int btn = digitalRead(5);
  if(btn ==1){
    digitalWrite(13,HIGH);
  }
  else{
    digitalWrite(13,LOW);
  }

  delay(100);
}

불이켜진 상태
스위치를 누르지 않은 상태

반응형
반응형

 

void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);
  pinMode(5, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  int btn = digitalRead(5);
  if(btn ==1){
    digitalWrite(13,HIGH);
  }
  else{
    digitalWrite(13,LOW);
  }

  delay(100);
}

불이켜진 상태
스위치를 누르지 않은 상태

반응형
반응형
#include<stdio.h>
#define W 1024
#define H 768
#define head 54

FILE *fp1, *fp2; // 파일 처리용 구조체 변수  
unsigned char R[H][W], G[H][W], B[H][W];
void bmp_open(char s[20], char t[20]){ 
	fp1 = fopen(s,"rb"); // 바이너리 읽기 모드로 파일 열기 
	fp2 = fopen(t,"wb"); // 바이너리 쓰기 모드로 파일 열기  
}

void bmp_close()
{
	fclose(fp1);
	fclose(fp2);
}

void head_copy()
{
	unsigned char t;
	for(int i=0; i<head; i++)
	{
		t = getc(fp1); //gets() : 1byte를 입력받는 함수 
		putc(t,fp2); //puts() :1byte를 출력하는 함수  
	}
}

void bmp_read()
{
	for(int i=0; i<H; i++){ // 열 
		for(int j = 0; j<W; j++){ //행 
			B[i][j] = getc(fp1);
			G[i][j] = getc(fp1);
			R[i][j] = getc(fp1);
		}
	}
}

void bmp_write()
{
	for(int i=0; i<H; i++){
		for(int j = 0; j<W; j++){
				B[i][j] = getc(fp1);
				G[i][j] = getc(fp1);
				R[i][j] = getc(fp1);
			}
	}
}

void filter(float r, float g, float b)
{
	for(int i=0; i<H; i++){
		for(int j = 0; j<W; j++){
				B[i][j] = (int)(B[i][j]*b/100);
				G[i][j] = (int)(G[i][j]*g/100);
				R[i][j] = (int)(R[i][j]*r/100);
			}
	}
	
	for(int i=0; i<H; i++){
		for(int j = 0; j<W; j++){
				putc(B[i][j], fp2);
				putc(G[i][j], fp2);
				putc(R[i][j], fp2);
			
			}
	}
}

int main(){
	bmp_open("rgb.bmp", "filter.bmp");
	head_copy();
	bmp_read();
	
	filter(10, 20, 80); // r,g,b percentage 
	bmp_write();
	bmp_close();
}

반응형

'2019~2020 > 정보 과학' 카테고리의 다른 글

리스트,스택, 큐의 삽입, 삭제  (0) 2019.09.06
재귀함수  (0) 2019.08.30
피보나치 수열 값 출력하기  (0) 2019.08.30
상항식, 하향식 재귀  (0) 2019.08.23
별찍기  (0) 2019.08.23
반응형

리스트(list) 

- 하나의 연결 관계에 따라 자료들을 한 줄로 연결시킨 형태로 추상화된 자료구조이다.

- 자료 저장을 위해 메모리상의 연속된 공간을 할당해야 한다는 점에서 배열과 유사한 점이 있다.

- 자료들을 이동시킬 필요가 없이 연결관계만 재구성해 주면 되는 장점이 있다.

#include<stdio.h>
#include<list>
std::list<int>L;
void view(){
	std::list<int>::iterator p;
	for(p=L.begin(); p!=L.end(); p++)
		printf("%d", *p); //*p: 정수 리스트의 p위치에 있는 값
	printf("\n");  
}
int main()
{
	std::list<int>::iterator q;
	
	for(int i=1; i<=3; i++)
	 	L.push_back(i); // 마지막 원소 다음에 자료 i 삽입(연결)
	view();
	
	q = L.begin();
	q++;
	
	L.insert(q,4);
	view();
	
	L.push_back(5);
	view();
	
	q++;
	L.erase(q);
	view();
}
/*
123
1423
14235
1425

--------------------------------
Process exited after 0.02025 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

2. 스택(stack)

- 가장 나중에 입력된 자료에 가장 먼저 접근하고, 가장 먼저 저아도니 자료에는 가장 마지막에 접근하도록 설계된 후입선출(LIFO: Last In First Out) 형태로 추상화된 자료구조이다.

- 자료들을 쌓아 올리는 구조.

- 삽입삭제가 한곳에서만 이루어짐.

#include<stdio.h>
#include<stack>
std::stack<int>S;	// 정수형 스택 S 선언

int main(){
	for(int i=1; i<=3; i++)
	{
		S.push(i);		 //스택S의 가장 위에 i추가
	}
	for(int i=1; i<=2; i++)
	{
		printf("%d ", S.top());  //스택 S의 가장 위 자료값 출력 
		S.pop(); // 스택 S의 가장 위에 있는 자료 삭제
	}
	printf("\n"); 
	
	S.push(4); 
	S.push(5);
	while(!S.empty()){ // 스택S가 비어있지 않는 동안
		printf("%d ", S.top()); 
		S.pop(); // 
	}
	printf("\n");
}
/*
3 2
5 4 1

--------------------------------
Process exited after 0.02122 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

std::stack<int>S;

<stack>을 참조하여 스택을 선언하기 위해서 std::stack<스택에 저장될 자료형>스택이름; 을 사용

 

3. 큐(queue)

- 먼저 입력된 자료에 가장 먼저 접근하고, 가장 나중에 저장된 자료에는 가장 마지막에 접근하도록 선입 선출(FIFO: Fisrt In, First Out) 형태로 추상화된 자료구조이다. 

#include<stdio.h>
#include<queue>
std::queue<int>Q;

int main()
{
	for(int i=1; i<=3; i++)
	{
		Q.push(i);		
	}
	for(int i=1; i<=2; i++)
	{
		printf("%d ", Q.front()); //가장 처음값 출력
		Q.pop();
	}
	printf("\n");
	
	Q.push(4);
	Q.push(5);
	while(!Q.empty()){
		printf("%d ", Q.front());
		Q.pop();
	}
	printf("\n");
}
/*
1 2
3 4 5

--------------------------------
Process exited after 0.01674 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

큐에 저장된어 있는 값을 확인하기 위해서는 큐에 저장된어 있는 값을 순서대로 꺼내면서 확인해 보아야 함.

반응형

'2019~2020 > 정보 과학' 카테고리의 다른 글

이미지 프로세싱  (0) 2019.09.06
재귀함수  (0) 2019.08.30
피보나치 수열 값 출력하기  (0) 2019.08.30
상항식, 하향식 재귀  (0) 2019.08.23
별찍기  (0) 2019.08.23
반응형
int n;
char c;
void setup() {
  // 시리얼 통신 시작 
  Serial.begin(115200);
}

void loop() {
  // 시리얼 출력
  c = Serial.read(); // 한글자씩만 읽어줌 
  n = c - '0';
  if (n%2==0){
    Serial.println("even");
  }
  else
    Serial.println("odd");
  delay(1000);
}
반응형
반응형
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i;
	int stu, max = 0;
	int height[10] = {176, 168, 182, 175, 162, 173, 188, 163, 173};
	
	for(i=0; i<10; i++){
		if(height[i]>max){
			max = height[i];
			stu = i+1;
		}
	}
	printf("가장 키가 큰 학생은 %d번이고 키는 %d cm입니다.", stu, max);
	return 0;
}
/*
가장 키가 큰 학생은 7번이고 키는 188 cm입니다.
--------------------------------
Process exited after 0.01588 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/
반응형

'2019~2020 > 자료구조' 카테고리의 다른 글

선택정렬이란  (0) 2019.09.11
버블정렬  (0) 2019.09.11
bfs-dfs  (0) 2019.08.26
행렬을 이용한 BFS (c)  (0) 2019.08.20
연결 리스트 DFS (c)  (0) 2019.08.16
반응형

 

*별출력하고 홀수값 출력하기 

#include<stdio.h>
void recur2(int y);
void recur1(int x);
int main(void){
	recur1(9); //recur(9)함수 호출 
	return 0;
}
void recur1(int x){ 
	if(x) 
		recur2(x-1); //recur2(x-1)호출
	printf("%d", x);
}
void recur2(int y){ // y가 x-1이므로 
	printf("*"); 
	if(y)
		recur1(y-1); //recur1(y-1)출력
}
/*
*****13579
--------------------------------
Process exited after 0.01646 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

함수와 값 더해서 출력하기 

#include<stdio.h>
int f(int a, int b){
	if(a<=0) // a가 0보다 작거나 같으면 b를 되돌려준다
		return b;
	else //만약 a가 0보다 크다면 f(a-1, b*2)+b 함수를 실행시킨다. 
		return f(a-1, b*2) + b; // a가 0보다 같거나 작아질때까지 반복한다.
}
int main(){
	int a, b;
	scanf("%d %d", &a, &b);
	printf("%d",f(a, b));
}
/*
2 2
14
--------------------------------
Process exited after 2.262 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

 

#include<stdio.h>
int rever(char a[], int s, int d){
	if(s < d){ //s가 d보다 작다면 
		char t;
		t = a[d]; a[d] = a[s]; a[s] = t; //t에 a[d]를 저장 a[d]에  a[s]값 저장 
		rever(a, s+1, d-1); //함수 호출 
	}
}
int main(){
	char k[4]={'a','b','c','d'};
	rever(k, 0, 3); // 함수호출 
	for(int i=0; i<4; i++)
	{
		printf("%c",k[i]); //배열 출력 
	}
	return 0;
}
/*
dcba
--------------------------------
Process exited after 0.02256 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

문자열 역순으로 출력하기 

반응형

'2019~2020 > 정보 과학' 카테고리의 다른 글

이미지 프로세싱  (0) 2019.09.06
리스트,스택, 큐의 삽입, 삭제  (0) 2019.09.06
피보나치 수열 값 출력하기  (0) 2019.08.30
상항식, 하향식 재귀  (0) 2019.08.23
별찍기  (0) 2019.08.23
반응형
#include<stdio.h>
int fib1(int n){
	if(n<=1)
		return n;
	else
		return fib1(n-1) + fib1(n-2);
}

int fib2(int n){
	int k;
	int ary_fib[n+1];
	ary_fib[0] = 0;
	if(n > 0){
		ary_fib[1] = 1;
		for(k=2; k<=n; k++)
			ary_fib[k] = ary_fib[k-1] + ary_fib[k-2];
	}
	return ary_fib[n];
}
int main()
{
	int a;
	scanf("%d",&a);
	printf("%d\n",fib1(a));
	printf("%d",fib2(a));
}
/*
4
3
3
--------------------------------
Process exited after 1.285 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/
반응형

'2019~2020 > 정보 과학' 카테고리의 다른 글

리스트,스택, 큐의 삽입, 삭제  (0) 2019.09.06
재귀함수  (0) 2019.08.30
상항식, 하향식 재귀  (0) 2019.08.23
별찍기  (0) 2019.08.23
switch-case와 while문, 함수를 사용한 사칙연산 계산기  (0) 2019.08.21
반응형
#include<stdio.h>
int main()
{
	int x=10, y=20, tmp=30;
	
	x++, ++y; //증감 연산자 활용  
	tmp += x + y++;
	
	printf("x: %d, y: %d, tmp: %d \n", x, y, tmp);
	
	return 0;
}
/*
x: 11, y: 22, tmp: 62

--------------------------------
Process exited after 0.0131 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/
반응형

'C, C++ > 든든한 c programming 단계별 workbook' 카테고리의 다른 글

Chapter2 중급 1  (0) 2019.08.26
Chapter 3 초급 2  (0) 2019.08.26
Chapter 3 초급 2  (0) 2019.08.24
Chapter3 초급 1  (0) 2019.08.24
Chapter 2 고급2  (0) 2019.08.24
반응형
#include<stdio.h>
int main()
{
	int n1, n2, n3, min;
	
	printf("세 수를 입력하세요? ");
	scanf("%d%d%d", &n1, &n2, &n3);
	
	printf("입력된 값 n1: %d, n2: %d, n3: %d \n", n1, n2, n3);
	min=(n1<n2? n1 : n2); //3항 연산자 활용  
		min = (n1<n3? min : min); 
	printf("세 수 중 가장 작은 값: %d\n", min);
}
/*
세 수를 입력하세요? 57 10 893
입력된 값 n1: 57, n2: 10, n3: 893
세 수 중 가장 작은 값: 10

--------------------------------
Process exited after 9.787 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/
반응형

'C, C++ > 든든한 c programming 단계별 workbook' 카테고리의 다른 글

Chapter 2 중급 3  (2) 2019.08.26
Chapter 3 초급 2  (0) 2019.08.26
Chapter 3 초급 2  (0) 2019.08.24
Chapter3 초급 1  (0) 2019.08.24
Chapter 2 고급2  (0) 2019.08.24

+ Recent posts