본문 바로가기
코스웨어/10년 스마트폰BSP

[BSP]-업무일지-정호영-20100614

by 알 수 없는 사용자 2010. 6. 14.
728x90
반응형

1. 크기가 5 x 7 인 int 동적 배열을 생성한 다음, 0부터 순서대로 값을 저장하세요.

(c언어 타입도 작성하시오.)

   
#include <iostream>

using namespace std;

int main()
{

    int a;

    int b;

    int i;

    int c;

    int x;

    int y;

    cout<<" (x)by(y) :";

    cin>>x>>y;            // x by y 입력받기

    int **dp = new int*[x];        // (값을 저장할 배열의 주소)를 저장하는 배열을 동적 할당함.

    for(i=0; i<x; i++)

    {

        dp[i] = new int[y];    //(값을 저장할 배열의 주소)를 입력, 값을 저장할 배열 동적 할당

    }

      

    for(a=0; a<x; a++)

    {

        for(b=0; b<y; b++)

        {

            dp[a][b] = a*y + b;    //2차원 배열처럼 쓸 수 있다 - 값 입력

            cout<<"dp ["<<a<<"]["<<b<<"] = " << dp[a][b]<<"\t";

              

            if(b==(y-1))

            {

            cout<<"\n";

            }

        }

          

    }

  for(c=0; c<x; c++)

    {

        delete[] dp[c];        //값을 저장한 메모리 해제

    }

      

    delete[] dp;            //주소를 저장한 메모리 해제

      

    return 0;

}

   

2. 사용자가 입력한 크기만큼인 int 자료형 동적 배열을 생성해서 0부터 순서대로 채우세요. 사용자가 입력한 숫자가 100이라면, 0부터 99까지의 값을 배열에 저장합니다.

출력) 동적 배열크기 입력 : 10

[0] = 0

[1] = 1

[2] = 2

[3] = 3

[4] = 4

[5] = 5

[6] = 6

[7] = 7

[8] = 8

[9] = 9

   

   

#include <iostream>
using namespace std; 

 int main()

 {

   int a;

   cout<<"동적 배열크기 입력 :";

   cin>>a;

   int*arr=new int[a];

   for(int i=0;i<a;++i)

  {

        cout<<"["<<i<<"]"<<"="<<i<<"\n";

   }

      delete[] arr;

      return 0;

  }

   

3. 초 입력시 분과 초로 변환하는 프로그램을 작성하세요.

출력) Input Seconds : 100

Output : 1 min 40 sec

   

   

#include <iostream>

using namespace std;

int main()

{

int a;

cout << "Input seconds :";

cin >> a;

int b =(a/60);

if( a < 60)

{

cout << a << " min";

}

else if( a > 60)

{

//++b;

cout << b << " min" <<" "<< a-(b*60) <<" sec";

}

}

4. 입력된 정수의 2의 보수를 구하여 10진수, 16진수 형태로 출력하세요.

출력) Input Number : 1

2's complement(10진수) : -1

2's complement(16진수) : ffffffff


#include <iostream>

 using namespace std;  

int main()

{

int a;

   

cout << "Input Number :";

cin >> a;

int b = (~a)+1;

cout << "2's complement(10진수) : " << b << "\n";

cout << "2's complement(16진수) : " << hex<<b;

   

}

   

   

   

클레스는 변수 뿐만 아니라 함수까지도 포함할 수 있다.

함수가 들어간다는 것은 기능까지 들어갈 수 있다는 것이다.

구조체는 데이터만 들어갈 수 있다.(구조체는 자료형이 다른 변수의 모임.)

   

