Ir ao conteúdo
  • Cadastre-se

ynp

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por ynp

  1. Fiz um programa para um exercício da faculdade, ele consiste em simular uma lista de espera de um hospital, aparentemente ele está certo, porém depois da terceira repetição do while ele fecha sem nenhum aviso

    #include <iostream>
    #include <locale.h>
    #include <stdlib.h>
    #include <string>
    
    using namespace std;
    
    //========== dados que vou guardar dentro da lista
    struct paciente{
        int prioridade;
        string nome;
    };
    
    //========== criando a estrutura de lista encadeada
    struct elemento{
        struct paciente dados;      // estrutura guardada dentro da lista
        struct elemento *prox;      // ponteiro de ponteiro
    };
    typedef struct elemento elem;
    typedef struct elemento* lista;
    
    //========== criar lista
    lista* lista_cria(){
        lista* li = (lista*) malloc(sizeof(lista));     // criando nó de inicio
        if(li != NULL){
            *li = NULL;
        }
        return li;
    }
    
    //========== imprimir pacientes
    void lista_imprime_E(lista* li){
        cout << "Atendimento emergencial: " << endl;
        elem *no = *li;
        while(no != NULL){
            cout << no->dados.nome << endl;
            no = no->prox;
        }
        cout << endl;
    }
    
    void lista_imprime_P(lista* li){
        cout << "Atendimento prioritário: " << endl;
        elem *no = *li;
        while(no != NULL){
            cout << no->dados.nome << endl;
            no = no->prox;
        }
        cout << endl;
    }
    
    void lista_imprime_N(lista* li){
        cout << "Atendimento comum: " << endl;
        elem *no = *li;
        while(no != NULL){
            cout << no->dados.nome << endl;
            no = no->prox;
        }
        cout << endl;
    }
    
    //========== insere final
    int lista_insere_final(lista* li, struct paciente pacienteX){
        if(li == NULL){
            return 0;
        }
        elem* no = (elem*) malloc(sizeof(elem));
        if(no == NULL){
            return 0;
        }
    
        no->dados = pacienteX;
        no->prox == NULL;
    
        if((*li) == NULL){
            *li = no;
        }else{
            elem *aux = *li;
            while(aux->prox != NULL){
                aux = aux->prox;
            }
            aux->prox = no;
        }
        return 1;
    }
    
    //========== ver se a lista está vazia
    int lista_vazia(lista* li){
        if(li == NULL){
            return -1;
        }
        if(*li == NULL){
            return -1;
        }
        return 0;
    }
    
    //========== função para remover o paciente já atendido da fila
    int lista_remove(lista* li){
        if(li == NULL){
        return 0;
        }
        if(lista_vazia(li)){
            return 0;
        }
    
        elem *no = *li;
        *li = no->prox;
        free(no);
    
        return 1;
    }
    
    int main(){
        setlocale (LC_ALL, "portuguese");
    
        int op, op3, i=0;
    
        lista *lip;
        lip = lista_cria();
        lista *lin;
        lin = lista_cria();
        lista *lie;
        lie = lista_cria();
    
    
        paciente pacienteX = {0, "a"};
    
        while(i != 13){
        cout << "========================================" << endl;
        cout << "==   Qual operação deseja realizar?   ==" << endl;
        cout << "==   1 - Imprimir fila de pacientes   ==" << endl;
        cout << "==   2 - Adicionar novo paciente      ==" << endl;
        cout << "==   3 - Remover paciente atendido    ==" << endl;
        cout << "==   4 - Sair                         ==" << endl;
        cout << "========================================" << endl;
        cout << endl << endl;
    
        cin >> op;
        
    
        if(op == 1){
        cout << endl << endl;
        lista_imprime_E(lie);
        lista_imprime_P(lip);
        lista_imprime_N(lin);
        system("pause");
        cout << endl;
        }
    
        if(op == 2){
            cout << "Digite o nome do paciente: " << endl;
            cin >> pacienteX.nome;
            cout << endl;
    
            cout << "Digite a prioridade do paciente:       (1 - Emergência, 2 - Prioritário, 3 - Normal)" << endl;
            cin >> pacienteX.prioridade;
            cout << endl; 
    
            if(pacienteX.prioridade == 1){
                lista_insere_final(lie, pacienteX);
            }
            if(pacienteX.prioridade == 2){
                lista_insere_final(lip, pacienteX);
            }
            if(pacienteX.prioridade == 3){
                lista_insere_final(lin, pacienteX);
            }
        }
    
        if(op == 3){
            cout << "Informe a prioridade do paciente atendido: (1 - Emergência, 2 - Prioritário, 3 - Normal)" << endl;
            cin >> op3;
            if(op3 == 1){
                lista_remove(lie);
            }
            if(op3 == 2){
                lista_remove(lip);
            }
            if(op3 == 3){
                lista_remove(lin);
            }
    
        }
    
        if(op == 4){
            i=13;
        }
    };
    
        system("pause");
        return 0;
    }

     

    no momento está while(i != 13) porque coloquei um número aleatório para testar, mas já tentei usar while(i != 1), do-while, até mesmo um for(i=0; i<9999; i++), e nenhum deles deu certo, sinceramente não sei o que estou fazendo de errado ou se quer tem algo errado com meu código

     

    raramente ele roda mais do que 3x como no caso da foto, mas no final o erro é o mesmo, ele simplesmente desiste.

     

    obs: isso acontece tanto no vs code como no terminal externo, mesmo com o arquivo construído e fora do vs code ele ainda fecha enquanto o while está ativo

    image.thumb.png.3593d327a3474bbacf4cc4d147d23f39.png

  2. Recebi uma tarefa de um professor para fazer um programa que converta números decimais para binário, octal e hexadecimal, estou tentando usar o VisualG por estar no meu primeiro ano da faculdade e ser a única linguagem que conheço o básico, e estou tendo dificuldades, pois estou com um código que faz as conversões corretamente, porém ele faz sempre as 3 de uma vez, e eu gostaria de poder escolher a conversão que desejo fazer, tentei usar o "caso" mas não está dando certo. Meu código é esse, se alguém puder me ajudar ou me dizer algo que está errado eu agradeceria.

    Algoritmo "conversãodecimal"
    Var
    Num, Valor: inteiro
    Resultado1, Resultado2, Resultado3, opcao, binario, octal, hexadecimal: Caractere
    Inicio
    // primeira parte, onde eu desejo criar a "interface" permitindo o usuário escolher qual conversão deseja fazer
    
    escreval("para qual base você deseja converter seu número decimal?")
    escreval("binário")
    escreval("octal")
    escreval("hexadecimal")
    leia(opcao)
    escolha opcao
    // conversão para binário
    
    caso(opcao=binario) faca
    escreval ("Digite um valor Decimal: ")
    leia (Num)
    Valor <- (Num)
    enquanto (Num > 0) faca
    escolha (Num mod 2)
    	caso 0
    	Resultado1 <- ("0" + Resultado1)
    	caso 1
    	Resultado1 <- ("1" + Resultado1)
        fimescolha
         Num <- (Num div 2)
       fimenquanto
         escreval ("O valor: ", Valor, " em Decimal será de: ", Resultado1, " em Binários!!")
    // conversão para octal
    
    caso (opcao="octal") faca
     escreval ("Digite um valor Decimal: ")
      leia (Num)
       Valor <- (Num)
       enquanto (Num > 0) faca
        escolha (Num mod 8)
           caso 1
            Resultado2 <- ("1" + Resultado2)
    	caso 2
    	Resultado2 <- ("2" + Resultado2)
    	caso 3
    	Resultado2 <- ("3" + Resultado2)
    	caso 4
    	Resultado2 <- ("4" + Resultado2)
    	caso 5
    	Resultado2 <- ("5" + Resultado2)
    	caso 6	
    	Resultado2 <- ("6" + Resultado2)
    	caso 7
    	Resultado2 <- ("7" + Resultado2)
        fimescolha
         Num <- (Num div 8)
       fimenquanto
         escreval ("O valor: ", Valor, " em decimal será de: ", Resultado2, " em octal")
    // conversão para hexadecimal
    
    caso (opcao = hexadecimal) faca
     escreval ("Digite um valor Decimal: ")
      leia (Num)
       Valor <- (Num)
       enquanto (Num > 0) faca
        escolha (Num mod 16)
    	caso 1
    	Resultado3 <- ("1" + Resultado3)
    	caso 2
    	Resultado3 <- ("2" + Resultado3)
    	caso 3
    	Resultado3 <- ("3" + Resultado3)
    	caso 4
    	Resultado3 <- ("4" + Resultado3)
    	caso 5
    	Resultado3 <- ("5" + Resultado3)
    	caso 6
    	Resultado3 <- ("6" + Resultado3)
    	caso 7
    	Resultado3 <- ("7" + Resultado3)
    	caso 8
    	Resultado3 <- ("8" + Resultado3)
    	caso 9
    	Resultado3 <- ("9" + Resultado3)
    	caso 10
    	Resultado3 <- ("A" + Resultado3)
    	caso 11
    	Resultado3 <- ("B" + Resultado3)
    	caso 12
    	Resultado3 <- ("C" + Resultado3)
    	caso 13
    	Resultado3 <- ("D" + Resultado3)
    	caso 14
    	Resultado3 <- ("E" + Resultado3)
    	caso 15
    	Resultado3 <- ("F" + Resultado3)
        fimescolha
         Num <- (Num div 16)
       fimenquanto
         escreval ("O valor: ", Valor, " em decimal será de: ", Resultado3, " em hexadecimal.")
    fimalgoritmo

     

    • Obrigado 1

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