Structs vector for function

Asked

Viewed 442 times

0

I’m having a problem passing a vector of structs for a function that checks whether an entire 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;
}
  • I’m having a problem passing a struct array to a function that checks if an integer code entered by the user has already been used. someone could help me?

1 answer

1


Modify the signature of your function to receive a vector of structures:

int busca(struct cadastro evento[], int valor, int tamanho)

Then modify the call of this function so that a vector of structures is passed to it:

contem = busca(evento, digitos, tamanho);
  • Man thank you very much!!!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.