Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Pilhas

Escreva um programa Java que cria uma classe Pilha usando um array de inteiros como armazenagem interna - Desafio de Programação Resolvido em Java

Quantidade de visualizações: 370 vezes
Pergunta/Tarefa:

Escreva um programa Java que cria uma classe Pilha usando um array de inteiros como armazenagem interna. No construtor da classe você deverá permitir ao usuário informar o tamanho desse vetor interno.

Forneça as funcionalidades padrão de uma pilha, a saber: empilhar um novo elemento, desempilhar o elemento no topo da pilha, retornar o elemento do topo sem removê-lo, exibir o conteúdo da pilha e verificar se ela está ou não vazia.

Sua saída deverá ser parecida com:

Pilha vazia: true
Inseri os valores 3, 6 e 8 na pilha, nessa ordem
Elementos na pilha: 8 6 3 
Topo da pilha: 8
Elemento desempilhado: 8
Elementos na pilha: 6 3
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

Primeiro vamos analisar o código para a classe Pilha.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Pilha {
  private int vetor[]; // vetor que guarda os elementos da pilha
  private int topo; // elemento no topo da pilha

  // construtor da classe
  public Pilha(int tamanho) {
    // alocamos memória para o vetor interno da pilha
    vetor = new int[tamanho];
    // e ajustamos o topo como vazia
    topo = -1;
  }

  // método para empilhar um novo valor na pilha
  public void empilhar(int valor) {
    // a pilha já está cheia?
    if (topo == vetor.length - 1) {
      System.out.println("\nA pilha está cheia\n");
    } 
    else {
      // incrementa o ponteiro do topo
      topo++;
      // e guarda o novo valor no topo da pilha
      vetor[topo] = valor;
    }
  }

  // método para desempilhar e retornar o elemento
  // no topo da plha
  public int desempilhar() {
    // a pilha está vazia?
    if (topo == -1) {
      System.out.println("\nPilha vazia\n");
      return -1;
    } 
    else {
      // obtém o elemento no topo da pilha
      int elementoRemovido = vetor[topo];
      // decrementa a variável de topo
      topo--;
      // e retorna o elemento removido
      return elementoRemovido;
    }
  }

  // retorna o elemento no topo da pilha sem
  // removê-lo
  public int topoPilha() {
    // a pilha está vazia?
    if (topo == -1) {
      System.out.println("\nPilha vazia\n");
      return -1;
    } 
    else {
      // retorna o elemento no topo, mas não remove
      return vetor[topo];
    }
  }

  // método para verificar se a pilha está vazia
  public boolean pilhaVaiza() {
    return topo == -1;
  }

  // exibe os elementos na pilha
  public void exibirPilha() {
    // a pilha está vazia?
    if (topo == -1) {
      System.out.println("\nPilha vazia\n");
    }
    else {
      System.out.print("Elementos na pilha: ");
      for (int i = topo; i >= 0; i--) {
        System.out.print(vetor[i] + " ");
      }
      System.out.println();
    }
  }
}

Agora veja o código para a classe Estudos.java, que nos permite testar a nossa classe Pilha:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // Vamos criar uma nova pilha
    Pilha pilha = new Pilha(10);
    
    // a pilha está vazia?
    System.out.println("Pilha vazia: " + pilha.pilhaVaiza());
    
    // vamos inserir 3 elementos na pilha
    System.out.println("Inseri os valores 3, 6 e 8 na pilha, nessa ordem");
    pilha.empilhar(3);
    pilha.empilhar(6);
    pilha.empilhar(8);
    
    // vamos exibir o conteúdo da pilha
    pilha.exibirPilha();
    
    // vamos mostrar o topo da pilha
    System.out.println("Topo da pilha: " + pilha.topoPilha());
    
    // vamos desempilhar um elemento da pilha
    System.out.println("Elemento desempilhado: " + pilha.desempilhar());
    
    // vamos exibir o conteúdo da pilha novamente
    pilha.exibirPilha();
  }
}


Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico

Exercícios Resolvidos de Java - Escreva um programa Java para calcular e imprimir o número de lâmpadas necessárias

Quantidade de visualizações: 295 vezes
Pergunta/Tarefa:

