terça-feira, 12 de novembro de 2013

Vetores de Estruturas

Entende-se por Vetores de estruturas, aqueles onde os índices apontam para dados do
tipo struct.Podemos acessar facilmente colocando - se os mesmos índices entre colchetes, seguido pelo nome do vetor, e em seguida pelo 0perador ponto e o nome do campo da estrutura.
Este código apresenta um vetor de struct bem organizado e que interage com o usuário que opera o programa.Na verdade este código é um resumo de um programa completo que postei há alguns dias atrás, e a finalidade é mostrar como é fácil criar um vetor de struct com clareza e sem deixar dúvidas;
Como o tempo tá curto, vou postá-lo assim, más depois dou umas ajustadas;

Eis uma imagem do programa abaixo:



Eis o código abaixo:

 #include <stdio.h>
#include <conio.h>
void Janela5(){
    int lin, col;
    col = 0;
    for ( lin = 0; lin <= 25; lin++ ){
        for ( col = 0; col <= 80; col++ ){
            gotoxy( col, lin );textbackground( WHITE );
            if ( lin == 2 ){textbackground(LIGHTBLUE);printf( " ");}
            if ( col == 1 ){textbackground(LIGHTBLUE);printf(" ");}
            if ( lin == 25 ){textbackground(LIGHTBLUE);}
            if ( col == 80 ){textbackground(LIGHTBLUE);printf(" ");}
        }
    }textbackground( BLACK );
}
struct estructura_Vetor {
    int Num;
    int cod;
}
Vet [8];int i, codigo;void Menu_Vetor();
void Insere (){
    do{
        system("cls");Janela5();textbackground( BLACK );
        textcolor(LIGHTRED);gotoxy(25,3);printf("INSERINDO E APAGANDO NUMEROS EM VETOR");
        textcolor(LIGHTGRAY);gotoxy(35,5);printf("Inserindo Numeros");
        textcolor(YELLOW);gotoxy(26,7); printf("Informe uma posicao [ Entre 1 e 7 ]" );
        textcolor(LIGHTRED);gotoxy(50,9);scanf ( "%d",&codigo );fflush ( stdin );
        if ( codigo < 1 || codigo > 7 ){
            textcolor(LIGHTBLUE);gotoxy(33,9); printf("\aPosicao Inexistente !");
            getche();system("cls");
        }
        else{
            if( Vet [ codigo ].cod != '\0' ){
                textcolor(LIGHTBLUE);gotoxy(35,9); printf("\aPosicao em uso !");
                getche();Menu_Vetor();system("cls");
            }
        }
    }while ( codigo < 1 || codigo > 7 );
    Vet [ codigo ].cod = codigo;
    textcolor(LIGHTCYAN);gotoxy(26,9);printf( "Digite um Numero para a posicao ");
    textcolor(LIGHTRED);gotoxy(60,9);printf( " %d ", codigo);
    textcolor(LIGHTGRAY);gotoxy(30,11);printf( "Numero: " );
    textcolor(LIGHTRED);scanf ( "%i", &Vet [ codigo ].Num );fflush ( stdin );
    textcolor(YELLOW);gotoxy(30,13);printf("Posicao preenchida com sucesso");getche();Menu_Vetor();
}
void Lista (){
    system ("cls");
    do{
        Janela5();textcolor(LIGHTRED);gotoxy(25,3);printf("INSERINDO E APAGANDO NUMEROS EM VETOR");
        textcolor(LIGHTGRAY);gotoxy(30,5);printf("Exibindo Posicoes do Vetor");
        textcolor(YELLOW);gotoxy(27,7); printf("Informe uma posicao [ Entre 1 e 7 ]" );
        textcolor(LIGHTRED);gotoxy(64,7);scanf ( "%d",&codigo );fflush ( stdin );
        if ( codigo < 1 || codigo > 7 ){
            textcolor(LIGHTBLUE);gotoxy(35,9); printf("\aPosicao Inexistente !");
            getche();system("cls");
        }
    }while ( codigo < 1 || codigo > 7 );

    if( Vet [ codigo ].cod != '\0' ){}
    else{
        textcolor(LIGHTBLUE);gotoxy(29,9); printf("\aPosicao vazia !");
        getche();Menu_Vetor();
        system("cls");Janela5();
    }
    if ( Vet [codigo].cod != '\0' ){
        system("cls");Janela5();
        textcolor(LIGHTRED);gotoxy(25,3);printf("INSERINDO E APAGANDO NUMEROS EM VETOR");
        textcolor(LIGHTGRAY);gotoxy(30,5); printf("Exibindo Posicoes do Vetor" );
        textcolor(YELLOW);gotoxy(30,7);printf( "Posicao do Vetor");
        textcolor(LIGHTRED);gotoxy(48,7);printf( " %d ", codigo);
        textcolor(LIGHTCYAN);gotoxy(30,9);printf( "Numeros: " );
        textcolor(LIGHTRED);gotoxy(40,9);printf( " %i ", Vet [ codigo ].Num );
        textbackground(BLACK); textcolor(DARKGRAY);
        getche ();Menu_Vetor();
    }
}
void Remove (){
    system ("cls");int conf;Janela5();
    do{
        textcolor(LIGHTRED);gotoxy(25,3);printf("INSERINDO E APAGANDO NUMEROS EM VETOR");
        textcolor(LIGHTGRAY);gotoxy(22,5);printf("Apagando um Numero de uma posicao do Vetor");
        textcolor(YELLOW);gotoxy(27,7); printf("Informe uma posicao [ Entre 1 e 7 ]" );
        textcolor(LIGHTRED);gotoxy(40,9);scanf ( "%d",&codigo );fflush ( stdin );
        if ( codigo < 1 || codigo > 7 ){
            textcolor(LIGHTBLUE);gotoxy(35,9); printf("\aPosicao Inexistente !");
            getche();system("cls");Remove ();
        }
        if( Vet [ codigo ].cod != '\0' ){}
        else{
            textcolor(LIGHTBLUE);gotoxy(29,9); printf("\aPosicao vazia !");
            getche();
            system("cls");Menu_Vetor();
        }
    }while ( codigo < 1 || codigo > 7 );
    if ( Vet [codigo].cod != '\0' ){
        system("cls");Janela5();
        textcolor(LIGHTRED);gotoxy(25,3);printf("INSERINDO E APAGANDO NUMEROS EM VETOR");
        textcolor(LIGHTGRAY);gotoxy(25,5); printf("Apagando um Numero de uma posicao do Vetor" );
        textcolor(YELLOW);gotoxy(25,7);printf( "Posicao do Vetor");
        textcolor(LIGHTRED);gotoxy(46,7);printf( " %d ", codigo);
        textcolor(LIGHTCYAN);gotoxy(25,9);printf( "Numeros:  " );
        textcolor(LIGHTRED);gotoxy(35,9);printf( " %i ", Vet [ codigo ].Num );
        textbackground(BLACK); textcolor(DARKGRAY);
        getche ();
        do{
            textcolor(LIGHTBLUE);gotoxy(17,13);printf("Deseja Apagar o Numero ? [ 1 Para Sim 2 Para Nao ]");
            textcolor(LIGHTRED);gotoxy(40,15);
            scanf ( "%d",&conf );fflush ( stdin );
            if ( conf == 1 ){
                Vet [ codigo ].cod = '\0';

                textcolor(YELLOW);gotoxy(25,15); printf("\a Numero Apagado com sucesso!");
                getche();system("cls");Menu_Vetor();
            }
            if ( conf == 2 ){
                textcolor(YELLOW); gotoxy(29,15); printf("Voce desistiu de Apagar o Numero!");
                getche();system("cls");Menu_Vetor();
            }
            else { textcolor(GREEN);gotoxy(38,17);printf ("\aOPCAO ERRADA");Sleep(1800); gotoxy(38,19);printf ("             ");}
        }while (1);
    }
}
#define MaxNo_Menu 4
void Menu_Vetor(){
    system("title INSERINDO E APAGANDO NUMEROS EM VETOR");
    system("cls");Janela5();
    textcolor(LIGHTRED);gotoxy(25,3); printf("INSERINDO E APAGANDO NUMEROS EM VETOR");
    textcolor(YELLOW);gotoxy(24,5);printf("Programa Desenvolvido Por:");
    textcolor(LIGHTCYAN);gotoxy(51,5);printf("Samuel Lima");
    textcolor(LIGHTGREEN);gotoxy(35,7);printf("sa_sp10@hotmail.com");
    textcolor(LIGHTBLUE);gotoxy(33,9); printf("Escolha uma opcao abaixo");
    char *menu_list [ MaxNo_Menu ] = { "INSERIR NUMEROS",
            "EXIBIR NUMEROS",
            "REMOVE NUMEROS",
            "SAIR" };
    int i,
    xpos = 10,
    ypos [ MaxNo_Menu ] = { 13, 15, 17, 19 };
    for ( i = 0; i < MaxNo_Menu; ++i ){
        gotoxy (xpos, ypos [i] );
        textattr(12);
        printf("%s",menu_list [i] );
    }
    i = 0;
    while (1) {
        gotoxy( xpos, ypos [i] );
        textattr(16 );
        printf("%s",menu_list [i] );
        switch ( _getch () ){
        case 72: if ( i > 0 ) {
            gotoxy( xpos, ypos [i] );
            textattr(14);
            printf("%s", menu_list [i]);
            --i;
        }
        break;
        case 80: if ( i <  MaxNo_Menu -1 ){
            gotoxy( xpos, ypos [i] );
            textattr(14);
            printf("%s", menu_list [i]);
            ++i;
        }
        break;
        case 13:
            if ( i == 0 ) {  system("cls"); Insere (); }
            if ( i == 1 ) {  system("cls"); Lista (); }
            if ( i == 2 ) {  system("cls"); Remove (); }
            if ( i == 3 ) {  system("cls"); exit(0);} break;
        }
    }
}
int main(){
    textbackground( BLACK );for(i = 1; i <= 7; i++){
        Vet [ i ].cod = '\0';
        Vet [ i ].Num = '\0';
    }
    Menu_Vetor();
    getche();
}

Nenhum comentário:

Postar um comentário

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