jeflora Posted February 13, 2016 at 01:19 AM Report Share #593435 Posted February 13, 2016 at 01:19 AM Boa noite, Tenho de converter o seguinte pseudo-codigo para codigo de uma linguagem de programação a minha escolha. Optei pelo Java. O exercicio é para uma cadeira da faculdade e o código tem de ser submetido na plataforma Mooshak. PARA i=1 ATÉ N { PARA j=i ATÉ N { soma = 0; PARA z=i ATÉ j { soma = soma + sequencia[z] } SE soma == VALOR ENTÃO { Subsequência existe na posição i TERMINA } } } Subsequência não existe O código que realizei é o seguinte private static boolean encontraSequencia(int [] sequencia, int valor) { int soma; for(int i = 1; i <= sequencia.length; i++){ for(int j = i; j <= sequencia.length; j++) { soma = 0; for(int z = i; z <= j; z++){ soma = soma + sequencia[z-1]; } if(soma == valor){ System.out.println("SEQUENCIA ENCONTRADA NA POSICAO " + i); return true; } } } System.out.println("SEQUENCIA NAO ENCONTRADA"); return false; } Precisava que alguém desse uma olhada e uma opinião, pois a plataforma diz que o programa corre em um ou mais testes sem erros mas o resultado não é o esperado. Obrigado desde já. Link to comment Share on other sites More sharing options...
Hercles Posted February 13, 2016 at 02:50 AM Report Share #593436 Posted February 13, 2016 at 02:50 AM (edited) Não sei se entendi... Mas quando testo, dentro do que esta ai descrito, funciona. fiz somente uma pequena mudança. package testasequencia; public class TestaSequencias { public boolean encontraSequencia(int[] sequencia, int valor) { int soma; for (int i = 1; i <= sequencia.length; i++) { for (int j = i; j <= sequencia.length; j++) { soma = 0; for (int z = i; z <= j; z++) { soma = soma + sequencia[z - 1]; } if (soma == valor) { System.out.println("SEQUENCIA ENCONTRADA NA POSICAO " + (i-1)); return true; } } } System.out.println("SEQUENCIA NAO ENCONTRADA"); return false; } } package testasequencia; import java.lang.reflect.Array; public class Principal { public static void main(String[] args) { int v[] = new int[10]; v[0] = 1; v[1] = 3; v[2] = 5; v[3] = 10; v[4] = 45; v[5] = 17; v[6] = 13; TestaSequencias t = new TestaSequencias(); System.out.println(t.encontraSequencia(v, 13)); } } Edited February 13, 2016 at 02:53 AM by Hercles Link to comment Share on other sites More sharing options...
jeflora Posted February 13, 2016 at 03:13 AM Author Report Share #593437 Posted February 13, 2016 at 03:13 AM pois, eu iniciei este tópico porque não estou a detectar nenhuma falha e continuo sem entender o porque de a plataforma não me aceitar o código. obrigado Link to comment Share on other sites More sharing options...
Hercles Posted February 13, 2016 at 03:17 AM Report Share #593438 Posted February 13, 2016 at 03:17 AM Explique melhor. E pra dar erro? O que voce chama de plataforma? Link to comment Share on other sites More sharing options...
jeflora Posted February 13, 2016 at 04:14 AM Author Report Share #593439 Posted February 13, 2016 at 04:14 AM A plataforma a que me refiro foi criada para concursos de programação. Para esta cadeira, devemos submeter o código na plataforma que realiza teste pré-definidos pelos professores e avaliar os resultados e comparar com o esperado. Segundo a plataforma o código que coloquei aqui corre sem erros para alguns dos testes porém o resultado que retorna, pelos vistos, não é o esperado. Mas ainda não consegui entender porquê. Link to comment Share on other sites More sharing options...
Hercles Posted February 13, 2016 at 07:22 AM Report Share #593441 Posted February 13, 2016 at 07:22 AM Entendi. A única coisa que me parece estranho eh quando ele imprime a posição. Ele imprime uma posição depois, por isto coloquei -1.... Vetor começa na posição zero. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 13, 2016 at 08:19 AM Report Share #593442 Posted February 13, 2016 at 08:19 AM dizer que o código está correcto é diferente do que dizer que o código faz o que deveria fazer, que é algo que nunca disseste. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
tiago.f Posted February 13, 2016 at 02:41 PM Report Share #593450 Posted February 13, 2016 at 02:41 PM Verifica se os prints que fazes imprimem exactamente o texto esperado... Link to comment Share on other sites More sharing options...
jeflora Posted February 13, 2016 at 03:40 PM Author Report Share #593453 Posted February 13, 2016 at 03:40 PM dizer que o código está correcto é diferente do que dizer que o código faz o que deveria fazer, que é algo que nunca disseste. achas que não faz? é que eu não estou a conseguir identificar a falha... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 13, 2016 at 07:23 PM Report Share #593461 Posted February 13, 2016 at 07:23 PM achas que não faz? é que eu não estou a conseguir identificar a falha... nem eu nem ninguem sabe se faz ou não o que deveria fazer, isto porque nunca disseste o que deveria fazer IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Hercles Posted February 13, 2016 at 09:04 PM Report Share #593464 Posted February 13, 2016 at 09:04 PM Verdade, qual é o objetivo da sua aplicação? Qual é o resultado esperado em que você tanto fala? Aparece mensagem de erro? Qual? Se a saída está errada, qual a saída esperada? o que eu imaginei que pode "não ser a saída esperada" é tipo. a posição impressa foi 1 e era pra ser zero, por exemplo. Ai, entra a questão que eu disse, a primeira posição de um array é zero e não um. Sendo assim você terá que mudar o código. Link to comment Share on other sites More sharing options...
jeflora Posted February 13, 2016 at 09:45 PM Author Report Share #593468 Posted February 13, 2016 at 09:45 PM é suposto encontrar na sequencia que recebe como parametro uma subsquencia cuja a soma dos valores seja igual ao parametro valor. isto é, na sequencia: 1 2 3 4 5 6 7 valor = 5 é suposto retornar a posição do valor 2. ou seja o output seria "SUBSEQUENCIA ENCONTRADA NA POSICAO 2" daí eu utilizar o i ao imprimir e não i-1 Link to comment Share on other sites More sharing options...
tiago.f Posted February 14, 2016 at 12:04 AM Report Share #593470 Posted February 14, 2016 at 12:04 AM Verifica se os prints que fazes imprimem exactamente o texto esperado... Link to comment Share on other sites More sharing options...
jeflora Posted February 14, 2016 at 12:47 AM Author Report Share #593473 Posted February 14, 2016 at 12:47 AM Verifica se os prints que fazes imprimem exactamente o texto esperado... já verifiquei os prints e estão conforme o pedido no enunciado Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 14, 2016 at 12:59 AM Report Share #593474 Posted February 14, 2016 at 12:59 AM antes de mais, coloca aqui o código que tens actualmente (isto porque te foi dito para corrigires algo) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
jeflora Posted February 14, 2016 at 01:22 AM Author Report Share #593475 Posted February 14, 2016 at 01:22 AM private static boolean encontraSequencia(int [] sequencia, int valor) { int soma; for(int i = 1; i <= sequencia.length; i++){ for(int j = i; j <= sequencia.length; j++) { soma = 0; for(int z = i; z <= j; z++){ soma = soma + sequencia[z-1]; } if(soma == valor){ System.out.println("SEQUENCIA ENCONTRADA NA POSICAO " + (i-1)); return true; } } } System.out.println("SEQUENCIA NAO ENCONTRADA"); return false; } Segundo o que me disseram a correção a fazer seria na impressão, pelo que ficaria assim Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 14, 2016 at 11:38 AM Report Share #593479 Posted February 14, 2016 at 11:38 AM existe coisas ai que não fazem sentido, sendo a principal que os índices de um array vão de 0 até length - 1. e como tal, nem vou tentar resolver isso de cabeça. depois de corrigires isso, diz alguma coisa IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
tiago.f Posted February 14, 2016 at 03:32 PM Report Share #593493 Posted February 14, 2016 at 03:32 PM já verifiquei os prints e estão conforme o pedido no enunciado Segundo o enunciado (1º post) devias ter "Subsequência existe na posição " e não "SEQUENCIA ENCONTRADA NA POSICAO " O mesmo para o outro print... Link to comment Share on other sites More sharing options...
jeflora Posted February 14, 2016 at 04:23 PM Author Report Share #593497 Posted February 14, 2016 at 04:23 PM existe coisas ai que não fazem sentido, sendo a principal que os índices de um array vão de 0 até length - 1. e como tal, nem vou tentar resolver isso de cabeça. depois de corrigires isso, diz alguma coisa sim, eu sei disso e é o que normalmente faço mas como é assim que está no pseudo-codigo fazendo como disseste será assim private static boolean encontraSequencia(int [] sequencia, int valor) { int soma; for(int i = 0; i <= sequencia.length-1; i++){ for(int j = i; j <= sequencia.length-1; j++) { soma = 0; for(int z = i; z <= j; z++){ soma = soma + sequencia[z]; } if(soma == valor){ System.out.println("SEQUENCIA ENCONTRADA NA POSICAO " + i); return true; } } } System.out.println("SEQUENCIA NAO ENCONTRADA"); return false; } Segundo o enunciado (1º post) devias ter "Subsequência existe na posição " e não "SEQUENCIA ENCONTRADA NA POSICAO " O mesmo para o outro print... sim, mas segundo um exemplo de output que o meu professor colocou no enunciado era "SEQUENCIA ENCONTRADA NA POSICAO " Link to comment Share on other sites More sharing options...
tiago.f Posted February 14, 2016 at 06:23 PM Report Share #593500 Posted February 14, 2016 at 06:23 PM devia ter sabido isso... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now