Ir ao conteúdo

Posts recomendados

Postado
1 hora atrás, Gabriel Tellaroli Ramos disse:

ED1-Trab01.pdfEstou com muita dificuldade para fazer esse trabalho realmente não entendi o conceito de filas e como trabalhar com elas em C, se alguém puder me ajudar não sei mas o que fazer obs: entrega 22/04

 

Wow 

 

No popular, entrega para amanhã. E são dez da noite.

O que já fez? Esse é o primeiro trabalho? ED1-Trab01? Não pode postar aqui o troço para que a gente não tenha que fazer um download e abrir em outro programa para depois voltar aqui e tentar ajudar?

  • Curtir 1
Postado

Olá!

Para estudo de filas, você pode encontra diversos vídeos na internet, que ensinam e mostram, como tudo funciona na maior tranquilidade!

 

Espero ter ajudado.

  • Curtir 1
Postado

Filas de Prioridade não são exatamente filas. Se for buscar exemplos procure de acordo com o seu caso. Eu li o enunciado apesar de você ter postado um link apenas.  ;) 

O mais meigo do enunciado é o primeiro parágrafo:
 

Citação

Apesar da simplicidade do conceito de fila, ele tem se mostrado essencial para o desenvolvimento de muitas aplicações, sobretudo, quando se trata de simular no computador situações reais, onde algum tipo de atendimento é modelado

 

Onde basicamente diz que o conceito de fila é essencial para desenvolver aplicações que modelam... filas! E simula situações reais! Situações onde um atendimento é modelado. 

 

Faz sentido afinal é uma aplicação que modela uma fila :) Adorei

 

Mas o enunciado me pareceu muito melhor formulado do que se costuma ver. Oferece exemplos e estruturas de dados e várias sugestões importantes. Muito bom exceto pelo divertido primeiro parágrafo.

 

Você precisa de uma fila de prioridade estável  --- stable Priority Queue --- e a estrutura mais parecida com isso é uma chamada Heap e não a lista ligada que se usa para implementar filas em geral. E é dita estável porque tem que preservar a ordem de entrada: transações com prioridades iguais tem que ser atendidas na ordem. Está no enunciado.

Claro que se for usar uma fila comum implementada em listas apenas pode ter que usar um hack na fila para implementar a saída conforme a ordem E a prioridade.

  • Curtir 2
Postado

É muito importante também tomar cuidados nos mínimos detalhes, não esquecer de enviar um header explicando o código (observaçoes 6 e 7), e gerar uma interface parecida com a do exemplo faz toda diferença.

tb.thumb.png.4bc1dd56055dbf9f3992f372f40ad0a4.png

  • Curtir 1
Postado
18 horas atrás, herbertbahia disse:

muito legal esse trabalho. já começou?

Estou tentando mas está difícil n consigo nem entender o objetivo do trab e o que tem que fazer, realmente o professor n explicou mt bem ainda mais com essas dificuldades da quarentena, e n entendo como você acha esse trabalho legal kkkk pra mim n tem sentido kkkk

  • Curtir 2
Postado

O objetivo é o que está lá: gerar até 60 séries cada uma com até 20 eventos. Eles serão daqueles nove tipos e terão 6 prioridades diferentes, como está na tabelinha. Preenchida a tabela de eventos você ativa o esquema e executa todos pela ordem de entrada respeitando as prioridades. Nada mais. E as estruturas e coisas que tem lá no enunciado são apenas sugestões.

 

É um pouco mais simples que o programa que eu mostrei.

 

Você leu o que eu escrevi?

  • Curtir 1
Postado

@arfneto

3 minutos atrás, arfneto disse:

O objetivo é o que está lá: gerar até 60 séries cada uma com até 20 eventos. Eles serão daqueles nove tipos e terão 6 prioridades diferentes, como está na tabelinha. Preenchida a tabela de eventos você ativa o esquema e executa todos pela ordem de entrada respeitando as prioridades. Nada mais. E as estruturas e coisas que tem lá no enunciado são apenas sugestões.

 

É um pouco mais simples que o programa que eu mostrei.

 

Você leu o que eu escrevi?

S, cheguei a ler mas como falei n entendo nd de fila/lista e aquele heap que você comentou.

  • Curtir 1
Postado
10 minutos atrás, Gabriel Tellaroli Ramos disse:

S, cheguei a ler mas como falei n entendo nd de fila/lista e aquele heap que você comentou

 

?????

 

Entendeu a parte em que eu disse que o programa está pronto?

 

