Vettel.pt Posted October 13, 2013 at 09:57 AM Report #528725 Posted October 13, 2013 at 09:57 AM 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
HappyHippyHippo Posted October 13, 2013 at 10:05 AM Report #528726 Posted October 13, 2013 at 10:05 AM o que já aprendeste de ciclos ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Vettel.pt Posted October 13, 2013 at 10:08 AM Author Report #528728 Posted October 13, 2013 at 10:08 AM 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 😛
HappyHippyHippo Posted October 13, 2013 at 10:21 AM Report #528729 Posted October 13, 2013 at 10:21 AM 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 Portugol Plus
Vettel.pt Posted October 13, 2013 at 10:25 AM Author Report #528731 Posted October 13, 2013 at 10:25 AM (edited) 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 October 13, 2013 at 10:25 AM by Vettel.pt
AJBM Posted October 13, 2013 at 10:29 AM Report #528733 Posted October 13, 2013 at 10:29 AM (edited) 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 October 13, 2013 at 10:34 AM by AJBM
HappyHippyHippo Posted October 13, 2013 at 10:32 AM Report #528734 Posted October 13, 2013 at 10:32 AM 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 Portugol Plus
Vettel.pt Posted October 13, 2013 at 10:42 AM Author Report #528735 Posted October 13, 2013 at 10:42 AM 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
HappyHippyHippo Posted October 13, 2013 at 10:50 AM Report #528736 Posted October 13, 2013 at 10:50 AM 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 Portugol Plus
Vettel.pt Posted October 13, 2013 at 11:20 AM Author Report #528743 Posted October 13, 2013 at 11:20 AM 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)
HappyHippyHippo Posted October 13, 2013 at 10:22 PM Report #528818 Posted October 13, 2013 at 10:22 PM 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 Portugol Plus
iron Posted October 15, 2013 at 05:57 PM Report #529083 Posted October 15, 2013 at 05:57 PM 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
HappyHippyHippo Posted October 15, 2013 at 06:12 PM Report #529084 Posted October 15, 2013 at 06:12 PM 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 Portugol Plus
bioshock Posted October 15, 2013 at 09:38 PM Report #529111 Posted October 15, 2013 at 09:38 PM (edited) 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 October 15, 2013 at 09:38 PM by bioshock
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