Shivans 0 Denunciar post Postado Maio 22, 2007 como eu vo faze isso galera... alguem pode me ajudar??? Projeto e Desenvolvimento de Sistemas Corporativos Disciplina: Introdução em Desenvolvimento de Sistemas Professor: Welington Nunes Siemiatkowski Desafio 1 - Java Faça um programa em Java para solucionar o seguinte problema: A partir de algumas letras digitadas pelo usuário, verificar no banco de dados do sistema quais as possíveis palavras que podem ser formadas. Para isso, crie um vetor com 6 posições e guarde nele cada letra digitada pelo usuário. Após isso, verifique no banco de dado abaixo, qual das seguintes palavras podem ser formadas. Para o banco de dados, crie vetores com as seguintes palavras: SABADO, LETIVO, MELHOR, BANCOS, PARTIR, MAXIMO, MINIMO, LETRAS, LISTAR, ICONES, PASTAS, PASTEL, EDITAL, AVISOS, ALUNOS, EDITAR, EXIBIR, LIMPAR, JANELA, SALVAR Quando encontrar a(s) palavra(s) que corresponde(m) as letras digitadas, informe ao usuário. Caso não encontre nenhuma, mostre a mensagem “Não existe uma palavra correspondente no banco de dados”. Esse desafio deve ser apresentado no dia 25/05/2007. Compartilhar este post Link para o post Compartilhar em outros sites
Rafael D 0 Denunciar post Postado Maio 22, 2007 Tipo, o cara digita 6 letras em qualquer ordem, e você tem que ver as 6 letras formam uma ou mais palavras que estão no banco de dados é isso?Se for, eu não sei a implementação do algortimo, mas acho que você consegue resolver esse problema usando anagramas. Não lembro exatamente se o caso é de combinação ou permutação, mas com um algoritmo de anagramas você resolve esse problema. Você mexe no vetor e ve se formou uma palavra, se não formou você mexe de novo e ve se formou uma palavra do banco de dados. Faça isso até ter tentando todas as combinações possíveis das letras.Não sei se a lógica é a mais eficiente, mas ela resolve o caso. Agora o algoritmo em si eu vo ficar devendo...Flws! Compartilhar este post Link para o post Compartilhar em outros sites
Shivans 0 Denunciar post Postado Maio 22, 2007 po valew cara ja kebro um galhao... mais ainda sim continuo esperando mais sugestoes!!!abraco!!! Compartilhar este post Link para o post Compartilhar em outros sites
Rafael D 0 Denunciar post Postado Maio 23, 2007 Bem, se você escolher seguir o caminho dos anagramas, http://www.unicamp.br/~hans/mc102/java/alg...permutacao.html tem uma classe java que faz permutação. Não testei ela, mas provavelmente ela funciona, de qualquer maneira ela deve dar uma ajuda para conseguir gerar os anagramas... O unico problema é que ela tem poucos comentários e não tem uma explicação de como funciona. Mas com alguns testes ou um debug você deve descobrir como ela funciona. Flws Compartilhar este post Link para o post Compartilhar em outros sites
Shivans 0 Denunciar post Postado Maio 24, 2007 pois e... ta dificil cara!!! nao to conseguindo mesmo!!! mais logo logo eu mostro o q eu to com dificuldade!!! Compartilhar este post Link para o post Compartilhar em outros sites
Rafael D 0 Denunciar post Postado Maio 24, 2007 Blza fi, se eu souber eu ajudo http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
NorTheR 0 Denunciar post Postado Maio 24, 2007 Caraca, haha, em ultimo caso eu criava 6 for's http://forum.imasters.com.br/public/style_emoticons/default/devil.gif Acho que ele iria fazer 6.5.4.3.2.1 = 720 iterações. É desotimizado, mas deve funcionar na boa http://forum.imasters.com.br/public/style_emoticons/default/sick.gif Compartilhar este post Link para o post Compartilhar em outros sites
Shivans 0 Denunciar post Postado Maio 30, 2007 snifpasso o dia de entregar e eu nao consegui fazer... hahapois e tenho outro problema... e nao to conseguindo resolver... tem agora um joguinho da velha opra fazer... tipo modo texto mesmo... nao to conseguindo pensar em como fazer... alguem ajuda??? so no inicio o raciocinio???abraco!!! Compartilhar este post Link para o post Compartilhar em outros sites
Renato Mariscal 0 Denunciar post Postado Junho 1, 2007 Gostei do problema.Eu vejo várias opções, que influenciam a escalabilidade do negócio.O segredo é tratar a base de dados:Ordene os dados pela quantidade de caracteres.Isso já elimina eu diria uma média de 1/4 da base....Para agilizar a busca, duplique a base de dados. Dobra o tamanho e disco? Sim, mas ganha muito em desempenho.Mas não duplique simplesmente, ordene os caracteres dentro.Ordene os caracteres digitados pelo usuário.Aí é só buscar ^^Vou fazer isso e coloar o código aqui, ok? Em vários minutos ou poucas horas eu ponho aqui. Compartilhar este post Link para o post Compartilhar em outros sites
Renato Mariscal 0 Denunciar post Postado Junho 1, 2007 Mudei de idéia, e tirei a primeira parte que falei, não separei pelo número de caracteres. Deu preguiça. Mas aí está: package forum.imaster;public class BuscaPalavraPorLetra{ static String dados[]={"SABADO","LETIVO","MELHOR","BANCOS","PARTIR", "MAXIMO","MINIMO","LETRAS","LISTAR","ICONES", "PASTAS","PASTEL","EDITAL","AVISOS","ALUNOS", "EDITAR","EXIBIR","LIMPAR","JANELA","SALVAR"}; static String dadosTratados[]; public static void main(String args[]){ String letras,letrasOrdenadas,palavrasObtidas[]; tratarDados(); letras=Entrada.lerString("digite as letras:").toUpperCase(); letrasOrdenadas=ordenarCaracteres(letras); System.out.println("As seguintes palavras servem:"); procurar(letrasOrdenadas); } //Aqui tratamos a base de dados private static void tratarDados(){ dadosTratados=new String[dados.length]; for(int i=0;i<dados.length;i++) dadosTratados[i]=ordenarCaracteres(dados[i]); } /*Aqui seria ideal um metodo de ordenação com melhor desempenho, mas *para fins didaticos vou deixar um bubbleSort:*/ private static String ordenarCaracteres(String palavra){ byte b[]=palavra.getBytes(); for (int i=b.length;--i>=0;) for (int j = 0; j<i; j++) { if (b[j] > b[j+1]) { byte T = b[j]; b[j] = b[j+1]; b[j+1] = T; } } return new String(b); } /*Repito, devia usar uma busca mais decente. Mas vou procurar * sequencialmente, porque queremos apenas demonstrar*/ private static void procurar(String palavra){ for(int i=0;i<dadosTratados.length;i++) if(palavra.equals(dadosTratados[i])) System.out.println(dados[i]); }} Compartilhar este post Link para o post Compartilhar em outros sites
Renato Mariscal 0 Denunciar post Postado Junho 1, 2007 snifpasso o dia de entregar e eu nao consegui fazer... hahapois e tenho outro problema... e nao to conseguindo resolver... tem agora um joguinho da velha opra fazer... tipo modo texto mesmo... nao to conseguindo pensar em como fazer... alguem ajuda??? so no inicio o raciocinio???abraco!!!Bom, quanto a esse problema...Se é em modo texto, exiba assim:7 8 94 5 61 2 3para o usuário escolher em qual posição jogar.Quando atualizar com as posições já ocupadas:X O 94 X Ox O 3Ou separe se achar isso muito confuso...- - 94 - -- - 3X O -- X OX O -Bom, númere as posições, de maneira a trabalhar com um vetor.Pode ser de int, sendo 0=vazio,1=xis,2=bolaNessa disposição:0 1 23 4 56 7 8Então, no meu exemplo fica:int posicoes[]={1,2,0,0,1,2,1,2,0};Para conferir se alguém venceu, um jeito simples é montar um array com 'estados de vitória'.Como são sempre trios, vou montar apenas um vetor, cada 3 é uma vitória possível.Vou separar em linhas para facilitar:vitorias[]={0,1,23,4,56,7,80,3,61,4,72,5,80,4,82,4,6}Isso é só o primeiro problema, modelar o jogo.Ideal se for para jogar de 2 players.Mas como nem tudo na vida é maravilhas, o seu jogo precisa ter o "vs PC?"Então precisamos ensinar o PC a escolher uma jogada.Vamos dividir em 3 decisões, as 2 primeiras são faceis.Primeiro:Use o vetor de vitorias. Verifique se de algum trio temos 2, e 1 vazio. Se sim, jogue nesse vazio, que venceremos. Se não há esse estado, vá para o Segundo.Segundo:Verifique a mesma coisa, só que com os do oponentes. SE ele já têm 2 e há um vazio, jogue no vazio. Essa é a defesa básica. Se não houve, vá para o terceiro.Terceiro:Aqui complica. Aqui entra a estratégia de fato. Mas sem pensar em uma estratégia perfeita....Uma solução é colocar em ordem as posições desejadas.Exemplo: o ponto do meio é o meu favorito, depois os cantos e por ultimo as arestas.Então, vá procurando nesse vetor, e jogue no primeiro vazio:int preferenciais[]={4,1,7,3,5,0,2,6,8};Bom, espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
Shivans 0 Denunciar post Postado Junho 2, 2007 olha eu comecei mais nao to conseguindo sair dessa etapa!!! e o problema e que to usando o edit plus pra faze e so compilo na facul... que que eu preciso ter pra compilar aki em casa? desculpe mais to aprendendo ainda galera!!! /** * @(#)JogodaVelha.java * * JogodaVelha application * * @author * @version 1.00 2007/5/25 */ import java.io.*;public class JogodaVelha { //-------- Inicio public static void main(String[] args) { char tabuleiro[][]; tabuleiro = new char [3][3]; IniciaJogo(tabuleiro); ImprimeTabuleiro(tabuleiro); Jogada(tabuleiro); } //--------- Inicio do Jogo public static void IniciaJogo(char [][]m) { int x, y; for(y=0; y<3;y++){ for(x=0; x<3;x++){ m[y][x] = ' '; } } } //--------- Layout (Imprime o Tabuleiro) public static void ImprimeTabuleiro(char [][]m){ System.out.println(" "); //----------- Layout System.out.println(" "); //----------- Layout System.out.println(" "+m[0][0]+" | "+m[0][1]+" | "+m[0][2]); System.out.println(" ---|---|---"); System.out.println(" "+m[1][0]+" | "+m[1][1]+" | "+m[1][2]); System.out.println(" ---|---|---"); System.out.println(" "+m[2][0]+" | "+m[2][1]+" | "+m[2][2]); } public static void Jogada(char [][]m){ BufferedReader teclado; String linha; try { System.out.println("Digite a Posição de X:"); teclado = new BufferedReader(new InputStreamReader(System.in)); linha = teclado.readLine(); System.out.println("Digite a Posição de Y:"); } catch (IOException x) { System.out.println("Erro:"+x); } } } Compartilhar este post Link para o post Compartilhar em outros sites
Renato Mariscal 0 Denunciar post Postado Junho 4, 2007 Eu uso o Eclipse. Ele é bem pesadinho, uns 100 MB o download, mas é um editor incrível.Se quiser baixar é só procurar "Eclipse" no Google que você acha a página oficial. Compartilhar este post Link para o post Compartilhar em outros sites