Veja aqui fotos, vídeos, matérias e links que gostei e estou compartilhando com vocês.
Boa leitura!
about.me/marcosatanaka
Marcos Tanaka
Gráfico que mostra a probabilidade de duas pessoas fazerem aniversário no mesmo dia, conforme a quantidade de pessoas aumenta.
Fonte e mais informações (cálculos, rsrs): http://pt.wikipedia.org/wiki/Paradoxo_do_anivers%C3%A1rio
Hoje estava tentando resolver um exercício que diz o seguinte:
Sejam A e B duas listas listas ligadas. Faça um algoritmo que receba A e B e devolva uma lista ligada C, ordenada, contendo os elementos de A e B (obs: tente fazer o exercício varrendo A e B somente uma vez).
Se estivesse trabalhando com vetores, isso seria fácil de fazer, porém, como são listas ligadas, a coisa fica um pouco mais complicada.
Depois de várias tentativas, consegui criar um algoritmo com dois procedimentos: um junta a lista A com a lista B (em uma lista C) e passa essa lista C para o segundo, que a ordena:
Abaixo, temos a ilustração do que está acontecendo com algumas partes importantes do procedimento Junta Listas:
Do mesmo modo, abaixo estão algumas partes importantes do procedimento OrdenaLista:
No término da execução, a lista estará assim:
Uso o Microsoft Visual Basic 2010 Express e essa versão não nos dá a opção de compilar o projeto para rodar em 64 bits. Pesquisando no Visual Studio Developer Center, encontrei uma maneira bem simples de como fazer isso:
- entre no diretório do projeto desejado e encontre o arquivo com a extensão .vbproj (abra-o no bloco de notas);
- dentro da tag <PropertyGroup>, insira a seguinte linha:
<PlatformTarget>x64</PlatformTarget> - salve o arquivo, abra o projeto no Microsoft Visual Basic 2010 Express e mande compilar.
Simples, não? :D
Estou criando um aplicativo que insere em uma ListBox as pastas que estão dentro de uma pasta indicada pelo usuário (será usado para gerar arquivos de configuração dentro de cada pasta). Porém, queria que ele mostrasse nessa ListBox apenas pastas cujo nome tivesse a palavra “Pacotes”.
Antes de inserir no ListBox, tentei comparar uma variável do tipo DirectoryInfo com uma string usando o operador Like, porém sempre recebia mensagens de erro ao executar o programa. Para resolver, adicionei um .Name na variável que era do tipo DirectoryInfo:
Dim di As New DirectoryInfo(FolderBrowserDialog1.SelectedPath)
Dim diArr As DirectoryInfo() = di.GetDirectories()
Dim dri As DirectoryInfo
For Each dri In diArr
If dri.Name Like “Pacotes” Then
ListBox1.Items.Add(dri)
End If
Next dri
Agora o problema é que ele só lista a pasta se o seu nome for exatamente “Pacotes”. Vou verificar o motivo e coloco aqui qual solução encontrei :D
[ATUALIZAÇÃO]
Consegui resolver o problema! Bastou adicionar um * depois de pacotes (“Pacotes*”). Assim o VB ignora tudo o que vêm depois de “Pacotes”, pegando exatamente as pastas que eu quero!
No aplicativo em VB que estou escrevendo, em certo momento leio um arquivo .txt que contém uma palavra em cada linha. A seguir, exibo este conteúdo em um ListBox, onde cada linha será uma opção selecionável. O nome da opção escolhida pelo usuário (que na verdade é o que estava escrito em determinada linha do .txt) será passado para uma função.
O problema que acontecia é que, ao ler a linha do arquivo .txt e adicioná-la no ListBox, adicionei no final de cada linha a propriedade Environment.NewLine, para fazer a quebra de linha:
For Each line As String In System.IO.File.ReadLines(“C:\arquivo.txt”)
ListBox1.Items.Add(line + Environment.NewLine)
Next line
Consequentemente, essa quebra de linha também estava sendo passada para a função, o que ocasionava um erro.
Para resolver, declarei duas variáveis, versao e versaosemcrlf. A primeira armazena o conteúdo da linha selecionada pelo usuário (a opção) e a segunda armazena a mesma coisa, porém removendo o Environment.NewLine:
Dim versao As String
versao = ListBox1.SelectedItem
Dim versaosemcrlf As String
versaosemcrlf = versao.Replace(Environment.NewLine, String.Empty)
Note que substituo o Environment.NewLine por vazio (String.Empty).
Assim, o problema foi resolvido :)


