Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como resolver o problema da Subsequência de Soma Máxima em Java usando o Algorítmo de KadaneQuantidade de visualizações: 825 vezes |
|
Pergunta/Tarefa: O problema do Subvetor Contíguo de Soma Máxima, ou Subarray ou Subsequência de Soma Máxima é um dos algorítmos mais populares na programação dinâmica. Este problema envolve encontrar um subvetor, ou seja, um sub-array contíguo de maior soma possível. Por contíguo entendemos que os elementos da subsequência deverão estar consecutivos no vetor original. O Algorítmo de Kadane, inventado por Jay Kadane em 1977, é um dos favoritos para a resolução deste problema, e deverá ser aplicado na resolução deste exercício. Dado o vetor [-2, 1, -3, 4, -1, 2, 1, -5, 4], encontre a soma máxima da subsequência contígua. Não é exigido mostrar os elementos da sub-sequência, apenas o valor da soma máxima. Sua saída deverá ser parecida com: A soma maxima é: 6 Veja a resolução comentada deste exercício usando Java:
package estudos;
public class Estudos {
public static void main(String[] args) {
// vamos criar um array com 9 elementos
int valores[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
// agora usamos o algoritmo de Kadane para encontrar
// a maior soma consecutiva
int soma_maxima = kadane(valores);
System.out.println("A soma maxima é: " + soma_maxima);
}
// método que recebe um array e usa o algoritmo de Kadane
// para retornar a maior soma consecutiva
public static int kadane(int vetor[]){
// ajustamos max_atual para 0 e max_total para -1
int max_atual = 0, max_total = -1;
// um laço for que percorre todos os elementos do
// vetor, do primeiro até o último
for(int i = 0; i < vetor.length; i++){
// max_atual recebe ele mesmo mais o valor
// do elemento no índice i
max_atual = max_atual + vetor[i];
// se max_atual for negativo nós o ajustamos
// para zero novamente
if(max_atual < 0){
max_atual = 0;
}
// se max_atual for maior que max_total então
// max_total recebe o valor de max_atual
if(max_atual > max_total){
max_total = max_atual;
}
}
// e retornamos a soma máxima
return max_total;
}
}
|
C# ::: Coleções (Collections) ::: ArrayList |
Como escrever um método C# que retorna uma ArrayListQuantidade de visualizações: 17631 vezes |
|
Estudantes C# ficam um pouco confusos quando solicitados a escrever funções que retornam objetos de classes. E essa confusão é maior ainda quando precisam retornar uma ArrayList, mais precisamente um objeto da classe ArrayList. Esta dica mostra como isso pode ser feito. Veja que temos um método que define, em sua assinatura, que o tipo de retorno não é void (sem retorno) mas sim um objeto da classe ArrayList. No corpo deste método temos a criação da ArrayList propriamente dita, a adição de cinco inteiros e finalmente o uso da palavra-chave return para retornar o ArrayList já preenchido ao chamador do método. Note que o método Main é responsável por efetuar uma chamada ao método, obter o ArrayList resultante e em seguida usar o laço foreach para exibir seus valores:
// método que retornará uma ArrayList
static ArrayList obterLista(){
// Cria o ArrayList
ArrayList lista = new ArrayList();
// Adiciona 5 inteiros
lista.Add(1);
lista.Add(2);
lista.Add(3);
lista.Add(4);
lista.Add(5);
// retorna o ArrayList preenchido
return lista;
}
static void Main(string[] args){
// obtém um ArrayList preenchido a partir do
// método obterLista
ArrayList mLista = obterLista();
// exibe os valores do ArrayList
foreach (int valor in mLista){
Console.Write("{0} ", valor);
}
// pausa o programa
Console.ReadKey();
}
|
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercícios Resolvidos de Python - Um programa que lê a altura e o sexo de uma pessoa e informa seu peso idealQuantidade de visualizações: 4431 vezes |
|
Pergunta/Tarefa: Escreva um programa Python que recebe a altura (como float) e o sexo (como uma string) de uma pessoa e que calcule e mostre o seu peso ideal. A fórmula a ser utilizada é: Homens: (72.7 x altura) - 58; Mulheres: (62.1 x altura) - 44.7 Sua saída deverá ser parecida com: Informe sua altura (ex: 1.74): 1.65 Informe o sexo (M ou F): M Seu peso ideal é: 61.955 Veja a resolução comentada deste exercício usando Python console:
# método principal
def main():
# vamos solicitar a altura e o sexo da pessoa
altura = float(input("Informe sua altura (ex: 1.74): "))
sexo = input("Informe o sexo (M ou F): ")
# vamos testar o sexo da pessoa
if(sexo == "M") or (sexo == "m"): # masculino
peso_ideal = (72.7 * altura) - 58
else: # feminino
peso_ideal = (62.1 * altura) - 44.7
# vamos mostrar o resultado
print("Seu peso ideal é: {0}".format(peso_ideal))
if __name__== "__main__":
main()
|
C# ::: Dicas & Truques ::: Arquivos e Diretórios |
Como usar a classe FileSystemWatcher em seus programas C#Quantidade de visualizações: 9054 vezes |
|
Podemos usar objetos da classe FileSystemWatcher quando queremos monitorar mudanças em um determinado diretório do sistema. Estas alterações podem ser observadas em arquivos e subdiretórios do diretório especificado. Usando objetos desta classe nós podemos monitorar modificações em arquivos no computador local, em um drive na rede ou em um computador remoto. Veja a posição desta classe na hierarquia de classes da plataforma .NET:
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.IO.FileSystemWatcher
Para adicionar um componente FileSystemWatcher em sua aplicação C# basta localizá-lo na seção Components da Toolbox. Em seguida clique no mesmo e arraste-o para o formulário. Para definir o diretório a ser monitorado, clique no componente, acesse suas propriedades e defina o caminho do diretório na propriedade Path. Um exemplo de diretório poderia ser "C:\arquivo de codigos". Neste exemplo veremos como detectar alterações nos arquivos e sub-diretórios. Desta forma, vá nos eventos do componente FileSystemWatcher e insira o código abaixo para o evento Changed:
private void fileSystemWatcher1_Changed(object sender,
FileSystemEventArgs e){
// vamos verificar o que foi modificado neste diretório
textBox1.AppendText("Arquivo: " + e.FullPath + " sofreu alterações: " +
e.ChangeType + Environment.NewLine);
}
Execute a aplicação e experimente criar um arquivo txt no diretório "C:\arquivo de códigos" e modificar seu conteúdo várias vezes. Volte à aplicação e a caixa de texto terá um conteúdo parecido com: Arquivo: C:\arquivo de codigos\dados2.txt sofreu alterações: Changed Arquivo: C:\arquivo de codigos\dados2.txt sofreu alterações: Changed |
Nossas 20 dicas & truques de programação mais populares |
|
PHP - Manipulação de texto em PHP - Como acessar e modificar os caracteres individuais de uma string Delphi - Como obter o número do registro atual em um TClientDataSet do Delphi usando a propriedade RecNo |
Você também poderá gostar das dicas e truques de programação abaixo |
|
C - Como escrever uma função C personalizada que copia os caracteres de uma string para outra string C - Como calcular a massa de um corpo dada sua energia cinética e sua velocidade usando a linguagem C Java Servlets - Como compartilhar dados entre um Java Servlet e uma página JSP usando a requisição HttpServletRequest |
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 |




