Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca

Travessia de uma árvore binária de busca usando o percurso em-ordem (in-order, In-ordem ou ordem simétrica) - Exercícios Resolvidos de Java

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

O percurso em ordem (em-ordem, in-order, In-ordem ou ordem simétrica) é usado quando queremos exibir os valores dos nós da árvore binária de busca em ordem ascendente.

Neste tipo de percurso nós visitamos primeiramente a sub-árvore da esquerda, então o nó atual e finalmente a sub-árvore à direita do nó atual. É importante notar que esta travessia é feita por meio de uma função recursiva.

Escreva um programa Java que contenha uma árvore binária de busca cujos nós guardarão, além das referências para o filho esquerdo e o filho direito, apenas um valor inteiro. Forneça uma função inserir() que permitirá inserir os valores na árvore. Em seguida forneça uma função recursiva que permitirá fazer a travessia in-order da árvore.

Sua saída deverá ser parecida com:

Informe um valor inteiro: 7
Informe um valor inteiro: 3
Informe um valor inteiro: 18
Informe um valor inteiro: 4
Informe um valor inteiro: 9

Percurso em ordem:
3 4 7 9 18
Resposta/Solução:

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

Código para NoArvore.java:

package estudos;

public class NoArvore {
  int valor; // valor armazenado no nó
  NoArvore esquerdo; // filho esquerdo
  NoArvore direito; // filho direito
......


Código para ArvoreBinariaBusca.java:

package estudos;

public class ArvoreBinariaBusca {
  private NoArvore raiz; // referência para a raiz da árvore
  
