달력

52024  이전 다음

  • 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

이차원 배열은 대입과 관련하여 다양한 알고리즘을 만들 수 있다.

(대표적으로 그래픽 분야에서 응용이 많이 된다. 그림의 화소정보를 각 각의 배열 원소로 넣을 수 있다.)

우선 문제를 보자.

문제 : 2행 4열의 A배열은..{{1,2,3,4},{5,6,7,8}} 처럼 되어 있다.

이를 4*2 배열의 A배열에 아래와 같이 값이 대입되도락 하라.

 

풀이: 핵심은 규칙성을 발견하는 것이다.

잘 보면, A배열의 행과 B배열의 열이 동일하게 값이 변하는 것을 알 수 있다.

(참고로 수학의 '등차수열' 이다.)

그럼 b배열은 a배열과 행과 열을 반대로 적으면 된다.

즉, a배열의 i행 j열의 값을 b 배열의 j행 i열에 넣으면 된다.

참고로 이 방식은 영상처리에서 '화면 좌우반전, 회전' 등의 분야에 그대로 응용할 수 있다.

 

이상으로 이차원 배열의 활용 문제를 풀어보았다.

잘 보았다 싶으시면 손가락을 꾸욱 눌러주세요 ㅋㅋ

 

Posted by C언어 보이
|

문제 : 사용자로부터 7개의 숫자를 입력받아 내림차순으로 정렬하라.

버블정렬을 이용하라. 아래를 참조하라.

 

풀이: 메인의 두 반복문은 일반적인 입력, 출력용 반복문임으로 설명이 불필요하다.

bubblesort함수만 살펴보자.

 

맨 안쪽에 있는 이프문이 스왑함수의 기능을 하는 부분이다.

 

이프문 바로 위의 반복문은 pivot (즉 왼쪽에 있는 기준값)과 대상값(pivot과 비교를 하는 값)을 비교한다. 이 대상값이 안 쪽 반복문에 의해 pivot 오른쪽에서부터 맨 끝의 숫자까지 바뀐다.

그렇게 해서 안쪽 반복문의 모두 수행되면,바깥쪽 반복문은 1회 수행이 완료되면서 i++고 pivot값이 오른 쪽으로 이동한다. 그리고 그 pivot 값을 기준으로 하여 또 나머지 값들에 대한 값 비교 반복문(즉 안쪽 반복문)이 모두 수행된다.

이상으로 내림차순 프로그램: 버블정렬 알고리즘, 스왑 함수에 대해서 알아보았다. 오름차순 또한 스왑함수의 조건식만 다르며 나머지는 다 똑같도.

잘 보았다 싶으시면, 링크추가나 손가락을 눌러주세요ㅋㅋ

 

 

 

Posted by C언어 보이
|

Symbol table은 자료형, 변수명, 주소를 나타내는 테이블

포인터는 주소다. 즉, 특정 메모리 영역 (변수)의 위치를 나타내는 숫자이다.

%08x: 빈자리는 0을 체우고, 8자리를 표현. X는 주소를 16진수로 표현하라는 말. %p와 동일

(int *)0x12FF70 = 100. 케스팅 연산자 * : 괄호안 숫자가 Int형 자료형의 메모리 주소 이며, 4바이트를 쓸 것임을 알려 줌.

 

 

피보나치 수열 프로그래밍

    for(count=3;count<=n;count++)

    {

        printf("Term Number : %d    C¬¢¬ø¨£¢® ùo¯¡© : %d\n",count,three);

        one=two;

        two=three;

        three=one+two;

    }

숫자를 0개, 1개, 2 개 입력한 경우 (count가 0,1, 2인 경우), 각각 분기문으로 받아서 return 0.

 

포인터(*)는 두 가지 의미임. 주소(캐스팅) 및 값..

 

 

Posted by C언어 보이
|

[C언어 핵심강의 04] 조건문 예제 : 두 수 빼기 프로그램

 

