C# ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C# - Criando dois vetores de inteiros de forma que a soma dos elementos individuais de cada vetor seja igual a 30Quantidade de visualizações: 486 vezes |
|
Pergunta/Tarefa: Considere os seguintes vetores:
// dois vetores de 5 inteiros cada
int[] a = { 50, -2, 9, 5, 17 };
int[] b = new int[5];
Sua saída deverá ser parecida com: Valores no vetor a: 50 -2 9 5 17 Valores no vetor b: -20 32 21 25 13 Veja a resolução comentada deste exercício usando C#:
using System;
namespace Estudos {
class Principal {
// função principal do programa C#
static void Main(string[] args) {
// dois vetores de 5 inteiros cada
int[] a = { 50, -2, 9, 5, 17 };
int[] b = new int[5];
// vamos preencher o segundo vetor de forma que a soma dos
// valores de seus elementos seja 30
for (int i = 0; i < b.Length; i++) {
b[i] = 30 - a[i];
}
// vamos mostrar o resultado
Console.Write("Valores no vetor a: ");
for (int i = 0; i < a.Length; i++) {
Console.Write(a[i] + " ");
}
Console.Write("\nValores no vetor b: ");
for (int i = 0; i < b.Length; i++) {
Console.Write(b[i] + " ");
}
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
|
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca |
Exercícios Resolvidos de Java - Travessia de uma árvore binária de busca usando o percurso em-ordem (in-order, In-ordem ou ordem simétrica)Quantidade de visualizações: 2976 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 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
// construtor do nó
public NoArvore(int valor){
this.valor = valor;
}
}
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;
}
else{
return false; // um nó com este valor foi encontrado
}
}
// cria o novo nó e o adiciona ao nó pai
if(valor < pai.valor){
pai.esquerdo = new NoArvore(valor);
}
else{
pai.direito = new NoArvore(valor);
}
}
return true; // retorna true para indicar que o novo nó
// foi inserido
}
// método que permite disparar a travessia em-ordem
public void emOrdem(){
emOrdem(raiz);
}
// sobrecarga do método emOrdem com uma parâmetro (esta é a
// versão recursiva do método)
private void emOrdem(NoArvore raiz){
if(raiz == null){ // condição de parada
return;
}
// visita a sub-árvore da esquerda
emOrdem(raiz.esquerdo);
// visita o nó atual
System.out.print(raiz.valor + " ");
// visita a sub-árvore da direita
emOrdem(raiz.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());
// vamos inserir o nó e verificar o sucesso da operação
if(!arvore.inserir(valor)){
System.out.println("Erro. Um elemento já contém este valor.");
}
}
// vamos exibir os nós da árvore usando o percurso em ordem
System.out.println("\nPercurso em ordem:");
arvore.emOrdem();
System.out.println("\n");
}
}
|
Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout |
Como usar o gerenciador de layout GridBagLayout em suas aplicações Java SwingQuantidade de visualizações: 12924 vezes |
O gerenciador de layout GridBagLayout é um dos mais complexos e mais flexíveis. Embora possa parecer, esta classe não é uma sub-classe de GridLayout, como mostra sua posição na hierarquia de classes Java:java.lang.Object java.awt.GridBagLayout Esta classe implementa as interfaces LayoutManager, LayoutManager2 e Serializable. A vantagem do gerenciador de layout GridBagLayout em relação ao GridLayout, é que, com o GridBagLayout nós podemos fazer com que os componentes nas linhas e colunas possam ter diferentes tamanhos e às vezes ocupar múltiplas linhas e colunas. O trecho de código abaixo mostra a forma mais simples de se criar um GridBagLayout. Veja que os botões são arranjados de forma horizontal na janela. É claro que sem os ajustes necessários, não tiramos muito proveito do uso deste gerenciador (mas isso será visto em outras dicas dessa seção):
import javax.swing.*;
import java.awt.*;
public class Estudos extends JFrame{
public Estudos(){
super("Como usar a classe GridBagLayout");
// define o layout
setLayout(new GridBagLayout());
// adiciona componentes à janela
add(new JButton("Botão 1"));
add(new JButton("Botão 2"));
add(new JButton("Botão 3"));
add(new JButton("Botão 4"));
setSize(350, 150);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Ao executar este código Java Swing nós teremos o seguinte resultado: ![]() |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Vetores e Matrizes - Exercícios Resolvidos de C - Declarar um vetor de 10 elementos, usar um laço for para inicializar os elementos e exibí-los na verticalQuantidade de visualizações: 15563 vezes |
|
Vetores e Matrizes - Exercício Resolvido de C - Declarar um vetor de 10 elementos, usar um laço for para inicializar os elementos e exibí-los na vertical Pergunta/Tarefa: Escreva um programa C que declara um vetor de 10 elementos do tipo int. Em seguida use um laço for para inicializar os elementos com os valores de 1 até 10. Para finalizar exiba os valores dos elementos da matriz na vertical. Seu programa deverá exibir a seguinte saída: 1 2 3 4 5 6 7 8 9 10 Resposta/Solução: A resolução desta tarefa passa pela declaração da matriz. Veja como isso pode ser feito: // vamos declarar uma matriz de 10 ints // neste momento seus elementos terão, todos, // valores aleatórios int valores[10]; Veja a resolução completa do exercício:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// vamos declarar uma matriz de 10 ints
// neste momento seus elementos terão, todos,
// valores aleatórios
int valores[10];
int i;
// vamos usar o laço for para inicializar seus elementos
// com os valores de 1 até 10
for(i = 0; i < 10; i++){
// aqui nós usamos o valor da variável i para acessar o
// elemento da matriz e também para atribuir o valor de i + 1
// ao elemento sendo acessado
valores[i] = (i + 1);
}
// só nos resta exibir os valores de todos os elementos
for(i = 0; i < 10; i++){
printf("%d\n", valores[i]);
}
system("PAUSE");
return 0;
}
|
Nossas 20 dicas & truques de programação mais populares |
|
Revit C# - Como criar eixos no Revit via programação usando a função Create() da classe Grid da Revit C# API Android Java - Como usar o método startActivity() da classe Activity ou AppCompatActivity do Android para mudar de telas |
Você também poderá gostar das dicas e truques de programação abaixo |
|
C# - Como excluir todos os itens selecionados em uma ListBox de múltipla seleção do C# Windows Forms C# - C# Windows Forms para iniciantes - Como limpar todo o conteúdo de um controle TextBox via código Java - Como inserir uma substring em uma string em Java usando o método insert() da classe StringBuffer |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