Escreva um programa Java para calcular e imprimir o número de lâmpadas necessárias para iluminar um determinado cômodo de uma residência. Dados de entrada: a potência da lâmpada utilizada (em watts), as dimensões (largura e comprimento, em metros) do cômodo. Considere que a potência necessária é de 18 watts por metro quadrado.

Sua saída deverá ser parecida com:

Informe a potência da lâmpada (em watts): 100
Informe a largura do cômodo (em metros): 6
Informe o comprimento do cômodo (em metros): 4
Serão necessárias 4 lâmpadas.
Resposta/Solução:

Veja a resolução completa para o exercício em Java, comentada linha a linha:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// Como calcular o número de lâmpadas necessárias
package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // variáveis usadas na resolução do problema
    double potencia_lampada, largura_comodo, comprimento_comodo;
    double area_comodo, potencia_total;
    int quant_lampadas;

    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler a potência da lâmpada
    System.out.print("Informe a potência da lâmpada (em watts): ");
    potencia_lampada = Double.parseDouble(entrada.nextLine());

    // vamos ler a largura do cômodo
    System.out.print("Informe a largura do cômodo (em metros): ");
    largura_comodo = Double.parseDouble(entrada.nextLine());

    // agora vamos ler o comprimento do cômodo  
    System.out.print("Informe o comprimento do cômodo (em metros): ");
    comprimento_comodo = Double.parseDouble(entrada.nextLine());

    // agora vamos calcular a área do cômodo
    area_comodo = largura_comodo * comprimento_comodo;

    // calculamos a potência total necessária para iluminar
    // todo o cômodo
    potencia_total = area_comodo * 18;

    // e finalmente calculamos a quantidade de lâmpadas necessárias
    quant_lampadas = (int)(potencia_total / potencia_lampada);

    // será necessário no mínimo uma lâmpada
    if (quant_lampadas == 0) {
      quant_lampadas = quant_lampadas + 1;
    }

    // e mostramos o resultado  
    System.out.println("Serão necessárias " + quant_lampadas +
      " lâmpadas.");
  }
}



Java ::: Coleções (Collections) ::: Vector

Como copiar todos os elementos de um Vector Java para um array

Quantidade de visualizações: 7949 vezes
Muitas vezes precisamos obter um array a partir de um Vector. Isso pode ser feito usando-se o método copyInto(). Veja sua assinatura:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public void copyInto(Object[] anArray)

Veja que os elementos do Vector são copiados para as mesmas posições no array. Assim, precisamos ficar atentos. Aqui podemos ter três exceções: NullPointerException (se o array fornecido como argumento for null), IndexOutOfBoundsException (se o array fornecido não for grande o suficiente para acomodar todos os elementos do array) e ArrayStoreException (se o tipo dos elementos do Vector não for de um tipo que pode ser armazenado no array fornecido como argumento).

O trecho de código abaixo mostra como copiar todos os elementos de um Vector de String para um array de String:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.*;

public class Estudos{ 
  public static void main(String args[]){ 
    // Cria o Vector
    Vector<String> nomes = new Vector<String>();

    // adiciona itens ao Vector
    nomes.addElement("Osmar");
    nomes.addElement("Marcos");
    nomes.addElement("Ingrid");

    // Cria o array
    String[] arrayNomes = new String[3];

    // copia os elementos do Vector para o array
    nomes.copyInto(arrayNomes);

    // Exibe o conteúdo do array
    for(int i = 0; i < arrayNomes.length; i++){
      System.out.println(arrayNomes[i]); 
    }     
  } 
}

Ao executar este código Java nós teremos o seguinte resultado:

Osmar
Marcos
Ingrid


Java ::: Dicas & Truques ::: Arquivos e Diretórios

Como listar todo o conteúdo de um diretório usando a função listFiles() da classe File do Java

Quantidade de visualizações: 17308 vezes
Nesta dica mostrarei como podemos usar o método listFiles() da classe File da linguagem Java para listar todo o conteúdo de um diretório. Note que usei os métodos isFile() e isDirectory(), também da classe File, para indicar se o item que está sendo lido é um arquivo ou diretório.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.io.*;
 
