Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Yan David

Membros Juniores
  • Total de itens

    12
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Eu vi um outro tópico com uma dúvida que acho que é parecida com a minha. Porém como posso implementar isso no meu código exposto acima?
  2. Meu código ainda está em andamento, implementei na função de mostrar a fila uma forma de mostrar as prioridades primeiro, porém ainda não pensei na forma de retirar as prioridades primeiro na hora de chamar a função retirar. Quem tiver alguma ideia de como implementar isso... estou aceitando! #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> struct Eleitor { int idade; char nome[30]; int prioridade; }; struct Item { Eleitor eleitor; struct Item *proximo; }; struct Fila { Item *inicio; Item *fim; }; void Inicializar(Fila **fila) { // -> Recebe a fila por referencia // para inicializá-la *fila = (Fila *) malloc(sizeof(Fila)); (*fila)->inicio = NULL; (*fila)->fim = NULL; } int EstaVazia(Fila *fila) { return fila->inicio == NULL; } void Inserir(Fila *fila, Eleitor elemento) { Item *novo; novo = (Item *)malloc(sizeof(Item)); // -> Verifica se a memória foi alocada com sucesso if (novo != NULL) { strcpy(novo->eleitor.nome, elemento.nome); novo->eleitor.idade = elemento.idade; novo->eleitor.prioridade = elemento.prioridade; novo->proximo = NULL; if(EstaVazia(fila)) { // -> Primeiro Item da Fila. fila->inicio = novo; fila->fim = novo; } else { // -> Ultimo item da Fila fila->fim->proximo = novo; fila->fim=novo; } } } void Retirar(Fila *fila) { Item *item; if(!EstaVazia(fila)) { item = fila->inicio; fila->inicio = item->proximo; free(item); // -> Se a fila acabou devemos atualizar o final if (fila->inicio == NULL) fila->fim = NULL; } } void MostrarFila(Fila *fila) { int i = 0; Item *item; system("cls"); printf("# Fila de eleitores #\n\n"); printf("---------------------------------\n"); if (EstaVazia(fila)) { printf ("Nao ha eleitores na fila!\n"); } else { item = fila->inicio; i = 1; while(item != NULL) { if (item->eleitor.prioridade == 1) { printf("[%i] -> Idade: %i | Nome: %s\n", i, item->eleitor.idade, item->eleitor.nome); i++; } item = item->proximo; } item = fila->inicio; while (item != NULL) { if (item->eleitor.prioridade == 0) { printf("[%i] -> Idade: %i | Nome: %s\n", i, item->eleitor.idade, item->eleitor.nome); i++; } item = item->proximo; } } printf("---------------------------------\n"); } void Menu() { printf("# Tribunal Eleitoral #\n\n(1) Adicionar eleitor \n(2) Atender eleitor \n(3) Listar eleitores na fila\n(4) Finalizar atendimento \nEscolha a opcao desejada: "); } int main() { Fila *fila = NULL; int opcao; Eleitor eleitor; Inicializar(&fila); Menu(); scanf("%i", &opcao); while (opcao != 4) { switch (opcao) { case 1: system("cls"); printf("# Adicionar eleitor #\n\n"); printf("Insira a idade do eleitor: "); scanf("\n%i", &eleitor.idade); printf("Insira o nome do eleitor: "); scanf("\n%s", &eleitor.nome); if (eleitor.idade >= 65) { eleitor.prioridade = 1; } else { eleitor.prioridade = 0; } Inserir(fila, eleitor); printf("\nO eleitor foi inserido na fila com sucesso!\n\n"); system("pause"); system("cls"); Menu(); break; case 2: Retirar(fila); system("cls"); printf("Primeiro eleitor da fila atendido com sucesso!\n\n"); system("pause"); system("cls"); Menu(); break; case 3: MostrarFila(fila); system("pause"); system("cls"); Menu(); break; default: system("cls"); printf("Escolha invalida!\n\n"); Menu(); break; } scanf("%i", &opcao); } }
  3. Vou tentar implemetar isso, obrigado pela dica!
  4. Questão: O tribunal eleitoral precisa de alguma maneira organizar pessoas que farão recadastramento biométrico. Faça um programa que leia o nome e a idade de pessoas que serão colocados em uma fila de espera para fazer o recadastramento. O programa deverá pôr em uma estrutura as pessoas abaixo de 65 anos e as pessoas cuja idade for maior ou igual que 65 anos, cuidando para que estas últimas sejam atendidas primeiro. Alguém me ajuda a terminar esse código, por favor. #include <stdio.h> #include <stdlib.h> #include <strings.h> struct Eleitor{ int idade; char nome[30]; }eleitor; struct Elemento{ Eleitor *dados; struct Elemento *proximo; }elemento; struct Fila{ Elemento *inicio; Elemento *final; }; typedef struct Fila fila; fila * cria_fila (){ fila *fi = (fila *) malloc (sizeof(fila)); if(fi != NULL){ fi->inicio = NULL; fi->final = NULL; } return fi; } int fila_vazia(fila * fi){ if(fi == NULL) return 1; if(fi->inicio == NULL) return 1; return 0; } int insere_fila (fila *fi, Eleitor *el){ if (fi == NULL) return 0; Elemento *no; no = (Elemento *) malloc (sizeof(Elemento)); if(no == NULL) return 0; no->dados = el; no->proximo = NULL; if(fi->final == NULL){ fi->inicio = no; }else{ fi->final->proximo = no; fi->final = no; } return 1; } void retira_fila (fila *fi) { Elemento *elemento; if (!fi->inicio == NULL) { elemento = fi->inicio; fi->inicio = elemento->proximo; free(elemento); // -> Se a fila acabou devemos atualizar o final if (fi->inicio == NULL) fi->final = NULL; } } void mostrar_fila (fila *fi) { int i = 0; Elemento *elemento; printf("\n\n Listando...\n\n"); printf("---------------------------------\n"); if (fi->inicio == NULL) { printf ("A Fila esta vazia!\n"); } else { elemento = fi->inicio; while(elemento != NULL) { i++; printf("[%i] -> %d - %s\n", i, elemento->eleitor.idade, elemento->eleitor.nome); elemento = elemento->proximo; } } printf("---------------------------------\n"); } int menu() { int procedimento; printf("(0) Sair\n(1) Abrir fila\n(2) Inserir eleitor\n(3) Atender eleitor\n(4) Exibir fila\n\nInsira o valor do procedimento desejado: "); scanf("%d", &procedimento); return procedimento; } int main() { char aux1[30]; int aux2, procedimento; procedimento = menu(); switch (procedimento) { case 1: fila *novaFila = cria_fila(); break; case 2: eleitor *novoEleitor = (eleitor *)malloc(sizeof(eleitor)); printf ("Informe o nome do eleitor: "); gets(aux1); printf ("Informe a idade do eleitor: "); scanf("%d", &aux2); strcpy(novoEleitor->nome, aux1); novoEleitor->idade= aux2; insere_fila(novaFila, novoEleitor); break; case 3: retirar_fila(); break; case 4: mostrar_fila(); break; } return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×