A maior rede de estudos do Brasil

Grátis
4 pág.
alocacao_dinamica_ex2

Pré-visualização | Página 1 de 1

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void limpaBuffer(){
	setbuf(stdin, NULL);
}
typedef struct {
	int dia, mes, ano;	
}data;
typedef struct{
	int cod;
	data data;
	char nome[30];
	char descricao[200];
	float nota;
}eventos;
typedef struct{
	int contador;
	int tamanho;
	eventos *EVENTOS;
}NOVO_VETOR;
NOVO_VETOR v1;
void inicializa (NOVO_VETOR *v, int quantidade){ 
 v->contador=0;
 v->tamanho=quantidade;
 v->EVENTOS = (eventos *) malloc (quantidade * sizeof(eventos));
}
void insere_dados (NOVO_VETOR *x ){
 if(x->contador < x->tamanho){
 		printf("insere dados contador ==> %d\n", x->contador);
 		printf("insere dados tamanho ==> %d\n", x->tamanho);
		printf("Codigo\n");
 		scanf("%d",&x->EVENTOS[ x-> contador ].cod );
		printf("Dia Evento\n");
		scanf("%d",&x->EVENTOS[ x-> contador ].data.dia );
 		printf("Mes Evento\n");
		scanf("%d",&x->EVENTOS[ x-> contador ].data.mes );
 		printf("Ano Evento\n");
		scanf("%d",&x->EVENTOS[ x-> contador ].data.ano );
 		printf("De um Nome para o Evento\n");
 		limpaBuffer();
		gets(x->EVENTOS[ x-> contador ].nome);
		printf("Qual Descricao do Evento\n");
 		limpaBuffer();
		gets(x->EVENTOS[ x-> contador ].descricao);
		printf("Qual Nota\n");
		scanf("%f",&x->EVENTOS[ x-> contador ].nota);
		x->contador = x->contador+1;
 }else{
 		printf("\n\n\t\tErro: Nao posso inserir aluno, capacidade estourada");
 }
}
void mostra (NOVO_VETOR K){
	int x;
	for ( x=0; x < K.contador; x++)
	printf("|%d|Nome= %s|Desc= %s|Dia= %d|Mes= %d|Ano= %d|Nota=%.2f\n", K.EVENTOS[x].cod, K.EVENTOS[x].nome, K.EVENTOS[x].descricao,K.EVENTOS[x].data.dia,K.EVENTOS[x].data.mes,K.EVENTOS[x].data.ano,K.EVENTOS[x].nota);
}
int pesquisa (NOVO_VETOR X, int codigo){
	int x;
	for (x=0; x<X.contador; x++){
		if( (codigo == X.EVENTOS[x].cod) ) {
			return x;
		}
	}
	return -1;
}
void mostra_elemento( NOVO_VETOR K, int x){
	if (x == -1){
		printf("Elemento nao existe");
		return;
	}
	if (x < K.contador){
		printf("|%d|Nome= %s|Desc= %s|Dia= %d|Mes= %d|Ano= %d|Nota=%.2f\n", K.EVENTOS[x].cod, K.EVENTOS[x].nome, K.EVENTOS[x].descricao,K.EVENTOS[x].data.dia,K.EVENTOS[x].data.mes,K.EVENTOS[x].data.ano,K.EVENTOS[x].nota);
	}else{
		printf("Tentando acessar posicao invalida");
	}
}
void gravarArquivo( NOVO_VETOR *K){
FILE *banco02_07_14;
banco02_07_14 = fopen("banco02_07_14.dat","wb+");
fwrite(&K, sizeof(K), 1, banco02_07_14);
fclose(banco02_07_14);
}
void menu(){
	int menu;
	int elementos;
	int pesq;
	int posicao;	
	do{
			printf ("Escolha uma opcao no Menu: \n\n");
 printf ("\t 1 - Cadastro \n");
 printf ("\t 2 - Exibir Tudo \n");
 printf ("\t 3 - Pesquisar UM \n");
 printf ("\t 4 - Ordenar por Data \n");
				printf ("\t 5 - Gravar Arquivo \n");
				printf ("\t 0 - Sair \n");
 printf("\nOpcao: ");
 scanf ("%d",&menu);
 switch (menu){
 case 1:
							system("cls || clear");	
							printf(" \t\t\t\tCadastro\n\n");
							insere_dados(&v1);
							printf("\n\n");
							system("pause");
							system("cls || clear");
							break;
					case 2:
							system("cls || clear");
							printf(" \t\t\t\tExibir Tudo\n\n");
							mostra(v1);
							printf("\n\n");
							system("pause");
							system("cls || clear");
							break;
					case 3:
							system("cls || clear");
							printf(" \t\t\t\tPesquisar UM\n\n");
							printf("Digite um codigo para Pesquisar: ");
							scanf("%d", &pesq);
							posicao = pesquisa(v1,pesq);
							mostra_elemento(v1, posicao );
							printf("\n\n");
							system("pause");
							system("cls || clear");
							break;
					case 4:
							system("cls || clear");
							printf(" \t\t\t\tOrdenar por Data\n\n");
							printf("\n\n");
							system("pause");
							system("cls || clear");
							break;		
					case 5:
							system("cls || clear");
							printf(" \t\t\t\tGravar Arquivo\n\n");
							gravarArquivo(&v1);
							printf("\n\n");
							system("pause");
							system("cls || clear");
							break;		
					case 0:
 return(0);
 break;
 default :
 printf("\t\tA opcao escolhida nao existe no Menu ... \n \n");
 system("pause");
 system("cls || clear");
 break;
				}
		}while(menu);
}
main(){
int i=0, posicao, el;
v1;
printf("Quantos elementos deseja Reservar para os Eventos?\n");
scanf("%d",&el);
inicializa(&v1,el);
system("cls || clear");
menu();
}