## 장점 ##


프로세서를 직접 제어할 수 있다. (레지스터 , I/O 에 접근)

동작을 하나하나를 정확하게 제어

효율적이고 최적화된 코드를 작성

고수준의 언어들로는 구현할 수 없는 부분까지 구현

어셈블리 언어를 통해 최적화된 소스는 가장 빠르고, 용량도 적음

 


## 단점 ##

프로그램 자체를 작성하기에는 복잡

만약 코딩을 재계획 하는 경우 , 코드 전체를 수정해야 함

다른 아키텍쳐나 프로세서로의 이식성이 부족


'IT > Assembly' 카테고리의 다른 글

Reversing / 2일차  (0) 2016.04.17
Reversing / 1일차  (0) 2016.04.13
2. 어셈블리어의 기초  (0) 2016.04.03

사용자에게 몇년 몇월 몇일인지를 입력받아,


 1년 1월 1일부터 몇일이 지났는지를 구하고, 윤년인지 아닌지를 구하는 프로그램


ex) 


날짜를 입력하세요... yyyy mm dd


yyyy년 mm월 dd일은 *****번째 날이고 #요일이면서 윤년입니다.


=====================================


#include <stdio.h>

int main()

{


int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; // 일 배열


int year,month,day=0,yun= 0,hapyear=0; // 년, 월,일,윤년 여부 변수 선언


printf("년 : "); // 년 입력


scanf("%d", &year);


printf("월 : "); // 월 입력


scanf("%d", &month);


if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { // 윤년 공식


yun = 1; // 만약 윤년이면 yun=1


}

if (month == 2 && yun == 1) // 월이 2월이고 , 윤년이라면

{

printf("일 (29일) : ");  // 일 입력

scanf("%d", &day);

}


else {

printf("일 (28일) : "); // 아니라면 그냥 일 입력

scanf("%d", &day);

}


if (1 <= month && month <= 12) { // month가 1월~12월 이고, day가 1~31일 안에 있을 때,

if (yun == 1)

{

printf("**윤년**\n\n");

printf("%d년 %d월 %d일은 \n", year, month, day); // 년 월 일 출력

}

else

{

printf("**평년**\n\n");

printf("%d년 %d월 %d일은 \n", year, month, day); // 년 월 일 출력

}

}

else {

printf("조건에 맞지 않습니다. 다시 입력해주세요.\n"); // 아니라면 재귀함수

main();

}


hapyear = (int)((year - 1)*365.2422 + (month - 1)*(365.2422 / 12) + day)-1; // 지난 일수 공식


// 2000년 5월 5일 입력시 1년 1월 1일부터 시작이므로 2000년 까지는 1999년이 지남 따라서 1999 * 365.2422

// 365.2422/12 = 1달기간이므로 입력한 달 전 달까지 4개월 치 계산 후 나머지 일을 더한다.



weeks(year,month,day,hapyear); // weeks 함수에 년 월 일 인자값


printf("1년 1월 1일 로부터 %d일 지났습니다.\n",hapyear+1); // 지난 일수 출력

}


int weeks(int year, int month, int day,int hapyear) // 년 월 일 인자값으로 받음


{


switch (hapyear % 7)

{

case 0: printf("월요일 이고,"); break;


case 1: printf("화요일 이고, "); break;


case 2: printf("수요일 이고,"); break;


case 3: printf("목요일 이고,"); break;


case 4: printf("금요일 이고,"); break;


case 5: printf("토요일 이고,"); break;


case 6: printf("일요일 이고,"); break;

}


return 0;

}


'IT > Programing' 카테고리의 다른 글

Dovelet / 여왕 벌/bumblebee  (0) 2016.04.03
프로그램 명: bumblebee
제한시간: 1 초

두 기차 A,B 가 l m 의 거리를 두고 있는 상태에서 여왕벌이 기차 A 에 앉았다가 날아올랐다. 기차 A 는 a m/s 로 기차 B 를 향해 달리고 , 기차 B 는 b m/s 로 기차 A 를 향해 달린다.

여왕벌은 기차 A 에서 기차 B 까지 x m/s 로 날아가다가 기차 B 와 부딪히기 직전 기차 A 를 향해 방향을 바꿔 x m/s 로 날아가고 다시 기차 A 와 부딪히기 직전 기차 B 를 향해 바꿔 날기를 반복한다. 그러다가 기차 A,B 는 부딪히고 여왕벌은 죽는다.

우리의 목표는 a,b,x,l 이 주어질 때 여왕벌이 두 기차 A,B 가 부딪히기 직전까지 날아다닌 거리를 구해야 한다.

입력

a,b,x,l ( 1 <= a, b < x < l <= 40000) 이 순서대로 주어지며 , 네 수는 모두 정수이다.

출력

여왕벌이 두 기차 A,B 가 부딪히기 직전까지 날아다닌 거리를 m 단위로 소수점 6 번째 자리까지 출력한다.

입출력 예

입력

2 3 6 10

출력

12.0000000

입력

3 4 9 10

출력

12.857143
추천: cube

링크 : http://59.23.113.171/30stair/bumblebee/bumblebee.php?pname=bumblebee

=======================


#include <stdio.h>


int main() {


float a, b, x, l; // 변수 선언


scanf("%f %f %f %f", &a, &b, &x, &l);


printf("%.6f\n", (float)l / (a + b) * x);



}


/*


두 기차 사이 거리 / ( 두 기차의 속력 ) * 벌의 속력


두 기차 사이 거리 / ( 두 기차의 속력 ) = 벌이 날아다닌 시간


벌이 날아 다닌 시간 * 벌의 속력 = 벌이 이동한 거리

*/

'IT > Programing' 카테고리의 다른 글

Critical / 윤 년 / Yun_year  (0) 2016.04.03

+ Recent posts