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;
}
'코스웨어 > 10년 스마트폰BSP' 카테고리의 다른 글
[BSP]업무일지-송동규-20100618 (0) | 2010.06.19 |
---|---|
[BSP]업무일지-김동훈-20100617 (0) | 2010.06.18 |
[BSP]업무일지-김상식-20100616 (0) | 2010.06.16 |
[BSP] 업무일지 - 김기찬 - 20100615 (1) | 2010.06.15 |
[BSP]업무일지 -김강수 - 20100611 (2) | 2010.06.13 |
[BSP]-업무일지-임종현-20100610 (1) | 2010.06.10 |
[BSP]업무일지-김석희-20100609 (1) | 2010.06.09 |
[BSP]업무일지-서유해-20100608 (1) | 2010.06.08 |