SA-MP Forums Archive
[Off] [Desafio] Estrutura Pilha - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Off] [Desafio] Estrutura Pilha (/showthread.php?tid=498531)



[Desafio] Estrutura Pilha - WLSF - 03.03.2014

Boa noite, decidi postar esse desafio sу pra dar uma movimentada, nгo tenho tido contato com o povo do fуrum ultimamente.



O desafio й bastante simples, pra quem conhece, basta implementar uma pilha usando vetores.

A estruturaзгo precisa conter:

Para quem nгo conhece a estrutura, existe o colega ******.
Conceitos:
Pilha descriзгo(wiki)
Pilha descriзгo


OBS: Й um desafio um tanto complexo, levando em conta o nнvel visto nessa board diariamente, mas й uma boa prбtica.


Quem for conseguindo pode postando o cуdigo, e a lуgica usada(explicaзгo, sу se quiser).


Re: [Desafio] Estrutura Pilha - shittt - 03.03.2014

Eu vi isso em um PDF que eu estava estudando mais nao consigui resolver ... Mais tem esse code que eu entendi um pouco , E igual a isto ou esta errado ?

OBS: Nao foi eu que fiz , Autor : mantu

Код:
package help.guj.zagaia;  
  
public class SimpleStackTest {  
    public static void main(String[] args) {  
        String[] names = {  
            "Mark", "Berg", "John", "Beni", "Jebb", "June",  
            "Mary", "Karl", "Fred", "Hall", "Troy", "Joan"  
        };  
        SimpleStack stack = new SimpleStack(10);  
          
        System.out.println(  
            "Pilha de " + stack.getCapacity() + " posiзхes criada: " + stack  
        );  
        System.out.println();  
          
        System.out.println("Preenchendo a pilha:");  
        for(int i = 0; i < names.length; i++) {  
            System.out.print("\tInserindo o nome \"" + names[i] + "\":\t");  
            if(stack.push(names[i]) == null)  
                System.out.println("PILHA CHEIA!!! impossнvel inserir...");  
            else  
                System.out.println(  
                    stack + ". " + (stack.getCapacity() - stack.getSize()) +   
                    " posiзхes restantes."  
                );  
        }  
        System.out.println();  
          
        System.out.println("Removendo 5 elementos da pilha:");  
        for(int i = 1; i <= 5; i++) {  
            System.out.print("\t" + i + "a. remoзгo: \"" + stack.pop() + "\".");  
            System.out.println(" A pilha agora esta assim: " + stack);  
        }  
        System.out.println();  
          
        System.out.println(  
            "O atual nome no topo da pilha й \"" + stack.peek() + "\"."  
        );  
        System.out.println(  
            "O que? Nгo acredita??? Veja entгo: " + stack  
        );  
        System.out.println("Ora essa...");  
        System.out.println();  
          
        stack.clear();  
        System.out.println("Limpando a pilha: " + stack);  
        System.out.println();  
          
        System.out.print("Consigo tirar mais algo da pilha? ");  
        System.out.println(  
            stack.pop() == null ? "Nгo consigo..." : "Consigo sim!"  
        );  
    }  
}
E isso ? se for tenho mais ou menos uma ideia de como fazer


Re: [Desafio] Estrutura Pilha - WLSF - 03.03.2014

Nгo, isso й um exemplo de uso...

A pilha dele ai jб tб pronta, que й a classe "SimpleStack", й isso que eu pedi no desafio...
Que seja implementado a pilha.


Й mais fбcil do que parece, mas posso imaginar que vгo ter dificuldades porque a maioria aqui nгo manja mesmo de lуgica.


Re: [Desafio] Estrutura Pilha - Marlon_Lorran - 03.03.2014

De uma olhada!!

@Edit Adicionado mйtodo "Size"

Код:
#include <a_samp>

const Maximo    = 40 ;

new __@vetor[Maximo],
    __@tamanho;
    

main() {

    criarPilha();
    
    adicionarPilha(20);
    adicionarPilha(30);
    
    printf("Elemento na pilha: %d\n", elementoNaPilha());

    printf("Elementos na pilha: %d elementos\n", tamanhoPilha());

    retirarPilha();
    printf("Elemento na pilha: %d\n", elementoNaPilha());

    retirarPilha();
    printf("Elemento na pilha: %d\n", elementoNaPilha());
}

