sexta-feira, 30 de janeiro de 2015

Struct - copiando e passando valores de endereço

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();
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.