E a parte em que eu expliquei que o que precisa alterar é só uma lista de opções do switch? Trocar o atendimento prioritário/não prioritário que tem lá pelos seus eventos?

 

Não perguntou nada sobre o heap ou as tais filas. Se não entendeu e acha que precisa disso não seira normal você ter perguntado algo?

 

  • Curtir 1
Postado
10 minutos atrás, arfneto disse:

 

?????

 

Entendeu a parte em que eu disse que o programa está pronto?

 

E a parte em que eu expliquei que o que precisa alterar é só uma lista de opções do switch? Trocar o atendimento prioritário/não prioritário que tem lá pelos seus eventos?

 

Não perguntou nada sobre o heap ou as tais filas. Se não entendeu e acha que precisa disso não seira normal você ter perguntado algo?

 

N, e também n achei esse programa que você flo que mostrou, nem essa parte que precisa alterar

  • Curtir 1
Postado
10 minutos atrás, Gabriel Tellaroli Ramos disse:

N, e também n achei esse programa que você flo que mostrou, nem essa parte que precisa alterar

 

Hum... Aí temos um problema: o post sequer está no tópico. E era grande :(

 

O programa está em https://github.com/ARFNeto-CH/ch-191026-filapq e o outro que tem o menu está em 

https://github.com/ARFNeto-CH/chc-200402play 

 

e tudo o que eu escrevi aparentemente sumiu ou foi para outro tópico que eu possa ter postado hoje ...

 

Mas é isso. Vou ficar olhando a tela agora até aparecer lá :D

adicionado 1 minuto depois

tem um exemplo lá da saída do programa também. Dá pra comparar com o que foi sugerido no seu enunciado

 

  • Curtir 2
Postado

É um projeto pronto. Não tem nada de especial. Se usa um compilador "moderno" pós C'89.

 

Talvez pudesse explicar qual a sua dificuldade para eu ver como te ajudar...

Ajudaria saber que compilador está usando e que sistema operacional. Linux? Mac? Windows? E o compilador? gcc? microsoft? Usa um IDE? essas coisas

 

  • Curtir 1
Postado
8 minutos atrás, Mirabell disse:

Ah sim Claro que fiz o download no botão verde isso é lógico pois como disse já baixei em zip e extrair, mas  ao

compilar no code blakc nunca funciona. Ah vai Colocar a culpa no ano do compilador agora? haha essa foi boa.

Amigo eu fiz o dowload dos programas e rodaram sem problemas, você n deve ta criando um projeto para add os .c e .h por tanto deve tar dando erro

 

adicionado 2 minutos depois
3 horas atrás, arfneto disse:

Conseguiu entregar o trabalho? Sucesso? Como ficou?

 

Boa cara, então na vdd estamos fazendo ainda (eu e meu grupo) vamos tentar entregar hj valendo um pouco menos mas conseguimos evoluir bastante já, realmente preciso estudar melhor esse conceito de filas, mas agradeço a atenção que você sempre tem sempre ajudando fico grato de vdd , é que realmente me sobra pouco tempo do dia com trabalho e faculdade, mas suas ajudas são sempre bem vindas, valeu abraço...

  • Curtir 1
Postado
4 minutos atrás, Gabriel Tellaroli Ramos disse:

realmente preciso estudar melhor esse conceito de filas, mas agradeço a atenção que você sempre tem sempre ajudando fico grato de vdd , é que realmente me sobra pouco tempo do dia com trabalho e faculdade, mas suas ajudas são sempre bem vindas

 

Mas você não entendeu que não precisa usar esse conceito de filas ou de heap ou nada pra resolver seu problema? Que pena. Podia ter perguntado mais.

  • Curtir 1
Postado
44 minutos atrás, Mirabell disse:

Então a pasta que baixei do seu git ta cheio de baguio aí eu abro o que serve pra alguma coisa que termina em .c e quando compilo da erro.

Como você diz aqui v deve ta executando apenas o .c, sem criar um projeto e add as bibliotecas por isso o programa nunca vai rodar

Postado
agora, arfneto disse:

 

Mas você não entendeu que não precisa usar esse conceito de filas ou de heap ou nada pra resolver seu problema? Que pena. Podia ter perguntado mais.

S, nos estamos usando a estrutura de fila de prioridade para armazenar os eventos e estamos imprimindo pela sua prioridade já, só falta ajustar alguns detalhes para que o programa fique com execução correta semelhante a do trabalho mas acredito que agr esteja tudo Ok já, surgindo mais alguma duvida especifica eu entro em contato ;)

