Jump to content

Converter Pseudo-Código


jeflora
Go to solution Solved by HappyHippyHippo,

Recommended Posts

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

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 by Hercles
Link to comment
Share on other sites

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

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

é 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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.