Jump to content

Cópia de informação de nó para nó


PCaseiro
 Share

Recommended Posts

Boas malta, tenho uma lista ligada em que cada nó tem o nome, bi data e hora de admissao de um doente, e o que quero fazer é atribuir a cada doente da lista uma cor e coloca-lo numa lista ligada conforme a cor atribuida.

typedef struct infor{
int dia,mes,ano,hora,minutos;
char *bi;
char nome[MAX];
}Infor;

typedef struct pnode *paciente;
typedef struct pnode{
Infor *informacao;
paciente next;
}pnode;

typedef struct cnode *consulta;
/*pergunta ao prof se esta e preciso e se nao basta pelo bi ir buscar a informacao a lista de triagem onde esta a informacao do doente */
typedef struct cnode{

char * pulseira;
Infor *informacao;
consulta next;
/*char nome[MAX];
Data *info_data;
paciente next;*/
}cnode;

consulta cria_lista_consulta(){
consulta lista;
lista=(consulta)malloc(sizeof(cnode));
if(lista!=NULL){
    lista->next=NULL;
}
return lista;
}
void imprime_lista_consulta(consulta lista){
consulta l = lista->next; /* Salta o header */
while (l){
    printf("Paciente: %s BI: %s\n Pulseira: %s",l->informacao->nome,l->informacao->bi, l->pulseira);
    printf("Data: %d/%d/%d \t Horas: %.2d:%.2d", l->informacao->dia,l->informacao->mes,l->informacao->ano,l->informacao->hora,l->informacao->minutos);
    printf("\n");
    printf("\n");
    printf("\n");
    l=l->next;
}
}
void atribuir_pulseira(paciente triagem, consulta vermelha, consulta amarela, consulta verde){
char prioridade[MAX];
paciente aux;
aux = triagem;
if(aux->next != NULL){
    printf("Qual a prioridade que quer atribuir ao doente: %s com bi: %s\n", (aux->next->informacao->nome), aux->next->informacao->bi);
    fgets(prioridade, MAX, stdin);
}
else{
    printf("Não há doentes em espera para triagem!\n");
}
/* NÃO PODEMOS USAR SWITCH COM STRINGS EM C */
if(strcmp(prioridade,"vermelha") == 0){
    insere_vermelha(triagem, vermelha, prioridade);
}
}

void insere_vermelha(paciente triagem, consulta vermelha, char prioridade[]){
paciente aux;
aux = triagem;
consulta no = (consulta)malloc(sizeof(cnode));
no->informacao = (Infor*)malloc(sizeof(Infor));
no->pulseira = (char*)malloc(sizeof(char));
if(no!=NULL){
    strcpy(no->pulseira, prioridade);
    strcpy(no->informacao->bi, aux->next->informacao->bi);
    strcpy(no->informacao->nome, aux->next->informacao->nome);
    no->informacao->dia = aux->next->informacao->dia;
    no->informacao->mes = aux->next->informacao->mes;
    no->informacao->ano = aux->next->informacao->ano;
    no->informacao->hora = aux->next->informacao->hora;
    no->informacao->minutos = aux->next->informacao->minutos;
    while(vermelha->next!=NULL){
        vermelha = vermelha->next;
    }
    no->next=NULL;
    vermelha->next = no;
}
else{
    printf("ERRO!");
}
}

O meu problema é ele não estar a copiar nada para a lista chamada vermelha.

Edited by thoga31
GeSHi
Link to comment
Share on other sites

O resultado final é um serviço de urgências. O que já tenho a funcionar é a parte em que na lista chamada triagem vamos inserindo pacientes, dando o seu nome, bi, dia e hora de entrada. O que quero agora é atribuir a cada um desses pacientes uma pulseira (chamado método de triagem de manchester) e para isso criei 3 listas ligadas onde vou por os doentes conforme a cor que lhes atribuir. O meu erro está ao passar a informação de cada nó da triagem para um nó que vou juntar à lista da cor respetiva (neste caso está só para vermelhas). Ele não me parece estar a passar nenhuma informação da lista triagem para o nó que adiciono à lista vermelha

Link to comment
Share on other sites

nota : não vou comentar nenhum dos problemas, más práticas ou simplesmente má implementação que não seja o problema referido no tópico

para detectares qual o problema, faz este teste:

// ...
 fgets(prioridade, MAX, stdin); // <-- ler a prioridade do tectlado
// ...

printf("prioridade lida do teclado |%s|\n", prioridade); <--- toma atenção aos caracteres '|' para veres onde começa e acaba a string !!!

if(strcmp(prioridade,"vermelha") == 0) {
// ...
}

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.