  // método usado para inserir um novo nó na árvore
  // retorna true se o nó for inserido com sucesso e false
  // se o elemento não puder ser inserido (no caso de já
  // existir um elemento igual)
  public boolean inserir(int valor){
    // a árvore ainda está vazia?
    if(raiz == null){
      // vamos criar o primeiro nó e definí-lo como a raiz da árvore
      raiz = new NoArvore(valor); // cria um novo nó
    }
    else{
      // localiza o nó pai
      NoArvore pai = null;
      NoArvore noAtual = raiz; // começa a busca pela raiz
 
      // enquanto o nó atual for diferente de null
      while(noAtual != null){
        if(valor < noAtual.valor) {
          pai = noAtual;
          noAtual = noAtual.esquerdo;
        }
        else if(valor > noAtual.valor){
          pai = noAtual;
          noAtual = noAtual.direito;
        }
......


E aqui está o código para a classe que permite testar a árvore:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
      
    // vamos criar um novo objeto da classe ArvoreBinariaBusca
    ArvoreBinariaBusca arvore = new ArvoreBinariaBusca();
   
    // vamos inserir 5 valores na árvore
    for(int i = 0; i < 5; i++){
      System.out.print("Informe um valor inteiro: ");
      int valor = Integer.parseInt(entrada.nextLine());
......


Link para compartilhar na Internet ou com seus amigos:

C++ ::: Dicas & Truques ::: Strings e Caracteres

Como retornar o tamanho de uma string em C++ usando a função size()

Quantidade de visualizações: 7647 vezes
Nesta dica mostrarei como podemos obter a quantidade de caracteres de uma string em C++ usando a função size() da classe string. Esta função não exige nenhum argumento e retorna um número inteiro contendo a quantidade de caracteres na string.

Veja o código C++ completo para o exemplo:

#include <string>
#include <iostream>
 
using namespace std;
 
// função principal do programa C++ 
int main(int argc, char *argv[]){
  // vamos declarar um objeto string
  string frase = "Gosto de C++";
 
  // vamos obter o tamanho da string
  size_t tamanho = frase.size();
......


Ao executarmos este código C++ nós teremos o seguinte resultado:

A frase possui 12 caracteres.


PHP ::: Dicas & Truques ::: Matemática e Estatística

Como calcular juros simples e montante usando PHP

Quantidade de visualizações: 11381 vezes
O regime de juros será simples quando o percentual de juros incidir apenas sobre o valor principal. Sobre os juros gerados a cada período não incidirão novos juros. Valor Principal ou simplesmente principal é o valor inicial emprestado ou aplicado, antes de somarmos os juros. Transformando em fórmula temos:

J = P . i . n

Onde:

J = juros
P = principal (capital)
i = taxa de juros
n = número de períodos

Imaginemos uma dívida de R$ 2.000,00 que deverá ser paga com juros de 5% a.m. pelo regime de juros simples e o prazo para o pagamento é de 2 meses. O cálculo em PHP pode ser feito assim:

<?php
  $principal = 2000.00;
  $taxa = 0.08; // 8%
  $meses = 2;
  
  $juros = $principal * $taxa * $meses;
......


O montante da dívida pode ser obtido das seguintes formas:

a) Montante = Principal + Juros
b) Montante = Principal + (Principal x Taxa de juros x Número de
períodos)


M = P . (1 + (i . n))

Veja o código:

<?php
  $principal = 2000.00;
  $taxa = 0.08; // 8%
  $meses = 2;
  
  $juros = $principal * $taxa * $meses;
  $montante = $principal * (1 + ($taxa * $meses));
......



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

Como escrever em um arquivo texto usando as funções Write() e WriteLn() do Delphi

Quantidade de visualizações: 27943 vezes
Não há como fugir. Cedo ou tarde precisaremos escrever em um arquivo texto usando Delphi. E esta dica foi escrita com o propósito de facilitar esta tarefa.

O primeiro passo para se escrever em um arquivo texto usando Delphi é declarar uma variável do tipo TextFile. Em seguida usamos a procedure AssignFile() para associar a variável TextFile ao arquivo em disco.

Como queremos escrever conteúdo novo no arquivo, a função Rewrite() pode ser usada. Esta função cria o arquivo em disco se este ainda não existir. Se o mesmo existir, ele é excluído e a função cria outro com o mesmo nome. E, para escrever conteúdo no arquivo texto, usamos as funções Write() e WriteLn(). A primeira escreve no arquivo enquanto a segunda escreve no arquivo e adiciona o marcador de quebra de linha.

Veja o exemplo para um melhor entendimento:

procedure TForm1.Button1Click(Sender: TObject);
var
  arquivo: TextFile;
begin
  // vamos fazer uma ligação entre a variável arquivo e o
  // arquivo que queremos manipular
  AssignFile(arquivo, 'C:\arquivo de codigos\dados.txt');

  // vamos abrir o arquivo ou criar um novo
  Rewrite(arquivo);

  // vamos escrever no arquivo agora
......



Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


C# ::: Dicas & Truques ::: Strings e Caracteres

Como transformar em letra maiúscula apenas a primeira letra de uma string C#

Quantidade de visualizações: 22374 vezes
Nesta dica mostrarei como é possível combinar o método ToUpper() da classe Char e o método Substring() da classe String do C# para converter para letra maiúscula apenas a primeira letra de uma palavra, frase ou texto.

Veja o código completo para o exemplo:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      string frase = "gosto de java e c#";
      Console.WriteLine("Original: " + frase);

      // vamos obter a primeira letra da string
      char primeira = char.ToUpper(frase[0]);
......


Ao executarmos este código C# nós teremos o seguinte resultado:

Original: gosto de java e c#
Resultado: Gosto de java e c#


Dart ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercício Resolvido de Dart - Como testar se um ano é bissexto em Dart - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou não

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

Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano. O último ano bissexto foi 2012 e o próximo será 2016.

Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400.

Escreva um programa Dart que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não.

Sua saída deverá ser parecida com:

Informe o ano: 2024
O ano informado é bissexto.
Resposta/Solução:

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

// Vamos importar a biblioteca dart:io
import "dart:io";

void main(){
  // vamos solicitar que o usuário informe um ano
  stdout.write("Informe o ano: ");
  int ano = int.parse(stdin.readLineSync());  
  
  // vamos verificar se o ano informado é bissexto
......



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Dart

Veja mais Dicas e truques de Dart

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

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á 13 usuários muito felizes estudando em nosso site.