Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
po valew cara ja kebro um galhao... mais ainda sim continuo esperando mais sugestoes!!!abraco!!!
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
pois e... ta dificil cara!!! nao to conseguindo mesmo!!! mais logo logo eu mostro o q eu to com dificuldade!!!
Blza fi, se eu souber eu ajudo http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
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
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!!!
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.
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]); }}
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.
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); } } }
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.
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!