아닥하고 문제부터 보자.

3-5. 두개의 정수 a와 b를 입력받아, 큰 수에서 작은 수를 뺀 값을 출력하는 프로그램을 작성하라.

    

a-b하면 돼지 뭐가 문제야? 할 수 있다. 근데 a=2,b=4면? -2를 출력하게 되므로 곤난하다..

이 경우 b-a로 하게 해야 한다. 이게 풀이의 핵심이다. 읭? 10분 주께 풀어보자.

 

정답공개.

핵심은 조건검사의 구간을 둘로 나누는 것.

 

알겠즤??

이상으로 '조건문 예제 : 두 수 빼기 프로그램'를 풀어보았다.

잘 보셨으면 추천 꾸욱~*

 

Posted by C언어 보이
|

3-2. 정수를 입력받아 음수와 양수를 구분하는 프로그램을 작성하라. 음수의 경우는 negative, 양수의 경우는 positive, 0의 경우에는 zero로 출력하라. 출력은 다음의 양식으로 한다.

    

핵심은 분기문 사용입니다.

Posted by C언어 보이
|

나머지 연산자(%)의 활용 : 홀수 짝수 출력 프로그램

 

%2는 2로 나눈 나머지 값이다.

가령 4%2는 0, 3%2는 1이다. 4%3은? 3이다.

이 나머지 연산자는 조건식으로 유용하게 쓰인다.

 

아래 기본적인 활용문제를 풀어보자.

3-1. 정수를 입력받아 홀수(odd number) 또는 짝수(even number) 결정하는 프로그램을 작성하라. 0의 경우는 zero라고 출력하라.

    

홀수와 짝수를%로 정의하는 것이 핵심이다.

홀수%2는 1, 짝수%2는 0 이다.

 

이상으로 '나머지 연산자(%)의 활용 : 홀수 짝수 출력 프로그램'

너무 간단하게 끝나서 허무한가?

말하지 않았던가 난 핵심만 말하는 깔끔한 사람이라고 ㅋㅋ

 

잘 보셨으면 손가락 꾸욱~ 눌러주세요~~

Posted by C언어 보이
|

[C언어 핵심강의 02] 반복문, 조건문의 개념과 예시

 

반복문 : 반복의 조건을 만족하는 한, 계속 반복하라는 명령문.

조건문 : 조건을 만족하면, 함 해 달라는 명령문. 여자친구가 잘 해 주면, 뽀뽀를 해 준다. 여기서 '잘 해 주다'가 조건이며, '뽀뽀를 해 준다'가 명령문이다. 이 '잘 해 주다'를 식으로, '뽀뽀를 해 준다'를 식으로 쓰는 것이 프로그래밍인 것이다.  

 

위 반복문과 조건문이 프로그래밍에서 제일 많이 쓰인다. 뽀뽀는 물론 그 이상도 가능하다는 말이다. 읭??

 

[체크사항]

- break : 반복문 로프 탈출

- continue : 이하 코드를 통과하여 위로 다시 점프

- while 조건식을..while 안에 if break로 대체할 수 있음.

- switch문의 case나 goto문의 label이나 둘 다 주소.

- If 문은 조건식 중에서도 범위를 나타낼 때에 특히 유리함.

 

아래코드는 조건문과 반복문 두 가지 예제를 합쳐 놓은 것이다.

코드 1. 누적합 구하기. 조건문 : 두 수 num1, num2를 입력받고, 그 중에 큰 수를 big에 넣는 것이다. 그래서 big만 출력하게 하면 두 수 중에 num1, num2 중에 큰 수만 출력하게 되는 것이다.

 

코드 2. 등차수열 누적합. 반복문 : 설명이 필요없다.

 

이상으로 반복문, 조건문의 개념과 예시에 대하여 알아보았다.

아래 손가락! 눌러주시고 좋은 하루 보내세요~*

 

Posted by C언어 보이
|

