Vittalev 0 Denunciar post Postado Março 10, 2011 Boa noite pessoal, sou novo aqui no forum, entao vou chegar de fininho, qq coisa errada podem me dar um toque, críticas construtivas são bem vindas... Estou começando o curso de Sistemas para Internet e ja estou me embolando logo de começo hehe, mas vamo la... ! É o seguinte... depois de assistir as aulas na faculdade e até ver o "Vídeo tutorial completo de lógica de programação" (muito bom por sinal) feito pelo colega Chimu, ainda não consegui compreender como fazer um exercício que tenho aqui... O exercício é o seguinte... Tenho que fazer um programa que leia um número de linhas que será digitado pelo usuário, e então de acordo com o número digitado, o programa deve imprimir um conjunto de caracteres, desta forma: Se o número de linhas digitado for 1: * Se o número de linhas digitado for 2: * ** Se o número de linhas digitado for 3: * ** *** Se o número de linhas digitado for 4: * ** *** **** E assim por diante... Esse exercício é de portugol mesmo... mas não consegui entender a lógica para resolver ele, se alguém puder dar uma dica, agradeço. PS: Chimu, eu até pedi ajuda pra você lá no youtube, mas la a formatação do texto não me permite explicar o exercício da forma como está aqui, obrigado de qq maneira pelas suas aulas :) Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Março 10, 2011 Esse número de linhas digitado? Seria isso: Digite o numero de linhas desejada: 5 * ** *** **** ***** Ai ele tem que ser infinito? Se ele digitar 10, tem que aparecer 10 linhas em seqüencia? Se for isso é IF(Se) e loop com a condição FOR(Para); Compartilhar este post Link para o post Compartilhar em outros sites
Vittalev 0 Denunciar post Postado Março 10, 2011 Esse número de linhas digitado? Seria isso: Digite o numero de linhas desejada: 5 * ** *** **** ***** Ai ele tem que ser infinito? Se ele digitar 10, tem que aparecer 10 linhas em seqüencia? Se for isso é IF(Se) e loop com a condição FOR(Para); É isso mesmo... o problema é q eu não estou conseguindo pensar em uma forma pra ele fazer como é pedido... Se eu digito um número, por exemplo o 5, eu consigo fazer ele aparecer *****, mas fazer aparecer assim: * ** *** **** ***** aí eu n to conseguindo não... Mas pior é que deve ser um algoritmo tão curtinho que da ate uma depressão saber que não consigo resolver LoL :( Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Março 11, 2011 mete esse código lá, ai ele vai escrever as 5 linhas, porém quando se quer digitar as linhas sobre um numero qualquer, ai eh phoda, kk, tem que usar o loop. Eu vou tentar fazer aqui.. mais a idéia é: - Criar uma variavel chamada asteristico e armazenar nela o "*", ai tu mete o loop no numero de linhas, ai quando ele verificar que o numero de linhas não é o mesmo que o solicitado ele vai escrever mais uma linha e colocar um * a mais.. pensa aii. var n_linhas:real inicio Escreva("Número de linhas:") leia(n_linhas) se n_linhas = 5 entao Escreval("*") Escreval("**") Escreval("****") Escreval("*****") Escreval("******") fimse mete esse código lá, Compartilhar este post Link para o post Compartilhar em outros sites
Vittalev 0 Denunciar post Postado Março 11, 2011 hehe, ta fods msm... eu msm to acostumado a fazer o loop só com contador pra ir somando mais 1 ou algo do tipo, esse aí pra ir adicionando um caracter a mais na linha de baixo ta tenso... Agora to indo dormir, mas amanha vo tentar fazer baseado na sua idéia... vamo ve q q sai aqui ^_^ Vlw por ajudar brother Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Março 11, 2011 Cara eu consegui fazer assim, porém eu não consigo incrementar o ast, pois é uma var com tipo caracter, alguém pode ajudar? fiquei curioso agora, como incrementar com mais uma repetição uma var com tipo caracter? Abçs var n_linhas:real controle_linha:real ast:caracter inicio Escreva("Número de linhas:") leia(n_linhas) controle_linha<- 1 ast <- "*" enquanto controle_linha <= n_linhas faca escreval(ast) controle_linha<- controle_linha + 1 fimenquanto fimalgori Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 11, 2011 Leia Num; N <- 1; Enquanto (N <= Num) Faça Para i de 1 até N faça Escreva ("*"); Fim_Para N <- N + 1; Fim_Enquanto Bom vamos a minha lógica. O cara vai digitar o número digamos que seja o 5, ai começa Num(5); N(1); Vai entrar no loop pois N(1) é menor ou igual a Num(5)? sim, então começa o for que vai de 1 até N(1) a saída gerada é "*", incrementa o N; Continua... volta no começo do enquanto N(2) é menor ou igual a Num(5)? sim, começa o for de 1 até N2(2) a saída gerada é "**", sai do 'for' e incrementa o N; Continua... volta no começo do enquanto N(3) é menor ou igual a Num(5)? sim, começa o for de 1 até N2(3) a saída gerada é "***", sai do 'for' e incrementa o N; Continua... volta no começo do enquanto N(4) é menor ou igual a Num(5)? sim, começa o for de 1 até N2(4) a saída gerada é "****", sai do 'for' e incrementa o N; Continua... volta no começo do enquanto N(5) é menor ou igual a Num(5)? sim, começa o for de 1 até N2(5) a saída gerada é "*****", sai do 'for' e incrementa o N; Continua... volta no começo do enquanto N(6) é menor ou igual a Num(5)? não, então cai fora, ai temos a nossa saída * ** *** **** ***** []s Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Março 12, 2011 ///quitZAUMMM /// Então eu implementei o código aqui e não funcionou.. ele escreveu assim: Numero de linhas=3 * * * N:inteiro Num:inteiro inicio Escreva("escreva o numero:") leia(Num) N <- 1 Enquanto (N <= Num) Faca Para n de 1 ate Num faca Escreval ("*") FimPara N <- N + 1 FimEnquanto fimalgoritmo E eu não entendi.. bom como ele ia multiplicar os * linha por linha? É em outras linguagens a outros métodos para fazer isso. ///Vittalev //// Vê se tu consegue com alguém lá o código, porque eu passei essa noite toda tentando fazer esse bendito e não consegui nada. Compartilhar este post Link para o post Compartilhar em outros sites
Vittalev 0 Denunciar post Postado Março 12, 2011 ///quitZAUMMM /// Então eu implementei o código aqui e não funcionou.. ele escreveu assim: Numero de linhas=3 * * * Então... eu tmb puis o código que o quitZAUMMM passou e tentei fazer aqui... o programa estava imprimindo o número de asteriscos como você disse, só que ao inves de imprimir eles na vertical (no seu caso), no meu caso estava imprimindo na horizontal todos na mesma linha, dai quando ele lia numero de linhas = 3 ele fazia *** Daí n sei como (LoL) eu coloquei assim: inicio inteiro numero_de_linhas , i , contador_de_asteriscos_em_cada_linha escrever "Digite o número de linhas" ler numero_de_linhas contador_de_asteriscos_em_cada_linha <- 1 enquanto contador_de_asteriscos_em_cada_linha <= numero_de_linhas faz escrever "\n" // Aqui ele pula para linha de baixo para i de 1 ate contador_de_asteriscos_em_cada_linha escrever "*" proximo contador_de_asteriscos_em_cada_linha <- contador_de_asteriscos_em_cada_linha + 1 fimenquanto fim Parece que deu certo... :joia: ///Vittalev //// Vê se tu consegue com alguém lá o código, porque eu passei essa noite toda tentando fazer esse bendito e não consegui nada. Eu perguntei pra um carinha la da minha sala q fez e ele disse q usou duas repetições "enquanto", dois contadores (um para o numero de linhas e o outro para contar os asteriscos de cada linha) e uma constante... eu não consegui reproduzir aqui, mas a idéia dele era assim... Fazer um "enquanto" que engloba o ciclo todo, e dentro deste ciclo você coloca outro "enquanto", que será o ciclo de cada linha a ser feita... Vou tentar aqui de novo da forma como ele me explicou, se eu conseguir eu posto... E VLW ae quitZAUMMM pela idéia do código ! Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Março 12, 2011 Hum agora que você disse eu entendi a idéia do //// quitZAUMMM ///, ao invés de umas o escreval(que escreve os dados e pula a linha) ele usou o escreva(que escreve o asteristico na mesma linha), ai usando o while ele incrementa 1 ao valor da linha e, depois com o for ele pega o valor de linhas escrito e manda inscrever o * na mesma linha, ai quando sai do for,ele incrementa mais 1 no while. Cacetada... que lógica ferradona.. mto da hora... kkk agora eu senti como sou amador... Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Março 12, 2011 Ai ai..eu fiz o meu também.. kkk bem interessante. algoritmo "semnome" // Função : Escreve asteristicos na tela. // Autor :LCS // Data : 12/03/2011 // Seção de Declarações var controle_numero,controle_linha,num:inteiro // Aqui é a seção de declaração de variáveis. inicio escreval("**********************************************************************") escreval("**********************************************************************") escreval("****************--->Sistema para escrita de linhas<---****************") escreval("***********************--->Versão 1.0<---*****************************") escreval("**********************************************************************") escreval("**********************************************************************") escreval Escreva("Digite o numero de linhas:") leia(num) Se num > 10 entao // Testa a condição do tamanho do numero para que não demore muito a escrever as linhas enquanto num >10 faca // escreval("Para que o sistema não sobrecarregue digite um numero menor que 11") // Nesse bloco o sistema não deixa o resto executar enquanto o numero for maior que Escreva("Digite o numero de linhas:") // leia(num) fimenquanto controle_numero<- 1 //Variável que fará a verificação da condiçao while; Enquanto (controle_numero <= num) Faca // Condição em que se a variável controle_numero for <= ao numero de entrada ele fara, controle_linha<- controle_numero // Aqui atribuímos a variável controle_linha o valor de controle_numero Para controle_linha de 1 ate controle_numero faca // Aqui após atribuimos o valor de controle_numero a controle_linha, o sistema irá executar os comandos Escreva ("*") //abaixo e incrementará em 1 o valor de controle_linha(Aqui o sistema imprimirá na tela os asteristicos até que ele seja igual ao numero fimpara //da linha digita,satisfazendo o proposito do programa. escreval //comando necessário para pular a linha para. controle_numero<- controle_numero + 1 //linha que incrementa o controle principal fimenquanto fimse fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 13, 2011 mano vo por como resolvido senão tiver só avisar.. é q assim nunca programei com visualg, qnd o assunto é portugol faço no papel msm, então não pensei nisso de pular linha e nem nada.. + creio que a lógica foi a q eu passei msm; []s Compartilhar este post Link para o post Compartilhar em outros sites
Vittalev 0 Denunciar post Postado Março 13, 2011 Ta resolvido sim quitZAUMMM... Obrigadão pela ajuda... ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
vinisnoopy 0 Denunciar post Postado Abril 5, 2011 exercicio. 3. Escreva um programa que leia 10 valores inteiros, entre 1 e 10, para um vetor e desenhe um histograma horizontal conforme o mostrado abaixo: Ex: V=(7,3,5,3,8,...) Posição Conteúdo 0 ******* 1 *** 2 ***** 3 *** 4 ******** Cada linha é uma posição do vetor. O conteúdo do vetor é o número de asteriscos a serem escritos. var v : vetor[1..10] de inteiro i, j : inteiro inicio // Seção de Comandos para i de 1 ate 10 faca escreval("Informe V[",i,"]") leia(V[i]) fimpara escreval("Posição Conteúdo") para i de 1 ate 10 faca escreva( i, " ") para j de 1 ate v[i] faca escreva("*") fimpara escreval("") fimpara fimalgoritmo nao sei se o exercicio e o mesmo entao coloquei o a pergunta do exercicio. ta ai uma ideia. Compartilhar este post Link para o post Compartilhar em outros sites