adicionado 2 minutos depois
3 minutos atrás, Mirabell disse:

como eu faço para add os . c e .h então? porque falar que tá errado todo mundo sabe, mas explicar como faz ninguém explica.

Primeiro você deve criar um novo projeto C e la você vai add os arquivos .c e .h copiando e colando pra pasta do projeto, depois dos arquivos estarem na pasta, você vai no projeto pelo codeblocks e clicka com o direito no projeto e seleciona add files então basta selecionar os arquivos .c e .h que você colo na pasta do projeto e pronto você consegue executar o programa

Postado
2 minutos atrás, Gabriel Tellaroli Ramos disse:

S estou usando o windows, e os .h n estão na pasta que eu baixei do Git, e acredito que o meu esteja atualizado dei uma olhada no que você postou falando sobre mas na pasta do MinGW n achei nd com a versão

 

 

Rode um gcc -v apenas... Veja como abaixo

 

image.thumb.png.b29549305003ebc5f01a66f9ddbe66dd.png

 

É importante você saber as versões dos compiladores e as opções. Se você está usando um infeliz gcc da idade média ele pode estar compilando para C89. E eu escrevi esse programa ontem, em 2020. Pode precisar incluir -std=c11 ou -std=C++11 ou C++14 ou C++17

adicionado 3 minutos depois
11 minutos atrás, Mirabell disse:

 Não entendi a pergunta? qual diferença vai fazer se for 98 ou 2098

 

Você entendeu. não respondeu e respondeu com outra. Estou quase desistindo.

 

Apenas faça o simples e me diga a pR$$a da versão. Se seu compilador for muito antigo pode estar compilando para a versão de C de 1989. Eu já programava em C em 89 e ia achar bem moderno o compilador!!! Só que eu fiz esse programa que está tentando compilar em outubro, a julgar pelo nome dele, outubro de 2019. E eu não tenho a menor intenção ou obrigação de escrever meu programa voluntariamente compatível com um compilador de 30 anos atrás

Postado
13 minutos atrás, arfneto disse:

 

Rode um gcc -v apenas... Veja como abaixo

 

image.thumb.png.b29549305003ebc5f01a66f9ddbe66dd.png

 

É importante você saber as versões dos compiladores e as opções. Se você está usando um infeliz gcc da idade média ele pode estar compilando para C89. E eu escrevi esse programa ontem, em 2020. Pode precisar incluir -std=c11 ou -std=C++11 ou C++14 ou C++17

adicionado 3 minutos depois

 

Você entendeu. não respondeu e respondeu com outra. Estou quase desistindo.

 

Apenas faça o simples e me diga a pR$$a da versão. Se seu compilador for muito antigo pode estar compilando para a versão de C de 1989. Eu já programava em C em 89 e ia achar bem moderno o compilador!!! Só que eu fiz esse programa que está tentando compilar em outubro, a julgar pelo nome dele, outubro de 2019. E eu não tenho a menor intenção ou obrigação de escrever meu programa voluntariamente compatível com um compilador de 30 anos atrás

Opa consegui ver a versão e realmente minha versão é 5.1.0, teria que atualizar ou add alguma modificação como você comentou ???

 

 

Duvida nas linhas :
Evento** p = (Evento**)e;
...
Evento** p1 = (Evento**)evento1;
    Evento* e1 = *p1;
    Evento** p2 = (Evento**)evento2;
    Evento* e2 = *p2;
...

Que que seriam esses ponteiros duplos ** ??Se é que pode se chamar assim kkkk

Postado
1 minuto atrás, Gabriel Tellaroli Ramos disse:

Opa consegui ver a versão e realmente minha versão é 5.1.0, teria que atualizar ou add alguma modificação como você comentou ???

 

Está divertido isso com duas conversas ao mesmo tempo :D 

 

Esse é medieval. A versão atual é 9.2 eu acho. Você precisa incluir -std=C11 ou -std=C++11 pelo menos nas opções de compilação. Você usa um IDE ou um makefile? Se uma esse (modestissimo) code::blocks veja em 
 

image.png.febb7369d5f086016e98eac25e91858e.png

 

E apenas marque as opções. C++ 17, C 11...

Postado
7 minutos atrás, arfneto disse:

 

Está divertido isso com duas conversas ao mesmo tempo :D 

 

Esse é medieval. A versão atual é 9.2 eu acho. Você precisa incluir -std=C11 ou -std=C++11 pelo menos nas opções de compilação. Você usa um IDE ou um makefile? Se uma esse (modestissimo) code::blocks veja em 
 

