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");

  }
 }
}

Linguagem C Structs Geral Listas Encadeadas
1 resposta
Professor César D.
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
Tutoria com IA
Converse com a Minerva IA e aprenda, tire dúvidas e resolva exercícios
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Prefere professores para aulas particulares ou resolução de atividades?
Aulas particulares
Encontre um professor para combinar e agendar aulas particulares Buscar professor
Tarefas
Envie sua atividade, anexe os arquivos e receba ofertas dos professores Enviar tarefa