Duvida sobre adicionar hora e usuario a fila

C Structs Desenvolvimento de Projetos Listas Encadeadas Gerenciamento de memória

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

  }
 }
}

Foto de Renan O.
Renan perguntou há 1 ano

Sabe a resposta?

Ganhe 10 pts por resposta de qualidade
Responder dúvida
1 resposta
0
votos
Nenhum usuário votou nessa resposta como útil.
Professor César D.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 ano

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().

 

Envie uma dúvida gratuitamente

Envie sua primeira dúvida gratuitamente aqui no Tira-dúvidas Profes. Nossos professores particulares estão aqui para te ajudar.

Professores particulares de C

+ Ver todos
Encontre professor particular para te ajudar nos estudos
R$ 60 / h
César D.
Mogi Guaçu / SP
César D.
4,9 (811 avaliações)
Horas de aulas particulares ministradas 87 horas de aula
Tarefas resolvidas 995 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
C - matriz Programação em C Intermediário Estrutura de dados em C
Graduação: Matemática Aplicada e Computacional (Universidade Estadual de Campinas (UNICAMP))
Faça aulas de matemática, computação e programação em c, c++, java e python.
R$ 75 / h
Danilo L.
Campina Grande / PB
Danilo L.
4,9 (18 avaliações)
Horas de aulas particulares ministradas 27 horas de aula
Tarefas resolvidas 1 tarefa resolvida
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
C - matriz C - Ponteiros C - struct
Graduação: Engenharia da Computação (IFPB - Campus Campina Grande )
Desenvolvedor web full stack. Acompanhamento particular em excel/vba, python, c/c++, java, selenium e js!
Envie uma tarefa, lista de exercícios, atividade ou projeto
  • Você define o prazo
  • Professores fazem propostas e você escolhe o melhor
  • Interação com o professor por chat
  • Se não gostar da resolução, reembolsamos
Enviar Tarefa

Envie uma dúvida gratuitamente

Envie sua primeira dúvida gratuitamente aqui no Tira-dúvidas Profes. Nossos professores particulares estão aqui para te ajudar.

Encontre um professor e combine aulas particulares Presenciais ou Online