I'm having a problem passing a vector of structs
to a function that checks whether an integer code entered by the user has already been used.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define TAM 10000
struct bebida
{
char nome[30];
float teor_alcoolico;
float valor_unitario;
};
struct cadastro
{
int codigo;
char nome[60];
char local[60];
int data;
int quantidade_de_ingressos;
float valor_da_entrada;
float custo_da_ornanizacao;
struct bebida pinga;
};
int i, j;
int busca(int *evento, int valor, int tamanho) //FUNCAO VERIFICA SE O CODIGO ESTA NO VETOR
{
int igual = 0;
for (i = 0; i < tamanho; i++)
{
if (*evento[i].codigo == valor)
{
igual++; //SE IGUAL FOR ZERO QUER DIZER QUE NAO ESTA NO VETOR
}
}
return igual;
}
void menu()
{
printf("=========MENU=======\n");
printf("Entre com: \n");
printf("(1) Cadastrar evento\n");
printf("(2) Pesquisar evento\n");
printf("(3) Ingressos vendidos\n");
printf("(4) Exibir resultado por evento\n");
printf("(5) Exibir resultado geral\n");
printf("(6) Sair\n");
printf("===========================\n\n");
}
int main(void)
{
setlocale(LC_ALL, "Portuguese");
int opcao, indicador, digitos, contem;
int tamanho;
struct cadastro evento[1000];
for (i = 0; i < 999; i++)
{
evento[i].codigo = 0; //INICIAR COM 0(ZERO) PRA NAO FAZER COMPARACAO COM LIXO E SE O CODIGO FOR 0 VAI SAIR
}
menu();
scanf("%d", &opcao);
switch (opcao)
{
case 1: //CADASTRAR EVENTO
{
tamanho = 1;
for (i = 0; i < TAM; i++)
{
tamanho++;
printf("Entre com o código de cadastro\n");
scanf("%d", &digitos);
if (digitos == 0)
{
break;
}
else
{
do
{
contem = busca(&evento[i].codigo, digitos, tamanho);
if (contem == 0)
{
evento[i].codigo = digitos;
}
else if (contem != 0)
{
printf("Código já cadastrado por favor insira novamente o codigo para cadastro\n");
scanf("%d", &digitos);
}
} while (contem != 0);
}
}
}
}
return 0;
}