Foto de Renan O.
Renan há 2 anos
Enviada pelo
Site

Duvida sobre adicionar hora e usuario a fila

Consegui desenvolver uma lista que possui uma lista que pode ser adicionada um limite, como em um atendimento.

estou tentando adicionar usuario , hora e data como se fosse um relogio de ponto, estou a uns 3 dias sem conseguir adicionar, usuario não grava e não consigo adicionar a hora a partir de um struct.

Poderiam me ajudar?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

typedef struct nome{
 
 char *nome; 
 
}
struct Fila {

 int capacidade;
 float *dados;
 int primeiro;
 int ultimo;
 int nItens; 
 char nome;
 
}

void criarFila( struct Fila *f, int c) { 

 f->capacidade = c;
 f->nome;
 f->dados = (float*) malloc (f->capacidade * sizeof(float));
 f->primeiro = 0;
 f->ultimo = -1;
 f->nItens = 0; 

}

void inserir(struct Fila *f, int v) {

 if(f->ultimo == f->capacidade-1)
  f->ultimo = -1;
 f->nome++;
 f->ultimo++;
 f->dados[f->ultimo] = v; // incrementa ultimo e insere
 f->nItens++; // mais um item inserido

}

int remover( struct Fila *f ) { // pega o item do começo da fila

 int temp = f->dados[f->primeiro++]; // pega o valor e incrementa o primeiro

 if(f->primeiro == f->capacidade)
  f->primeiro = 0;

 f->nItens--;  // um item retirado
 return temp;

}

int estaVazia( struct Fila *f ) { // retorna verdadeiro se a fila está vazia

 return (f->nItens==0);

}

int estaCheia( struct Fila *f ) { // retorna verdadeiro se a fila está cheia

 return (f->nItens == f->capacidade);
}

void mostrarFila(struct Fila *f){

 int cont, i;

 for ( cont=0, i= f->primeiro; cont < f->nItens; cont++){

  printf("%.2f\t",f->dados[i++]);

  if (i == f->capacidade)
   i=0;

 }
 printf("\n\n");

}

void main (void) {

 int opcao, capa;
 float valor;
 struct Fila umaFila;
 char nome;

 // cria a fila
 printf("\nCapacidade da fila? ");
 scanf("%d",&capa);
 printf("\nInsira o nome ");
 scanf("%s", &nome);
 
 if ((sequência = (fila *) malloc (sizeof (fila))) == NULL)           
 return -1;         
 if ((nome = (char *) malloc (50 * sizeof (char))) == NULL)           
 return -1; 
 criarFila(&umaFila, capa, &nome);

 // apresenta menu
 while( 1 ){

  printf("\n1 - Inserir elemento\n2 - Remover elemento\n3 - Mostrar Fila\n0 - Sair\n\nOpcao? ");
  scanf("%d", &opcao);

  switch(opcao){

   case 0: exit(0);

   case 1: // insere elemento
    if (estaCheia(&umaFila)){

     printf("\nFila Cheia!!!\n\n");

    }
    else {

     printf("\nValor do elemento a ser inserido? ");
     scanf("%f", &valor);
     inserir(&umaFila,valor);

    }

    break;

   case 2: // remove elemento
    if (estaVazia(&umaFila)){

     printf("\nFila vazia!!!\n\n");

    }
    else {

     valor = remover(&umaFila);
     printf("\n%1f removido com sucesso\n\n", valor) ; 

    }
    break;

    case 3: // mostrar fila
     if (estaVazia(&umaFila)){

      printf("\nFila vazia!!!\n\n");

     }
     else {

      printf("\nConteudo da fila => ");
      mostrarFila(&umaFila);

     }
     break;

    default:
     printf("\nOpcao Invalida\n\n");

  }
 }
}

Professor César D.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 anos
Contatar César Augusto

Você não parece estar fazendo uma fila de uma estrutura suporta esses dados (usuario, hora e data). Crie primeiro uma estrutura adequada, por exemplo:

typedef struct Atendimento{

    char usuario[64];

    int hora;

    int data;

} Atendimento;

Aqui, coloquei hora e data como inteiro, mas você pode criar um struct especializado para esse tipo de dado também.

Depois, faça a fila com um vetor dessa estrutura:

typedef struct Fila{

    int capacidade;

    struct Atendimento *vetor;

    int primeiro;

    int ultimo;

    int tamanho;

} Fila;

Observação, se você quiser dar um nome para a fila, use um vetor de char, não um char sozinho como você tem feito. Faça assim, por exemplo:

char nome[100];

Esse mesmo erro você cometeu na sua função main().

 

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Envie uma dúvida grátis
Resposta na hora da Minerva IA e de professores particulares
Enviar dúvida
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Precisa de outra solução? Conheça
Aulas particulares Encontre um professor para combinar e agendar aulas particulares Buscar professor