0314 반복문,초기식,조건식,반복식,조건문,for,if else
삼항연산자 : 잘 안쓰며, 쓰라는 권유도 안 함. 다만 해석정도만 할 줄 알면 됌.
반드시 쓸 필요는 없으나..그게 코드상 짧을 때는 써도 뭐.

 

초기식
for (초기식,초기식,, ; 조건(하나만 쓸 수 있음!) ; 반복식,,,)
{
반복식
}

아래 반복문은 결과가 전부 같게 됌

무한루프 탈출방법
ctrl+c,ctrl+brk

조건문 최적화 : 걸릴 확률 높은 걸 첫순위 if 로.

 

#include<stdio.h>

int main()

 /*
 int inum1,inum2;
 inum2=0;
 for (inum1=0;inum1<5;inum1=inum1+1)
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
 inum2=inum2+2;
 printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
 */

 /*
 for (inum1=0,inum2=0;inum1<5;inum1=inum1+1,inum2=inum2+2)
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  */

 /*
 inum1=0;
 inum2=0;
 while (inum1<5)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  inum2=inum2+2;
  inum1=inum1+1;
 }
 */

 /*
 inum1=0;
 inum2=0;
 for (;inum1<5;)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  inum2=inum2+2;
  inum1=inum1+1;
 }
 */


 /*
 inum2=0;
 for (inum1=0;inum1<5;inum1=inum1+1)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  inum2=inum2+2;
 }
 */

 /*
  for (inum1=0,inum2=0;inum1<5;inum1=inum1+1,inum2=inum2+2)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
 }
 */

 return 0;
}

Posted by C언어 보이
|


0312 폰트, 화면주사방식, 아스키코드, 형변환


나의 출석번호 18

윈도우용 출석번호 +10

리눅스용 출석번호 +40

cmd ftp 접근하는 방법 : ftp 192.168.10.100

user 

password 

1.bin

2.mget *.hwp

3.get main.c

인제부터 보이는 건 전부 리눅스명령어

도스에서 연 ftp끊을 땐 quit


lf : long float 즉 double


폰트. 문자란 존재하지 않는다. 다만 문자처럼 출력하는 픽셀점멸정보에 관한 이진수가 있을 뿐.

alt+숫자 -> 숫자에 해당되는 아스키코드 문자 출력

화면출력방식 픽셀들의 점멸을 이진수로. 따라서..아스키코드에서는 A에 해당하는 2진수에 대하여 


순서버호 65가 부여되어 있음.

화면주사방식 ntsc

             pal

영문푼트(문자출력 이진수?)가 들어있는 곳이 BIOS. basic input output system.  

따라서..우리가 키보드에 a를 치면 컴터안에 a에 해당하는 폰트수?가 입력됌.

'a' : ' '안의 문자에 해당되는 아스키코드 숫자

ascii : america standard code information interchange 미국 표준 코드 정보 교환


아스키코드는..초기에 0~127. 즉 128가지인 7비트만 필요.

하지만..어차피 8비트 단위로 쓰므로..확장 아스키코드가 나옴 (다른 나라 언어 포함하는).

한글폰트들의 분류. 조합형과 완성형


도스영문형 : chcp 437

도스한글형 : chcp 949


아스키코드(8비트)를 저장하기 위해 제일 접합한 자료형은 char (1바이트). char은 정수형 자료형.

참고로..처리속도는 32비트 컴터에서는 32비트(4바이트) 크기인 int가 좋음. 이유는, 안 쓰는 버스


들은 죽이는 신호를 보내야 함으로.

        용량최적화에서는 char임.


/t : 가로(오리엔탈) 텝


int형 변수 값을 char형 변수에 넣을 때 : 하향식 형변환. down casting

부호단위로 넣으며..끝에서 부터 넣는다. 따라서..크기가 다르면 상위바이트의 손실 발생.


반면..int형 변수 값을 float형 변수에 넣을 때. 혹은 소+대 : 상향식 형변환. up casting

