Jump to content
Vettel.pt

Dúvida Algoritmo

Recommended Posts

Vettel.pt

Boas,

Sou novo aqui e ando a aprender a programar...escolhi o java e surgiu-me uma questão que é a seguinte:

O utilizador escolhe um número de 2 a 20 e a saída do programa deve ser a seguinte:

Por exemplo se o utilizador escolhe o 4 a saida do progrmaa deve ser:

1

12

123

1234

123

12

1

se se escolhesse o 5 ficava:

1

12

123

1234

12345

1234

123

12

1

Deve ser de conceção muito fácil, mas estou com muitas dificuldades de conseguir arranjar uma variável que imprima todos os valores que preciso.

A única forma que consigo fazer isto é com montes de if's...o que suponho seja completamente descabido.

Se alguem me conseguir ajudar aqui agredeço imenso, e peço desculpa pela pergunta de rookie:p

Share this post


Link to post
Share on other sites
Vettel.pt

Tecnicamente ainda estou no pseudo-codigo mas ando a ver java a parte que é o que vou dar a seguir.

Já dei while e o for.

A minha dificuldade aqui é arranjar uma variável que te vá mostrando todos os numeros seguidos em ordem crescente e depois em ordem decrescente :P

Share this post


Link to post
Share on other sites
HappyHippyHippo

eu já te dei uma dica : ciclos

a tua variável só tem de guardar um valor


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Vettel.pt

Ya.

para já eu tenho isto, mas não me resolve o problema de mostrar o que é pedido. (está em pseudo-codigo que é onde ainda estou mais habituado)

ED:

INTEIRO num

ALGORITMO

INÍCIO

REPETIR

LER(NUM)

ENQUANTO(NUM<2 OR NUM>20)

Para (i<- 1 até num passo 1) fazer

escrever("i")

fimpara

Para (i<-num-1 até 1 passo -1) fazer

escrever("i")

FIM

Edited by Vettel.pt

Share this post


Link to post
Share on other sites
AJBM

Ya.

para já eu tenho isto, mas não me resolve o problema de mostrar o que é pedido. (está em pseudo-codigo que é onde ainda estou mais habituado)

ED:

INTEIRO num

ALGORITMO

INÍCIO

REPETIR

LER(NUM)

ENQUANTO(NUM<2 OR NUM>20)// se o numero for 4 entra no ciclo

Para (i<- 1 até num passo 1) fazer

escrever("i")

fimpara

Para (i<-num-1 até 1 passo -1) fazer

escrever("i")

FIM

para alem de escrever,

Tens uma variavel que guarda o valor.

Edited by AJBM

Share this post


Link to post
Share on other sites
HappyHippyHippo

o que tens dá um seguinte resultado para NUM = 5

1
2
3
4
5
4
3
2
1

pensa bem no que estás a fazer dentro do ciclo e o que deverias fazer


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Vettel.pt

o que tens dá um seguinte resultado para NUM = 5

1
2
3
4
5
4
3
2
1

pensa bem no que estás a fazer dentro do ciclo e o que deverias fazer

essa é exatamente a minha duvida, eu já pensei em criar uma variavel x<- i+1 mas continuava a não ter sucesso.

tá complicado...xd

Share this post


Link to post
Share on other sites
HappyHippyHippo

tenta pensar no problema por partes.

primeiro tenta fazer um programa que crie a linha:

- pede um número (ex: 3)

- apresenta a linha :

"1 2 3"

depois adicionas a esse programa a capacidade de apresentar várias linhas:

- pede um número (ex: 4)

- apresenta as 4 linhas :

"1 2 3 4"

"1 2 3 4"

"1 2 3 4"

"1 2 3 4"

depois tenta alterar para que o número de dígitos a serem apresentados em cada linha seja directamente relacionado com o número da linha :

- pede um número (ex: 4)

- apresenta as 4 linhas :

"1"

"1 2"

"1 2 3"

"1 2 3 4"

por fim, altera o programa para apresentar as linhas finais:

- pede um número (ex: 4)

- apresenta as 4 linhas :

"1"

"1 2"

"1 2 3"

"1 2 3 4"

"1 2 3"

"1 2"

"1"

>> vais ver que assim chegas à solução

no final eu apresento-te um código muito simplificado de como fazer isso com o mínimo número de ciclos // <---- dica


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Vettel.pt

Boas, continuo a achar que simplesmente fazer isto não vai dar...estou entalado:p (para o 1º exemplo que deste de só escrever a linha)

INÍCIO

REPETIR

LER(num)

ENQUANTO (num<0)

REPETIR

num_1<-1

num_seg <- num_1+1

ENQUANTO( numseg<=num)

escrever(num_1, num_seg)

Share this post


Link to post
Share on other sites
HappyHippyHippo

porque é que no teu primeiro código usar uma instrução "para ... fazer ... fimpara" e agora usas um "enquanto".

usa as ferramentes que mais estás habituado, não te ponhas a inventar


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
iron

Já pensaste que se tiveres uma variável auxiliar e se por cada incremento a multiplicares por 10 e somares o teu i, o teu valor dará certo até chegares ao teu número desejado?

Mas agora para retirares até voltar ao 0, deixo contigo.


Cumprimentos,
iron

Share this post


Link to post
Share on other sites
HappyHippyHippo

Já pensaste que se tiveres uma variável auxiliar e se por cada incremento a multiplicares por 10 e somares o teu i, o teu valor dará certo até chegares ao teu número desejado?

Mas agora para retirares até voltar ao 0, deixo contigo.

isto é um execício de ciclos

foi por essa mesma razão que no meu exemplo de solução por passos, explicitamente coloquei as soluções com espaços entre os dígitos.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
bioshock

Vou-te dar mais um empurrão, mas apenas até ao output dos primeiros números.

variável valor = input(5);
variável valor_actual = "";
Para variavel x = 1; desde x <= valor; incrementa x
valor_actual += x
output(valor_actual)
Fim Para

Edited by bioshock

Share this post


Link to post
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.