Курс ПЯВУ 2 сем / Практические / Пр №16.Макрокоманды
.odtРазработка макрокоманд
-
Примеры препроцессорных констант.
2. Макрокоманда SUM
3. Макрокоманда RAS
4. Макрокоманда PROD
5. Макрокоманда DIV
6. Макрокоманда МАХ
7. Макрокоманда MIN
8. Макрокоманда QVADR
9. Макрокоманда KUBE
10. Макрокоманда SDVIG
//Примеры использование препроцессорных констант.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define TWO 2
#define FOUR TWO*TWO
#define PX printf("X равно %d.\n", x)
#define FMT "X равно %d.\n"
#define SQUARE(X) X*X
int main()
{
int x = TWO;
PX;
x = FOUR;
printf(FMT, x);
x = SQUARE(3);
PX;
system("pause");
return 0;
}
//X равно 2.
//X равно 4.
//X равно 9.
//Макрокоманда SUM Cуммирование двух чисел.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define SUM(a,b) ((a)+(b))
int main()
{
int i,j,ma;
i=5;
j=5;
ma=SUM(i,j);
printf("i= %i j= %i ma= %i \n",i,j,ma);
system("pause");
return 0;
}
// 5 5 10
//Макрокоманда RAS
//#define RAS(x, ó) ((õ) - (ó))
#include<stdio.h>
#define RAS(x,y) ((x)-(y))
#include <stdlib.h>
int main()
{
int s,x=3,y=5;
s=RAS(x,y);
printf("Сложение 3 - 5 = %d\n", s) ;
printf("Сложение 3.4 - 3.1 = %f\n", RAS(3.4, 3.1));
printf("Сложение -100 - 1000 = %d\n", RAS(-100, 1000));
system("pause");
return 0;
}
//3-5=-2
//3.4-3.1=0.3
//
//МакрокомандаPROD произведение двух чисел
//#define PROD(x, у) ((х) * (у))
#include<stdio.h>
#define PROD(x,y) ((x)*(y))
#include <stdlib.h>
int main()
{
int s,x=3,y=5;
s=PROD(x,y);
printf("Сложение 3 - 5 = %d\n", s) ;
printf("Сложение 3.4 - 3.1 = %f\n", PROD(3.4, 3.1));
printf("Сложение -100 - 1000 = %d\n", PROD(-100, 1000));
system("pause");
return 0;
}
//3*5= 15
//3.4*3.1=10.94
//
//Макрокоманда деление
//#define DIVV(x, у) ((х) / (у))
#include<stdio.h>
#define DIVV(x,y) ((x)/(y))
#include <stdlib.h>
int main()
{
int s,x=3,y=5;
s=DIVV(x,y);
printf("Сложение 3 / 5 = %d\n", s) ;
printf("Сложение 3.4 /3.1 = %f\n", DIVV(3.4, 3.1));
printf("Сложение -100 * 1000 = %d\n", DIVV(-100, 1000));
system("pause");
return 0;
}
//3/5= 0
//3.1/3.1=1.54
//
// Макрокоманда МАХ
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define max(a,b) ((a>b)? (a):(b))
int main()
{
int i,j,ma;
i=1;
j=7;
ma=max(i,j);
printf(" max= %i i= %i j= %i \n",ma,i,j);
system("pause");
return 0;
}
//7 1 7
//Макрокоманда МАХ
//#define ÌIN(x,y) (((x)<(y)) ? (x):(y))
#include<stdio.h>
#define MIN(x,y) (((x)<(y)) ? (x):(y))
#include <stdlib.h>
int main()
{
int s,x=3,y=5;
s=MIN(x,y);
printf("Максимум 3 5 = %d\n", s) ;
system("pause");
return 0;
}
//3 5= 3
//Макрокоманда QWADR
#include<stdio.h>
#include <stdlib.h>
#define QWADR(x) x*x
int main()
{
int s,x=3,y=5;
s=QWADR(x);
printf( «Квадрат 3*3= %d\n", s) ;
system("pause");
return 0;
}
//3 *3= 9
//Макрокоманда KUBE
#include<stdio.h>
#include <stdlib.h>
#define KUBE(x) x*x*x
int main()
{
int s,x=3,y=5;
s=KUBE(x);
printf("Куб 3*3= %d\n", s) ;
system("pause");
return 0;
}
//3 *3= 27
//Макрокоманда SDVIG
#include<stdio.h>
#include <stdlib.h>
#define SDVIG(vall,n) ((n>0)?(vall<<n):(vall>>-n))
int main()
{
int s,x=3,n=1;
s=SDVIG(x,n);
printf("Сдвиг 3<< 1= %d\n", s) ;
s=SDVIG(x,-n);
printf("Сдвиг 3>> 1= %d\n", s) ;
system("pause");
return 0;
}
//3 <<1 = 6
//3>>1 =1
// Ротация на 1 бит влево
#include <stdio.h>
#include <stdlib.h>
#define ROTAZL(a) ((a&200)>>7)|(a<<1);
int main(void)
{
unsigned char a=0300;
c=RORTZL(a);
printf("a= %o \n ",c);
system ("pause");
return 0;
}
//a=300 b=0 x=200
//a=201 b=1 x=200
Домашнее задание.
Разработать алгоритм и написать программу ротации вправо на n бит.