클레스에 비유할 수 있는 것이 붕어빵틀과 제품 설계도라면 객체는 붕어빵과 제품이다.

   

  • 구조체

    Struct A

    {

    int a;

    int b;

    }AA;

       

  • 객체

    main()

    {

    AA(자료형) BB(변수);

    }

    >>클래스를 사용하면 구조체 처럼 struct AA라고 struct를 달아줄 필요 없이 바로 클래스명 객체 이렇게 써주면 된다.

          

  • <오후>

       

    1. 8개의 LED가 일정간격으로 동시에 ON/OFF를 반복하기

       

    #define DDRC (*(volatile unsigned int *) 0x34)

    #define PORTC (*(volatile unsigned int *) 0x35)

       

    int main(void)

       

    {

    //DDRC = 0xff;        

    PORTC = 0xff;       

     

       

    int flag = 0;

    unsigned int us = 0;

    unsigned int ms = 0;

     

       

    while(1)

    {        

    us++;

       

    if(us >= 1000)

    {

    us = 0;

    ms++;

       

    }

       

       

    if(ms >= 500)        //500,000번 연산한 후에야 여기로 들어온다.

    {

       

       

       

    if(flag)

    {

    PORTC = 0x00;

    flag = 0;

       

    }

       

    else

       

    {

    PORTC = 0xff;

    flag = 1;

       

    }

       

    ms = 0;

          

    }        

       

    return 0;        

       

    }

       

     2. 0에서부터 255까지 증가하는 숫자를 LED로 표시하기

    //하나씩 켜지면서 전부 켜지기

       

    #define DDRC (*(volatile unsigned int *) 0x34)

    #define PORTC (*(volatile unsigned int *) 0x35)

       

    int main(void)

    {        

    unsigned int ms=0;

    unsigned int us=0;

    DDRC = 0xff;

    PORTC = 0x00;

     

    while(1)

    {

    us++;

     

    if(us>=1000)

    {

    ms++;

    us = 0;

    }

     

    if(ms>=1000)

    {

    PORTC = PORTC + 0b00000001;

    ms=0;

    }

     

    }

     

    return 0;

    }


    3. LED가 왼쪽에서 오른쪽으로 이동하면서 하나씩 켰다 꺼지는 것을 반복하기

       

    #define PORTF (*(volatile unsigned int *)0x62) //입출력설정

    #define DDRF (*(volatile unsigned int *)0x61) //출력설정

       

    #define PORTC (*(volatile unsigned int *)0x35) //입출력설정

    #define DDRC (*(volatile unsigned int *)0x34) //출력설정

    #define PINC (*(volatile unsigned int *)0x33)

     

    int main(void)

    {

    unsigned int us=0;

    unsigned int ms=0;

    int flag = 0;

    unsigned char led = 1;

    unsigned char check = 0;

     

    DDRF = 0xff;

    PORTF = 0xff-led;

    DDRC = 0x02;

    PORTC = 0x00;

     

    while(1)

    {

    us++;

    if(us >= 1000)

    {

    ms++;

    us = 0;

    }

    if(PINC&0x01)

    {

    flag = 1;

    if(led == 0x00)

    {

    led = 1;

    PORTF = 0xff-led;

    }

    }

     

    if(ms>=500)

    {

    if(check)

    {

    PORTC = 0x00;

    check = 0;

    }

     

    PORTC = 0x00;

     

    if(flag)

    {

    led = led<<1;

    PORTF = 0xff-led;

     

    if(led == 0x00) //led 이동이 끝난후

    {

    flag = 0;

    PORTC = 0x02;

    check = 1;

    }

    }

    ms = 0;

    }

     

    }

    return 0; //led한개씩 옆으로 이동 

    }

       

       

    4. 버튼 누를때마다 LED 켜지는데 이전 LED ON 상태도 그대로 유지하기

    LED 모두 켜지면 LED all OFF 한다.

       

    #define PORTD (*(volatile unsigned char *)0x32) //출력설정

    #define DDRD (*(volatile unsigned char *)0x31) //입출력 설정

       

       

    #define PORTC (*(volatile unsigned char *)0x35)// 출력 설정

    #define DDRC (*(volatile unsigned char *)0x34) // 입력설정

    #define PINC (*(volatile unsigned char *)0x33) // 입출력설정

       

    #define PORTF (*(volatile unsigned char *)0x62) //출력설정

    #define DDRF (*(volatile unsigned char *)0x61) //입출력설정

    #define PINF (*(volatile unsigned char *)0x20) // 입출력설정

       

    int main (void)

    {

       

       

    DDRF = 0xff; //LED 연결

    PORTF = 0xff;

     

    DDRC = 0x00; //스위치 연결

    PORTC = 0x00;

     

    while(1)

    {

    PORTF &= PINC;

    if(PORTF == 0x00)

    {

    if(PINC == 0xff)

    {

    PORTF = 0xff;

    }

    }

    }

    return 0;

    }

       

728x90