Como prometi apresento este segundo exemplo mais avançado sobre Macro.
E falando ainda sobre a diretiva #define um recurso poderoso do C.
Blocos de códigos, rotinas completas e até mesmo funções podem ser encapsuladas
dentro de uma macro, como é o caso deste exemplo.
Criei algumas Macros, a macro GOT recebe uma função inteira, justamente a que cria
uma moldura na tela do dos, e na macro NPRIM criei uma rotina completa para
mostrar números primos e não primos dentro do vetor que recebe de um contador os
100 primeiros números narurais.
Observe que na macro NPRIM chamamos outras macros, inclusive a função
got_color(2, 25, 3, 79, 2, 15); com seus seis parâmetros.
Aproveite este exemplo prático, copie e guarde o código para estudo, saiba que
dificilmente você encontrará outro exemplo como este e como os outros que já
postei no blog, disponibilizado em público sem querer nada em troca.
Veja abaixo uma imagem do progtrama em execução:
Veja abaixo o código do programa:
E falando ainda sobre a diretiva #define um recurso poderoso do C.
Blocos de códigos, rotinas completas e até mesmo funções podem ser encapsuladas
dentro de uma macro, como é o caso deste exemplo.
Criei algumas Macros, a macro GOT recebe uma função inteira, justamente a que cria
uma moldura na tela do dos, e na macro NPRIM criei uma rotina completa para
mostrar números primos e não primos dentro do vetor que recebe de um contador os
100 primeiros números narurais.
Observe que na macro NPRIM chamamos outras macros, inclusive a função
got_color(2, 25, 3, 79, 2, 15); com seus seis parâmetros.
Aproveite este exemplo prático, copie e guarde o código para estudo, saiba que
dificilmente você encontrará outro exemplo como este e como os outros que já
postei no blog, disponibilizado em público sem querer nada em troca.
Veja abaixo uma imagem do progtrama em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <conio.h>
#define VERMELHO textcolor(LIGHTRED);
#define AZUL textcolor(LIGHTBLUE);
#define PRETO textcolor(BLACK);
#define ROXO textcolor(LIGHTMAGENTA);
#define CINZA textcolor(DARKGRAY);
#define got\
void got_color(int tam_lin_ini, int tam_lin_fim, int tam_ini_col,\
int tam_fim_col, int a, int b) {\
int i, e;\
if (a >= 1 && a <= 16) {\
textcolor(a);\
}\
if (b >= 1 && b <= 16) {\
textbackground(b);\
}\
for (i = tam_lin_ini; i < tam_lin_fim; i++) {\
for (e = tam_ini_col; e < tam_fim_col; e++) {\
gotoxy(e, i);\
printf(" ");\
}\
}\
}
#define NPRIM\
int i;\
got_color(2, 25, 3, 79, 2,
15);\
system("title MACROS:
MAIS AVANÇADO");\
VERMELHO\
gotoxy(32, 3);\
printf("MACROS: MAIS
AVANÇADO");\
CINZA\
gotoxy(29, 5);\
printf("Vetor de
primos e não primos");\
for( i = 1; i <= 100; i++ ){\
Vet [ j ] = i;\
j++;\
}\
gotoxy(22,7);\
for (i = 1; i < 100; i++){\
if ( i == 10){ gotoxy(17,8);}\
if ( i == 20) {gotoxy(17,9);}\
if ( i == 30){gotoxy(17,10);}\
if ( i == 40){gotoxy(17,11);}\
if ( i == 50){gotoxy(17,12);}\
if ( i == 60){gotoxy(17,13);}\
if ( i == 70){gotoxy(17,14);}\
if ( i == 80){gotoxy(17,15);}\
if ( i == 90){gotoxy(17,16);}\
for ( j = 2, primo =
0; j < Vet [ i ]; j++ )\
if ( ( Vet [ i ] % j
) == 0 )\
primo = 1;\
if ( primo ){\
AZUL\
printf(" %3d ", Vet [ i ] );\
}\
else{\
VERMELHO\
printf(" %3d ", Vet [ i ] );\
}\
}\
AZUL\
gotoxy(19,18);\
printf("Em vermelho
os números primos entre ");\
VERMELHO\
printf("1 ");\
AZUL\
printf("e ");\
VERMELHO\
printf("100");\
AZUL\
gotoxy(19,19);\
printf("Em azul os números
não primos entre ");\
VERMELHO\
printf("1 ");\
AZUL\
printf("e ");\
VERMELHO\
printf("100");\
Sleep(1800);\
VERMELHO\
gotoxy(26, 21);\
printf("Por: ");\
AZUL\
printf("Samuel
Lima");\
PRETO\
gotoxy(26, 22);\
printf("sa_sp10@hotmail.com");\
Sleep(1800);\
VERMELHO\
gotoxy(37, 24);\
printf("MUITO
OBRIGADO");
int main(){
int Vet [ 100 ];
int j = 0, primo;
NPRIM
got
getche();
}