정수.0 으로 그대로 들어감. 형동등의 원칙 (자료형이 큰 쪽으로. 상향식 형변환) 

              : 정수형<실수형. 1+1.4=2.4실수형으로.

      1바이트형(->4바이트형으로)+4바이트형


() 형변환 연산자 = (double)num1/num2; ()부터 먼저 처리.

printf(":%3.2f:",11.56789); 3필드폭 지정, 소수점.이후부터는 2자리까지 반올림 표현.

Posted by C언어 보이
|

0311
cpu에 더하는 회로를 alu 라 함.
cpu 3대 구성요소 : 사람이 직접 alu나 cu를 건들이기 힘들고..register를 건들여 register제어기능 사용하여 cpu 동작시킴.
 - alu (arithmatic and logic unit : 산술논리연산 회로. 사칙연산 등. alu 안에 덧셈기 있음)
 - cu (control unit : 외부장치제어 회로.)
 - register : 두가지 개념. 1기능만 있는 레지스터도 있고, 1과 2의 기능을 갖고 있는 레지스터도 있음.
   - 1. cpu 안에 있는 메모리 : cpu와 동급으로 동작하나 가격이 아주 비쌈. 플립플롭(1비트를 기억시키는 회로).
                               연산을 하기 위해 메모리에 있는 변수값을 cpu에 보관하는 장소.
                               레지스터와 메모리 사에에 캐시메모리가 있고 성능은 양자의 중간정도.
   - 2. cu의 성질. 제어.
   * 변수가 저장되는 공간은 레지스터가 아니라 메모리 영역.
&& : inum1전체를 통째로 보아 값을 참조.
&  : 위와 다른 회로 동작. 각 비트를 and 시킴. 비트연산자.
     and 게이트로 inum1와 inum2의 각 비트를 모두 검사, 자리수마다 and 게이트 동작.
inum3=inum1&&inum2; 에서.. 일의 순서는 프로그램 카운터에서 기억?? 메모리 주소 레지스터??
                    ..inum1거짓일 때 &&이후 생략되는 것은 어느 레지스터에서 판단??
틸드 : ~ 비트단위 not 연산자.

#include<stdio.h>
int main()

int inum1,inum2,inum3;
inum1=0xfffffff0;   // 11...0000 : 4바이트 다 쓰고 있음
//inum2=0x4;
inum3=~inum1;
printf("%x %x",inum1,inum3);

return 0;
}

단항연산자 네 가지. |(or) &(and) ~(not) ^(xor)
시프트연산자 >>   요즘은 *4로 해도 컴터가 쉬프트연산자 자동으로 해 줌.


#include<stdio.h>
int main()

int inum1,inum2,inum3;
inum1=0x18;      // 11...0000 : 4바이트 다 쓰고 있음
inum2=inum1>>2;  // 0011
inum3=inum2>>3;  // 0001  나머지 1은 짤려나감
printf("%x %x %x \n",inum1,inum2,inum3);
inum3=inum3<<3;  //1000
printf("%x\n",inum3);

return 0;
}

상수는 메모리에 저장된 값이 아니라..
CPU 연산조건 임??
L value : 변수. 메모리 공간. 변수명은 사실..숫자형 주소명을 문자로 표현해 놓은 것임.
R value : 변수나 상수. 상수가 저장된 공간은? 아님 cpu 연산상태?
변수, 키워드(변수명
으로 사용불가), 키워드처럼 쓰이는 main (엔트리포인트),
상수.

윈도우, 프로그램 설치. 컴터 환경셋팅은 본인이 할 줄 알아야.
vmi로 메모리 할당해서 xp 설치해보면 좋음.
아웃룩 pop3. ip 설정.

const : 변수용 문자를 상수용으로 씀.
sizeof 함수가 아닌 연산자!! sizeof num 가능하나 편의상 혹은 우선순위 때문에 sizeof(num).
sizeof(num1+num2)도..num1 자료형의 크기.

Posted by C언어 보이
|