Ir ao conteúdo

Posts recomendados

Postado

Preciso fazer um trabalho, o qual é uma lista que tem que listar pacientes que chegaram e remover os que sairam. acho q ta funcionando normal, mas na hora de exibir os nomes ele so mostra numeros. alguem ajuda? 
nao sei se é erro na hora de armazenar os dados ou so exibir. ou os 2

 

#include <iostream>
using namespace std;

struct t_fila {
    int dado;
    struct t_fila *prox;
};

void Enfileirar(struct t_fila *, char);
int Desenfileirar(struct t_fila *);
int Vazia(struct t_fila *);
void Exibir(struct t_fila *);

int main(void)
{
    char opcao, pausa, nome;
    struct t_fila minha_fila;
    minha_fila.prox = NULL;

    do
    {
        system("cls");
        cout << "=========================================" << endl;
        cout << "||----Controle de atendimento Medico---||" << endl;
        cout << "=========================================" << endl;
        cout << " 1 - Listar paciente" << endl;
        cout << " 2 - Confirmar atendimento de cliente" << endl;
        cout << " 3 - Exibir lista de pacientes" << endl;
        cout << " 0 - Sair" << endl;
        cout << "=========================================" << endl;
        cout << "Escolha uma opcao: ";
        cin >> opcao;
        system("cls");
        switch (opcao)
        {
        case '1':
            cout << "Digite o nome do paciente: ";
            cin >> nome;
            Enfileirar(&minha_fila, nome);
            break;
        case '2':
            if (Vazia(&minha_fila))
                cout << "Fila vazia!" << endl;
            else
            {
                nome = Desenfileirar(&minha_fila);
                cout << nome << endl;
                cout << "desenfileirado!" << endl;
            }
            break;
        case '3':
            if (Vazia(&minha_fila))
                cout << "Fila vazia!" << endl;
            else
                Exibir(&minha_fila);
            break;
        }
        cout << "Digite 1 e tecle <Enter> para voltar as opções!";
        cin >> pausa;
    } while (opcao != '0');
    return 0;
}

void Enfileirar(struct t_fila *ptr_fila, char nome)
{
    struct t_fila *novo, *elemento;
    novo = new t_fila;
    //Verificar se a fila esta cheia.
    if (novo == NULL)
        cout << "Fila cheia!";
    else
    {
        if (ptr_fila->prox == NULL)
        {
            novo->dado = nome;
            novo->prox = NULL;
            ptr_fila->prox = novo;
        }
        else
        {
            novo->dado = nome;
            novo->prox = NULL;
            elemento = ptr_fila;
            while(elemento->prox != NULL)
                elemento = elemento->prox;
            elemento->prox = novo;
        }
        cout << "Enfileirado!" << endl;
    }
}

void Exibir(struct t_fila *ptr_fila)
{
    struct t_fila *elemento;
    elemento = ptr_fila->prox;
    while (elemento != NULL)
    {
        cout << elemento->dado << endl;
        elemento = elemento->prox;
    }
    cout << "-----------------" << endl;
}

int Desenfileirar(struct t_fila *ptr_fila)
{
    struct t_fila *elemento;
    char nome;
    elemento = ptr_fila->prox;
    nome = elemento->dado;
    ptr_fila->prox = elemento->prox;
    delete elemento;
    return nome;
}

int Vazia(struct t_fila *ptr_fila)
{
    if (ptr_fila->prox == NULL)
        return 1;
    else
        return 0;
}

 

  • Curtir 1
Postado
struct t_fila {
    int dado;
    struct t_fila *prox;
};

 

Essa não é uma maneira adequada de escrever essas coisas. De todo modo note que não tem nome na lista e assim não é surpresa que não apareçam os nomes...

 

Entenda que uma lista não é um nó. Um nó não é uma lista. Um nó não são os dados. Os dados não são um nó. Se você misturar tudo (como fez) só vai trabalhar mais e ter menos resultado.

 

Uma lista tem nós. Os nós indicam um dado. Um registro de dado tem um campo que identifica um registro em rela;cão a outro, dito chae. No seu caso provavelmente o nome...

 

E uma lista com ponteiros para um lado só é muito mais difícil de programar do que a lista que tem ponteiros para os dois lados. Ilusão o lance de chamar de "simplesmente" encadeada por exemplo.

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!