public class Estudos{
  public static void main(String[] args){
    // nome e caminho do diretório     
    File diretorio = new File("C:\\estudos_c"); 
    // um vetor de arquivos
    File[] arquivos = diretorio.listFiles(); 
   
    // foram encontrados arquivos ou diretórios?
    if(arquivos != null){ 
      // obtemos a quantidade de arquivos
      int length = arquivos.length; 
   
      // e percorremos os arquivos individualmente
      for(int i = 0; i < length; ++i){ 
        File f = arquivos[i]; 
             
        // é um arquivo?
        if(f.isFile()){ 
          System.out.println(f.getName()); 
        } 
        else if(f.isDirectory()){ // é um diretório 
          System.out.println("Diretorio: " + f.getName()); 
        } 
      } 
    }     
  }
}

Ao executar este código Java nós teremos um resultado parecido com:

DICA.txt
Diretorio: estudos
Estudos_C.dev
Estudos_C.exe
Estudos_C.layout
main.c
main.o
Makefile.win


Vamos testar seus conhecimentos em Ética e Legislação Profissional

Ética profissional, social, política

Várias profissões, principalmente aquelas que implicam os direitos humanos à vida, à justiça, à igualdade, seguem códigos de ética que são frutos precisamente da ética deontológica normativa: "um código de ética não poderá cobrir todas as situações que se levantam à medida que uma disciplina expande e tenta encontrar as necessidades em mudança de um tipo de serviço entre as pessoas na sociedade" (BLACKWELL et al. apud DIAS, 2008, p. 54).

De acordo com o trecho citado, assinale a alternativa correta:

A) A deontologia presume um código de ética universal para todas as profissões.

B) A deontologia abre espaços para que o profissional possa agir arbitrariamente.

C) A deontologia recusa mudanças em seus códigos de ética.

D) A deontologia serve como um guia reflexivo que orienta mesmo em situações inusitadas.

E) A deontologia responsabiliza o profissional pelas consequências de todo agir.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual é a forma correta de se declarar uma variável do tipo inteiro em Python?

A) valor = int(20)

B) valor = 20

C) As formas A e B estão corretas

D) valor = integer(20)

E) As formas B e D estão corretas
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Turbinas hidráulicas

Turbinas hidráulicas têm como principal aplicação a geração de energia, transformando energia cinética da água em energia mecânica, que será posteriormente convertida em energia elétrica.

Sobre as turbinas hidráulicas, marque a alternativa correta:

A) Uma turbina do tipo Francis apresenta uma baixa eficiência e pode ser operada apenas em baixas vazões.

B) Uma turbina do tipo Francis tem eficiência relativamente baixa, porém tem ampla faixa de operação.

C) A turbina do tipo Pelton tem um conjunto de pás fixas que podem ajustar o ângulo de entrada da água.

D) A turbina do tipo Kaplan foi adaptada a partir da turbina de hélice e pode ser operada em grandes vazões.

E) Uma turbina do tipo Pelton tem suas pás em formato de conchas e são operadas em grandes vazões.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Perda de carga

Perda de carga é a energia dissipada em forma de calor devido ao atrito e à viscosidade em uma canalização.

Nesse sentido, a perda de carga unitária em um tubo de 50mm de diâmetro, coeficiente de atrito de 0,031 e comprimento de 100m, sendo que a água escoa com vazão de 0,01 m3/s, é de:

A) 0,47m/m.

B) 0,52m/m.

C) 0,74m/m.

D) 0,82m/m.

E) 0,94m/m.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Água Fria: Reservatórios

O consumo diário de uma edificação pode variar de acordo com diversos fatores. Sobre as considerações relacionadas ao consumo diário e capacidade de reservatório de uma edificação é correto afirmar:

A) O consumo per capita é o consumo da edificação a ser considerado no dimensionamento do reservatório.

B) A capacidade de um reservatório deve ser calculada pelo tamanho da edificação, independentemente da taxa de ocupação.

C) A NBR 5.626 orienta que a capacidade do reservatório deve ficar entre 1 e 3 o consumo diário da edificação.

D) O consumo per capita não varia com as condições socioeconômicas, mas sim com o clima do local.

E) As reservas extras já estão incluídas no consumo total da edificação quando calculada em função do consumo per capita e da taxa de ocupação.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 64 usuários muito felizes estudando em nosso site.