Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 :)
>
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
/applications/core/interface/imageproxy/imageproxy.php?img=http://i51.tinypic.com/30uplkp.jpg&key=ef95a8cbcce919bc7a6228099bf20d95da0a8d35b7130993598ff7efe9766052" alt="30uplkp.jpg" />
:(
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á,
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
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
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
///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.
>
///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 !
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...
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
fimalgoritmomano 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
Ta resolvido sim quitZAUMMM...
Obrigadão pela ajuda... ^_^
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.
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);