Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vittalev

[Resolvido] Fazer um programa que imprima o conjunto de caractere

Recommended Posts

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

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

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

30uplkp.jpg

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

///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

///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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.