Em linguagem C somos obrigados a usar apontadores para passagem
de parâmetros por valor.Neste exemplo,
Os valores que estão guardados no endereço da estrutura
são copiados e passados por parâmetros para função.
A função Vetor_struct ( Imp_Par *a ); recebe as cópias dos valores
que foram declarados no vetor de struct e imprime com printf();
Já a função Epar_Impar ( Imp_Par *a ); está encarregada de separar
os números ímpares dos pares, porque também recebe uma cópia fiel
dos mesmos valores do vetor de struct.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <conio.h>
#define TAM 9
void Janela5(){
int lin, col;textattr ( 3 );
for ( lin = 0; lin <= 25; lin++ ){
for ( col = 0; col <= 80; col++ ){
gotoxy( col, lin );
if ( lin == 2 ){textattr ( 3 );printf( " ");}
if ( col == 1 ){textattr ( 3 );printf(" ");}
if ( col == 80 ){textattr ( 3 );printf(" ");}
}
}
}
int continuando ( ){
system ("title STRUCT - COPIANDO E PASSANDO VALORES DE ENDEREÇO");
int nr; do{system("cls");system("Color 40");Janela5();
textcolor(LIGHTRED);gotoxy(20,3);printf("STRUCT - COPIANDO E PASSANDO VALORES DE ENDEREÇO");
textcolor(BROWN);gotoxy(25,7);printf("Programa desenvolvido por:");
textcolor(WHITE);gotoxy(52,7);printf("Samuel Lima");
textcolor(BLUE);gotoxy(34,9);printf("sa_sp10@hotmail.com");
textcolor(LIGHTBLUE);gotoxy(23,11);printf ("Digite ");
textcolor(LIGHTRED);printf (" 0 ");
textcolor(LIGHTBLUE);printf (" para sair ou ");
textcolor(LIGHTRED);printf (" 1 ");
textcolor(LIGHTBLUE);printf (" para continuar ");
textcolor(LIGHTRED);gotoxy(24,13);
scanf ( "%d", &nr );fflush(stdin);
if( nr == 0 ){
textcolor(LIGHTRED);gotoxy(36,18);printf("MUITO OBRIGADO");
getche();exit(0);
}
else if( nr == 1 ){
return 1;
}
textcolor(YELLOW);gotoxy(36,16);printf ("\aopcão errada!");
getche();
}while ( 1 );
return 1;
}
typedef struct {
int imp_par [ 9 ];
}Imp_Par;
int Vetor_struct ( Imp_Par *a ){
int i;system("cls");system("Color 80");Janela5();
textcolor(LIGHTRED);gotoxy(20,3);printf("STRUCT - COPIANDO E PASSAND0 VALORES DE ENDEREÇO");
textcolor(LIGHTBLUE);gotoxy(28,5);printf("Imprimindo o vetor de struct");
gotoxy(28,7);textcolor(LIGHTRED);
for ( i = 0; i < 9; i++ ){
printf(" %d ", a -> imp_par [ i ] );
}
getche();
return (0);
}
int Epar_Impar ( Imp_Par *a ){
int i;i = 0;
textcolor(LIGHTBLUE);gotoxy(29,9);printf("Definindo pares e ímpares ");
for (i = 1; i <= 9; i++){
gotoxy( 37, i + 11 );
if ( i % 2 == 1 ){
textcolor(LIGHTRED); printf(" %d ", i );
textcolor(LIGHTBLUE);printf("é ímpar ");
}
else{
textcolor(LIGHTRED); printf(" %d ", i );
textcolor(LIGHTBLUE);printf("é par ");
}
}
return 0;
}
int main(){
int i, k;
Imp_Par a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
continuando ( );
i = Vetor_struct ( &a );
k = Epar_Impar ( &a );
Sleep(1000);
textcolor(YELLOW);gotoxy(35,23);
printf("MUITO OBRIGADO");
getche();
}
de parâmetros por valor.Neste exemplo,
Os valores que estão guardados no endereço da estrutura
são copiados e passados por parâmetros para função.
A função Vetor_struct ( Imp_Par *a ); recebe as cópias dos valores
que foram declarados no vetor de struct e imprime com printf();
Já a função Epar_Impar ( Imp_Par *a ); está encarregada de separar
os números ímpares dos pares, porque também recebe uma cópia fiel
dos mesmos valores do vetor de struct.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <conio.h>
#define TAM 9
void Janela5(){
int lin, col;textattr ( 3 );
for ( lin = 0; lin <= 25; lin++ ){
for ( col = 0; col <= 80; col++ ){
gotoxy( col, lin );
if ( lin == 2 ){textattr ( 3 );printf( " ");}
if ( col == 1 ){textattr ( 3 );printf(" ");}
if ( col == 80 ){textattr ( 3 );printf(" ");}
}
}
}
int continuando ( ){
system ("title STRUCT - COPIANDO E PASSANDO VALORES DE ENDEREÇO");
int nr; do{system("cls");system("Color 40");Janela5();
textcolor(LIGHTRED);gotoxy(20,3);printf("STRUCT - COPIANDO E PASSANDO VALORES DE ENDEREÇO");
textcolor(BROWN);gotoxy(25,7);printf("Programa desenvolvido por:");
textcolor(WHITE);gotoxy(52,7);printf("Samuel Lima");
textcolor(BLUE);gotoxy(34,9);printf("sa_sp10@hotmail.com");
textcolor(LIGHTBLUE);gotoxy(23,11);printf ("Digite ");
textcolor(LIGHTRED);printf (" 0 ");
textcolor(LIGHTBLUE);printf (" para sair ou ");
textcolor(LIGHTRED);printf (" 1 ");
textcolor(LIGHTBLUE);printf (" para continuar ");
textcolor(LIGHTRED);gotoxy(24,13);
scanf ( "%d", &nr );fflush(stdin);
if( nr == 0 ){
textcolor(LIGHTRED);gotoxy(36,18);printf("MUITO OBRIGADO");
getche();exit(0);
}
else if( nr == 1 ){
return 1;
}
textcolor(YELLOW);gotoxy(36,16);printf ("\aopcão errada!");
getche();
}while ( 1 );
return 1;
}
typedef struct {
int imp_par [ 9 ];
}Imp_Par;
int Vetor_struct ( Imp_Par *a ){
int i;system("cls");system("Color 80");Janela5();
textcolor(LIGHTRED);gotoxy(20,3);printf("STRUCT - COPIANDO E PASSAND0 VALORES DE ENDEREÇO");
textcolor(LIGHTBLUE);gotoxy(28,5);printf("Imprimindo o vetor de struct");
gotoxy(28,7);textcolor(LIGHTRED);
for ( i = 0; i < 9; i++ ){
printf(" %d ", a -> imp_par [ i ] );
}
getche();
return (0);
}
int Epar_Impar ( Imp_Par *a ){
int i;i = 0;
textcolor(LIGHTBLUE);gotoxy(29,9);printf("Definindo pares e ímpares ");
for (i = 1; i <= 9; i++){
gotoxy( 37, i + 11 );
if ( i % 2 == 1 ){
textcolor(LIGHTRED); printf(" %d ", i );
textcolor(LIGHTBLUE);printf("é ímpar ");
}
else{
textcolor(LIGHTRED); printf(" %d ", i );
textcolor(LIGHTBLUE);printf("é par ");
}
}
return 0;
}
int main(){
int i, k;
Imp_Par a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
continuando ( );
i = Vetor_struct ( &a );
k = Epar_Impar ( &a );
Sleep(1000);
textcolor(YELLOW);gotoxy(35,23);
printf("MUITO OBRIGADO");
getche();
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.