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