stock criarPilha() {

    __@tamanho = 0;
}

stock elementoNaPilha() {

    if(!__@tamanho) {
        print("Pilha estб vazia");
         return -1;
    }
	
    return __@vetor[__@tamanho];
}

stock adicionarPilha(elemento) {

    if(__@tamanho > Maximo)
        print("Pilha estб cheia");
	    
    __@vetor[__@tamanho++] = elemento;
}

stock retirarPilha() {

    if(!__@tamanho)
        print("Pilha estб vazia");
	    
    __@tamanho--;
}

stock tamanhoPilha() {

    return __@tamanho;
}



Re: [Desafio] Estrutura Pilha - WLSF - 03.03.2014

@Marlon

bem bacana cara, fez uma estrutura de dados bastante ъtil jб.
Pra uma pessoa que tem uma boa lуgica pra fazer isso, por que nгo faz releases produtivos desse tipo ?

Sу faltou o mйtodo size...

Abraзos


OBS: se quiser continuar o desafio, pode implementar uma Lista simplesmente encadeada, e fazer a pilha usando ela.


Re: [Desafio] Estrutura Pilha - Marlon_Lorran - 03.03.2014

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
@Marlon

bem bacana cara, fez uma estrutura de dados bastante ъtil jб.
Pra uma pessoa que tem uma boa lуgica pra fazer isso, por que nгo faz releases produtivos desse tipo ?

Sу faltou o mйtodo size...

Abraзos


OBS: se quiser continuar o desafio, pode implementar uma Lista simplesmente encadeada, e fazer a pilha usando ela.
Й por que eu nunca me envolvi muito com forum samp ... mas quem sabe ...

@Topic
Adicionei o mйtodo size

@Outro Desafio
Quem sabe amanhг eu possa estб elaborando este outro desafio ... Ando meio ocupado com minha aplicaзгo que estou desenvolvendo !!

Abraзos


Respuesta: [Desafio] Estrutura Pilha - DanDRT - 03.03.2014

Refazendo.


Re: [Desafio] Estrutura Pilha - WLSF - 03.03.2014

Sua lуgica tб bem furada Dan, hб vбrias formas de gerar erros se tu der isso pra alguйm testar.


@Marlon, seu cуdigo tem um furo tambйm, vocк tб comeзando a adicionar valores no index 1 do vetor ao invйs do 0, e o seu mйtodo de retornar o elemento no topo tб pegando o tamanho-1, logo se tu inserir um valor inserir(10), ele vai inserir o valor na posiзгo 1 do vetor, e quando tu usar elementoPilha() ele vai dar erro, pois vai estar pegando a posiзгo 0 do vetor(que nгo existe/nгo foi preenchida).

O mais correto seria fazer:
pawn Код:
//inserir elemento
__@vetor[__@tamanho++] = valor;



Re: [Desafio] Estrutura Pilha - Dolby - 03.03.2014

Bom, como jб fizeram em Pawn, resolvi dar uma apimentada e fazer em C++, atй porque nгo programo mais Pawn, e atualmente tenho como linguagem foco C++.

Код:
#define max 5

typedef struct{
      int tamanho;
      int item[max];
} pilha;
void iniciar(pilha &pilha)
{
    pilha.item[0] = pilha.tamanho = -1;
}
void push(pilha &p, int n)
{
    ++p.item[++p.tamanho] = n;
}
void pop(pilha &p)
{
    if(p.tamanho != -1) p.item[p.tamanho--] = -1;
}
int top(pilha &p)
{
    return p.item[p.tamanho];
}
int size(pilha &p)
{
    return p.tamanho+1;
}



Re: [Desafio] Estrutura Pilha - WLSF - 03.03.2014

@Gusgato, Ficou meio estranho o seu uso dos ponteiros, espero que o seu 'dar uma apimentada' nгo tenha sido pra deixar o cуdigo ilegнvel.

No mais, bacana vocк estar estudando C++, poderia estar praticando esse tipo de estrutura...