Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 05/27/2012 in all areas

  1. Olha que a agregação de blocos de memória alocada dinamicamente reduz o consumo de memória do sistema pois cada bloco individual precisa de alguma campos escondidos para a implementação do alocador de memória. Se fizeres 100000 chamadas à malloc para 1000 bytes cada e medires a memória do SO disponível e a comparares com uma única chamada para 100000000 bytes verás que a memória disponível será um pouco maior no segundo caso. Se queres dizer que o código será mais complexo também não me parece. Em vez de : obj = malloc(sizeof(estrutura)); obj->nome = malloc(strlen(nome_passado) + 1); obj->morada = malloc(strlen(morada_passada) + 1); obj->localidade = malloc(strlen(localidade_passada) + 1); se fizeres obj = malloc(sizeof(estrutura) + (strlen(nome_passado) + 1) + (strlen(morada_passada) + 1) + strlen(localidade_passada) + 1); obj->nome = (char *)obj + sizeof(estrutura); obj->morada = (char *)(obj->nome) + (strlen(nome_passado) + 1); obj->localidade = (char *)(obj->morada) + (strlen(morada_passada) + 1); qual achas que executará mais depressa e consumirá menos memória ? Já para não falar numa possível melhor localidade dos dados, o que ajuda imenso os caches do CPU.
    1 point
  2. import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; ... public static String string2md5(String senha) throws NoSuchAlgorithmException { String sen = ""; MessageDigest md = null; md = MessageDigest.getInstance("MD5"); BigInteger hash = new BigInteger(1, md.digest(senha.getBytes())); return sen; } Experimenta assim. Funcionou 5* no meu caso.
    1 point
  3. Uma ajuda: Há uma coisa de errado nessa linha que o compilador, se corretamente configurado, avisa.
    1 point
  4. Esquece a matriz e resolve o problema para o caso do array. Uma matriz é só um conjunto de arrays, ou seja, para generalizar de array para matriz é só aplicar a mesma solução várias vezes. Podes percorrer o array do início para o fim. Gravar a posição da primeira letra que encontres. Avançar no array enquanto a letra na posição seguinte for igual à primeira letra; quando as letras forem diferentes possivelmente encontraste uma sequência. Podes eliminar tudo o que estiver entre a posição inicial e a final desde que a posição inicial seja diferente da final. Depois de eliminar, a letra seguinte passa a ser a nova primeira letra e o ciclo repete-se.
    1 point
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.