Bobrinha 4 Denunciar post Postado Maio 6, 2015 Olá pessoal, estou precisando muito de ajuda sobre esse assunto e fico muito grato por qualquer ajuda. Qual é a diferença entre pilha e fila? Se forem semelhantes qual a mais usada? como por exemplo em php existe o if e o switch que fazem a mesma coisa, porem cada um escolhe qual e como deve usar da melhor forma chegando ao mesmo resultado. Por favor me ajudem a responder essa pergunta porem com explicações Crie um algoritmo para ler uma sequência de 20 números informados pelo usuário e inserir os números lidos em uma fila. Em seguida o algoritmo deverá imprimir a cabeça e cauda da fila. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Maio 6, 2015 Cara são muitos nomes, Arrays, pilha, fila, vetor cada um chama de uma maneira mas são todas a mesma coisa em essência. Linguagens diferentes tratam um pouco diferente cada tipo de coisa obviamente. No seu caso você tem um vetor de 20 posições, o usuário vai colocar os valores e você vai adicionando, primeiro na posição 1, depois na 2 e assim por diante. Então no final você vai exibir a posição 1 e 20 do vetor. https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CDIQtwIwAg&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DDE0GtQJ9EFg&ei=axZKVZT9D4WMNuCwgYgI&usg=AFQjCNG_A3GZ_CnALH30b1YxDTduM-g4cg&bvm=bv.92291466,d.eXY http://forum.imasters.com.br/topic/500184-algoritmos-vetores-em-portugol/ Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Maio 7, 2015 Obg por explicar, eu realmente fiquei com duvidas visto que falam disso o tempo todo mais os professores tem mania de citar um nome só seria tão mais facil se falassem como vc falou Então dessa forma que fiz está correta? algoritmo "Fila" var Fila : vetor [1..20] de inteiro Indice, Cabeca, Cauda : inteiro inicio para Indice de 1 ate 20 faca escreva ("Digite o ",Indice," º número: ") leia (Fila[Indice]) fimpara Cabeca <- Fila[1] Cauda <- Fila[1] para Indice de 2 ate 20 faca se (Cabeca < Fila[Indice]) entao Cabeca <- Fila[Indice] fimse se (Cauda > Fila[Indice]) entao Cauda <- Fila[Indice] fimse fimpara escreva ("Cabeca: ",Cabeca) escreva ("Cauda: ",Cauda) fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Maio 7, 2015 Você pode definir constantes: Cabeca <- 1 Cauda <- 20 Então ele pede para você imprimir a cabeça e a cauda, logo o código de loop são desnecessários, basta você printar assim: escreva ("Cabeca: ",Fila[Cabeca]) escreva ("Cauda: ",Fila[Cauda]) Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Maio 8, 2015 Obrigado por toda ajuda que está me dando, eu fiz da seguinte forma abaixo e fui informado pelo professor que confesso acho que não entende muito de logica de programação que eu estou errado no meu exercicio mais acho que estou certo veja o meu e veja o dele e se puder me diga se o meu nao faz exatamente o que pede o exercicio porem com muito menos linhas Meu algoritmo "Exercicio1" // Crie um algoritmo para ler uma sequência de 20 números informados pelo usuário e inserir os //números lidos em uma fila. Em seguida o algoritmo deverá imprimir a cabeça e cauda da fila. // Autor : Ronaldo Aires var Fila : vetor [1..20] de inteiro Indice, Cabeca, Cauda : inteiro inicio para Indice de 1 ate 20 faca escreva ("Digite o ",Indice," º número: ") leia (Fila[Indice]) fimpara Cabeca <- Fila[1] Cauda <- Fila[20] escreval ("Cabeca: ",Cabeca) escreval ("Cauda: ",Cauda) fimalgoritmo O mesmo exercício feito pelo professor algoritmo "fila" //Autor : Professor //Versão : 0.0.1 //Removido o procedimento inicializafila //Variável "cauda" recebe zero no começo var fila:vetor[1..5] de inteiro cabeca, cauda, qtde, valor, cont:inteiro //Sistema que checa se a fila esta Vazia funcao filavazia :logico inicio se(qtde=0)entao retorne verdadeiro senao retorne falso fimse fimfuncao //Sistema que checa se a fila esta cheia funcao filacheia :logico inicio se (qtde=5)entao retorne verdadeiro senao retorne falso fimse fimfuncao //Sistema de enfileiramento //Corrigido o da apostila apresenta pois apresenta bug procedimento enfileirar(v:inteiro) //Removido a variável "elemento" inicio se filacheia entao escreval("Erro fila Cheia") senao // fila[cauda]:=elemento estar no local errado foi realocado para baixo se cauda<5 entao cauda:=cauda+1 senao cauda := 1 fimse fila[cauda]:= v qtde := qtde+1 fimse fimprocedimento //Sistema de Desenfileiramento //Correção e melhoramentos //FUNÇÃO desenfileirar deixa de ser inteiro para ser logico //variável "retorno" foi removida procedimento desenfileirar inicio se filavazia entao // "-999" foi substituído por "falso" escreveal("Erro fila vazia") senao // "retorno" foi substituído por "valor" valor := fila[cabeca] qtde := qtde-1 se cabeca <5 entao cabeca:= cabeca+1 senao cabeca:=1 fimse escreval("Foi removido o valor ",valor," da fila") fimse fimprocedimento //Imprima a Fila na tela em ordem de chegada //Criado procedimento mostrafila //levei muito tempo para criar e muito erros foi removido //mais não esta 100% procedimento mostrarfila var i, mqtde, memoria:inteiro inicio se (filavazia) entao escreval ("Erro não a ninguém na fila para ser mostrado tenta mais tarde") senao // Não sei explicar ele ainda mais vou criar um tópico só para ele com explicação repita mqtde:=mqtde+1 se(cabeca+mqtde-1<=5)entao escreva(fila[cabeca+mqtde-1]) senao memoria:=mqtde para i:=1 ate (qtde+1-memoria)faca mqtde:=mqtde+1 escreva(fila) fimpara fimse ate mqtde >=qtde fimse fimprocedimento //Programa inicio cabeca := 1 para cont:=1 ate 5 faca escreval("Digite um numeroa para fila") leia(valor) enfileirar(valor) fimpara escreval(fila[cabeca]) escreval(fila[cauda]) fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Maio 8, 2015 Ele tem algumas validações a mais, por exemplo, vendo se a fila está vazia ou não, muitas coisas ele fez em métodos, talvez seja isso que ele quer dizer com "Está errado", porque o seu modelo está adicionando 20 valores em um vetor enquanto o dele utiliza métodos para inserir na fila, todo o seu método está contido aqui no dele: cabeca := 1 para cont:=1 ate 5 faca escreval("Digite um numeroa para fila") leia(valor) enfileirar(valor) fimpara escreval(fila[cabeca]) escreval(fila[cauda]) A diferença é que ele transformou em métodos. O método enfileirar pega o valor e coloca na próxima posição da fila, se a fila estiver cheia ele vai retornar uma mensagem de fila cheia. Existem algumas coisas ai que realmente não fazem sentido se este for o enunciado correto. Você já rodou este programa? Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Maio 8, 2015 Rodei os dois programas no visualg e os dois fazem a mesma coisa ou seja pede os numeros a gente digita e no final mostra a cabeça e a calda ou seja o primeiro e ultimo numero. Veja o que ele falou sobre o meu codigo o erro ta que você não estruturo seu codigo, não criou o métodos da fila que seria método de enfileirar desenfileirar, fila cheia e fila vazia. Mais porque eu devo criar isso deve? Bom para aprender a "estruturar dados", e a falar do seu código é que as pessoas só entra na fila e nao podem sair e só você sabe que é a cabeça(primeiro da fila) e a cauda(o utimo da fila) , pois foi você que informo manualmente, desta forma toda vez que uma pessoa sair você deve informa que é a cabeça da fila e toda vez que entra deve informa a cauda manualmente. Mesmo assim ainda acho que as coisas que ele fez não servem para nada e que o meu código faz exatamente o que o dele faz, complicado duvidar do professor rss, por isso venho aqui pedir orientação e ajuda de quem entende do assunto, sei que é chato mais é vivendo e aprendendo, pois pra mim cada um tem sua logica desde que chegue ao resultado final esperado rss Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Maio 8, 2015 Sim, o seu código faz o mesmo que o dele. Porém além desta questão existe a questão da visibilidade do que seu professor quer te ensinar, o problema é que esse exemplo não mostra o funcionamento disso. Mas imagina o seguinte, temos dois carros, uma Ferrari e um VolksWagen, os dois fazem a mesma coisa, você pode usar os dois para fazer exatamente tudo que um carro pode fazer. Porém na Ferrari você vai ter um sistema mais otimizado, maior velocidade, maior aerodinâmica e tudo mais. O mesmo vale para o código, o seu código funciona bem porque são apenas 20 valores, agora imagine se fossem um milhão de valores, seu programa demoraria demais. O que seu professor está dizendo é que você não criou métodos, você não dividiu o seu código em rotinas, e isso é uma excelente prática, ele tem razão em dizer que o modo que você fez, apesar de chegar no mesmo resultado dele, está errado. Ele está tentando ensinar boas práticas de programação, tente refatorar seu código para incluir métodos. Cada um tem sua logica desde que chegue ao resultado final esperado No ramo de estudo isto é válido, porém no mundo profissional você precisa fazer um código do modo mais eficiente possível para que ele seja rápido, ágil e não ocupe memória, como eu disse antes, existem códigos que fazem a mesma coisa mas cada um com um nível de eficiencia e rapidez. Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Maio 9, 2015 Obg, conclusão, o código está certo porém pode ser melhorado com métodos e rotinas que são boas praticas de programação para o mundo profissional Compartilhar este post Link para o post Compartilhar em outros sites
Taty82 0 Denunciar post Postado Maio 30, 2015 Nessa mesma linha de filas e pilhas não estou conseguindo resolver um exercício de "pilhas". Será que alguém poderia me ajudar? Implemente uma estrutura de pilha segundo o material dado e execute as seguintes operações: a. Empilhe: 5 b. Empilhe: 8 c. Empilhe: 22 d. Escreva o topo da pilha e. Desempilhe f. Imprima o topo da pilha g. Empilhe: 30 h. Empilhe: 32 i. Imprima o resultado de Desempilhe j. Imprima a quantidade de itens empilhados Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Maio 30, 2015 Crie um novo tópico e coloque o que você já fez, não use o mesmo tópico. Compartilhar este post Link para o post Compartilhar em outros sites
Taty82 0 Denunciar post Postado Maio 31, 2015 ok, desculpe-me Compartilhar este post Link para o post Compartilhar em outros sites