Ir ao conteúdo
  • Cadastre-se

João Miguel Freitas Mausa

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

posts postados por João Miguel Freitas Mausa

  1. Boa noite!

     

    Alguém poderia me ajudar com o código abaixo?

     

    Preciso adaptá-lo para que seja possível empilhar strings.

     

    #include <stdio.h>
    #include <stdlib.h>
    
    /*Declaração do tipo nó para a pilha, composto de
    ponteiro para o próximo nó e de um campo para dado
    */
    typedef struct elemento {
    
           int dado;
           struct elemento *proximo;
    
           } elemento;
    
    elemento *topo = NULL; //Ponteiro para o topo da pilha
    elemento *alocar = NULL; //Ponteiro para fazer alocação
    
    /*Inserção de elementos na pilha
    Parâmetro dado: é um int */
    
    void push(int dado) {
    
        alocar = malloc(sizeof(struct elemento)); //aloca memória
    
        if (alocar == NULL) { //Se não for possível fazer a alocação, sai do programa
           printf("push: Falta de memória\n");
           return -1;
        }
    
        alocar->dado = dado; //Copia o dado para o novo nó alocado
    
         if (topo == NULL) { //Se não houver elemento ainda na pilha, insere na base
             topo = alocar;
             topo->proximo = NULL;
    
         }
         else
    
         {
             alocar->proximo = topo; //Aponta o próximo para o "antigo" topo da pilha
             topo = alocar;          //Aponta o ponteiro de topo para o dado que foi alocado
    
         }
    }
    
    /*
    Retira elementos da pilha
    */
    int pop(int *removido) {
    
        if(topo){
            *removido = topo->dado;
            topo = topo->proximo;
            return 0;
        }
        else{
            printf("pop: Pilha vazia.\n");
            return -1;
        }
    
        }
    
    /*Imprime todos os elementos da pilha na tela
    na ordem de retirada
    */
    void imprimir() {
         elemento *ponteiro = topo;
    
         if (ponteiro == NULL){
            printf("imprimir: Pilha vazia.\n");
            return -1;
         }
    
        printf("\nPilha:\n");
    
        while (ponteiro) {
               printf("%d\n", ponteiro->dado);
               ponteiro = ponteiro->proximo;
              }
         }
    
    int main() {
    
        int dado;
        int rem = 0;
        int ret = 0;
    
        ret = pop(&rem); //Tenta remover dado da pilha vazia
    
        if(ret == 0){
            printf("\nmain:Saiu da pilha: %d\n", rem);
            imprimir();
        }
    
        printf("\nInserir: ");
        scanf("%d", &dado);
        push(dado);
        imprimir();
    
        printf("\nInserir: ");
        scanf("%d", &dado);
        push(dado);
        imprimir();
    
        ret = pop(&rem);
    
        if(ret == 0){
            printf("\nmain: Saiu da pilha: %d\n", rem);
            imprimir();
        }
    
        ret = pop(&rem);
    
        if(ret == 0){
            printf("\nmain: Saiu da pilha: %d\n", rem);
    		imprimir();
        }
    
        printf("\nRetirar: ");
    
        ret = pop(&rem);
    
        if(ret == 0){
            printf("\nmain: Saiu da pilha: %d\n", rem);
    		imprimir();
        }
      }
    

     

  2. @CafeComLeiteOficial @mick.07 @GabrielLP14 É o Windows 10. Está aparecendo o seguinte: “Um driver de midia necessário ao compudor esta faltando. Pode se tratar de um driver DVD, USB ou Disco Rigido. Se voce tiver uma unidade de CD, DVD ou flash USB com driver, insira-a agora. 

     

    Observação: se a mídia de instalação do windows estiver na unidade de DVD ou na unidade USB, você poderá removê-la com segurança para esta etapa.

  3. Olá, alguém poderia me explicar como eu faço a parte que está em vermelho? Eu não sei como faço para ir para a opção que a pessoa escolher e a parte da fila. Agradeço desde já.

    1. Faça um programa que simule o gerenciamento de chamados de um setor de TI. Crie uma struct chamados contendo: número do chamado, assunto e descrição. Os chamados devem ser gerenciados em forma de fila. Devem ser oferecidas as seguintes opções: cadastrar novo chamado, exibir todos os chamados e atender chamado. Se for escolhida a opção “atender chamado” o primeiro elemento da fila é removido e impresso em um arquivo atendimentos.txt juntamente com a hora do sistema. O formato do arquivo deve ser o seguinte:
    2. *Número do chamado: 22677 Descrição: O usuário do computador com número de patrimônio 335, localizado no setor de RH solicita a verificação das portas USB da sua máquina. Horário do atendimento: Fri Oct 26 13:16:21 2018
    3. *Número do chamado: 22678 Descrição: O usuário do notebook com número de patrimônio 422, localizado no setor de produção solicita a verificação da bateria. Horário do atendimento: Fri Oct 26 14:15:12 2018
     

    Por enquanto eu tenho isso, mas não tá dentro do que o exercício está pedindo, ainda 
     

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct chamado{
    	char NumChamado[100];
    	char assunto[50];
    	char Descricao[100];
    
    };
    int main() {
    	int n;
    	int i;
    
    	struct chamado *chamados = NULL;
    
    	printf("Quantos chamados?\n");
    	scanf("%d", &n);
    
    	chamados = malloc (n*sizeof(struct chamado));
    
    	if (chamados == NULL){
    		return 0;
    	}
    	else{
    
    	for(i=0; i<n; i++){
            printf("Sistema de cadastro de chamado");
    
            printf("\n\nNumero do Chamado:\n\n");
            scanf("%s", chamados[i].NumChamado);
            printf("\n\n Tipo de problema:\n\n 1 - Manutencao\n\n 2 - Erro\n\n 3 - Nao funcionando\n");
            printf("\nAssunto: ");
            scanf("%s", chamados[i].assunto);
            printf("\n\nTipo de descricao:\n\n 1 - Aguardando cliente \n\n 2 - Agendado \n\n 3 - Procimento remoto\n\n");
            printf("\n\nDescricao: ");
            scanf("%s", chamados[i].Descricao);
    
    	}
    	for(i=0; i<n; i++){
            printf("\n\nChamado:%s\n", chamados[i].NumChamado);
            printf("Assunto:%s\n", chamados[i].assunto);
            printf("\Descricao:%s\n\n", chamados[i].Descricao);
    	}
        free(chamados);
    	chamados = NULL;
    	}
    }

     

    • Curtir 1
  4. @devair1010 Eu entendi o principio, mas como eu faço para usar o strcmp? Eu irei comparar, e depois irei printar na tela normal caso ele seja igual, certo? E caso seja diferente? 
    Desculpe pela estupidez, mas eu ainda não entendi, creio eu que esteja fazendo algo errado ainda por falta de conhecimento.

    adicionado 29 minutos depois

    @devair1010Consegui!!! Fico muito agradecido pela ajuda! Tenha uma ótima noite!

    • Obrigado 1
  5. Olá, tenho um trabalho para fazer, mas estou tendo dificuldades com o código. 

    O trabalho é o seguinte:

     

    "Faça um programa que gere hashes de arquivos de texto e verifique se mesmos são idênticos através da comparação dos hashes.

     

    No menu inicial deve ser mostrada a seguinte interface:

    Nome ou caminho completo do arquivo 1:

    Nome ou caminho completo do arquivo 2:

    A saída deve ser mostrada conforme segue:

    Os arquivos são iguais.

    Hash:

    Ou

    Os arquivos não são iguais.

    Hash 1:

    Hash 2:

     

    O código que criei é este:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main() {

    FILE *hash;
    FILE *hash1;
    char m[101];
    char m1[101];
    int t;
    int t1;

    if((hash = fopen("Meu_arquivo.txt","w")) == NULL)
    {
        printf("Erro ao abrir arquivo!!!\n");
        exit(1);
    }
    printf("Nome ou caminho completo do arquivo 1: \n");
    gets(m);

    t = strlen(m);

    fwrite(m, sizeof(char), t, hash);


    if((hash1 = fopen("Meu_arquivo.txt1","w")) == NULL)
    {
        printf("Erro ao abrir arquivo!!!\n");
        exit(1);
    }

    printf("Nome ou caminho completo do arquivo 2:\n");
    gets(m1);

    t1 = strlen(m1);

    fwrite(m1, sizeof(char), t1, hash1);


    if (m == m1)
        printf("Os arquivos sao iguais.\n Hash: %s", m, hash, m1, hash1);
    else
     printf("Os arquivos nao sao iguais.\nHash 1: %s \nHash 2: %s ", m, m1, hash, hash1);

     }

     

     

    E quando vou processar, sempre aparece que são diferentes, nunca que são iguais. Alguém poderia me ajudar? 
    OBS: Eu não sei se estou utilizando hash da maneira certa.

     

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!