image.png.febb7369d5f086016e98eac25e91858e.png

 

E apenas marque as opções. C++ 17, C 11...

Uso a IDE no caso eu vou nessas opções e marco o C++17 e os dois C++11 ? 

 

Fui tentar e só da pra marcar 1 opção

 

Postado
8 minutos atrás, Gabriel Tellaroli Ramos disse:

Duvida nas linhas :
Evento** p = (Evento**)e;
...
Evento** p1 = (Evento**)evento1;
    Evento* e1 = *p1;
    Evento** p2 = (Evento**)evento2;
    Evento* e2 = *p2;
...

Que que seriam esses ponteiros duplos ** ??Se é que pode se chamar assim kkkk

 

Não tinha visto isso.

 

É que pra poder usar do jeito simples, tipo um vetor de eventos como eu queria, tem que dar uma volta digamos.

 

Você define quantos eventos vai usar, tipo 2000 e então sabe que vai criar 2000 structs. Seria bem legal poder usar de eventos[0] a eventos[1999] certo?

 

Se você usa uma fila de prioridade ou uma lista ligada você aloca um por um e vai seguindo os ponteiros e tal. E funciona lógico. Com os ponteiros e seguindo um a um.

 

Mas é complicado e o legal mesmo seria poder usar um vetor. Se você usar um vetor você pode usar o qsort() direto da biblioteca e aplicar qualquer prioridade que precise. De graça. Então vale a pena. Mas para essa m. funcionar você precisa alocar os caras juntinhos.

 

Por isso você aloca por exemplo 2000 ponteiros e não 2000 structs. E aloca os caras juntinhos naquele malloc(). É exatamente o que o sistema faz com os char** argv quando carrega seu programa

 

adicionado 3 minutos depois
1 minuto atrás, Mirabell disse:

Então se eu sair marcando as caixinhas e da ok eu fico com o compilador atualizado?

 

não. Para ficar com ele atualizado você faz.. um download. Aqui http://www.mingw.org/

 

Você ainda não conseguiu responder qual a versão de gcc que você usa. Complexo.

 

O que você faz é mudar ão mudar o std é mudar a versão de código que o gcc está compilando. O seu é posterior a 2011 então tem essa opção...

 

Postado
7 minutos atrás, arfneto disse:

 

Não tinha visto isso.

 

É que pra poder usar do jeito simples, tipo um vetor de eventos como eu queria, tem que dar uma volta digamos.

 

Você define quantos eventos vai usar, tipo 2000 e então sabe que vai criar 2000 structs. Seria bem legal poder usar de eventos[0] a eventos[1999] certo?

 

Se você usa uma fila de prioridade ou uma lista ligada você aloca um por um e vai seguindo os ponteiros e tal. E funciona lógico. Com os ponteiros e seguindo um a um.

 

Mas é complicado e o legal mesmo seria poder usar um vetor. Se você usar um vetor você pode usar o qsort() direto da biblioteca e aplicar qualquer prioridade que precise. De graça. Então vale a pena. Mas para essa m. funcionar você precisa alocar os caras juntinhos.

 

Por isso você aloca por exemplo 2000 ponteiros e não 2000 structs. E aloca os caras juntinhos naquele malloc(). É exatamente o que o sistema faz com os char** argv quando carrega seu programa

 

adicionado 3 minutos depois

 

não. Para ficar com ele atualizado você faz.. um download. Aqui http://www.mingw.org/

 

Você ainda não conseguiu responder qual a versão de gcc que você usa. Complexo.

 

O que você faz é mudar ão mudar o std é mudar a versão de código que o gcc está compilando. O seu é posterior a 2011 então tem essa opção...

 

Eu selecionei a opção do C++11 e dps tentei a do C++17 mas continua com o erro ainda
image.thumb.png.692ec290dd317308874ec5e2e11d0d24.png
 

Postado
4 minutos atrás, Gabriel Tellaroli Ramos disse:

Eu selecionei a opção do C++11 e dps tentei a do C++17 mas continua com o erro ainda
image.thumb.png.692ec290dd317308874ec5e2e11d0d24.png
 

 

Eis o que acontece: o gcc não implementa timespec_get() e não tem essa constante, que vale 1...

 

O caminho curto é pegar a versão do seu enunciado e corrigir para ficar como essa que é melhor, eu acho. Vou ver se tem aqui... Um minuto

  • 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!