Visualizando 29 respostas da discussão
  • Autor
    Posts
    • #70039
      Odilon Tavares
      Participante

      Olá,
      Estou fazendo o exercício 53 e ao tentar validar a resposta S ou N aparece uma mensagem informando que a função cadeia_para_caracter não existe na biblioteca tipos.
      A ajuda do portugol studio mostra sua sintaxe como demonstrado abaixo
      cadeia_para_caracter(cadeia valor)
      Estou redigindo desta forma, resposta = (t.cadeia_para_catacter(teclado))
      É preciso acrescentar outro informação junto a teclado entre parênteses?

    • #70041
      IcaroFilho
      Moderador

      Bom dia.
      pode postar o seu código por favor (e se possível, não esqueça de mandar formatado).

      a sintaxe esta correta. mas não e necessário por dentro de parênteses. => resposta = t.cadeia_para_caracter(teclado)

      • #70042
        IcaroFilho
        Moderador

        So uma observação.
        vc escreveu catacter, e isso realmente não existe rsrsrsr.. não sei se copiou do portugal e colou aqui ou se só errou ao digitar aqui…

    • #70046
      Odilon Tavares
      Participante

      Valeu Icaro. Fiquei tão concentrado na instrução da biblioteca que não percebi o erro ortográfico.

    • #91575
      Alex oliveira
      Participante

      fala galera o meu está dando um erro que não comprendo o erro de compilação .Ele diz que a variável não foi iniicializada a resp

      programa
      {
      	inclua biblioteca Tipos--> u
      	funcao inicio()
      	{
      		inteiro nun=0, cont=1,soma=0
      		caracter resp
      		cadeia teclado
      		faca{
      					
      			enquanto(verdadeiro){
      				escreva("=======================\n")
      			     escreva( cont ," ° Valor \n")
      			     escreva("========================\n")
      			
      				escreva("DIgite um numero entre 1- 10 : ")
      			     leia(teclado) 
      			     
      				se (u.cadeia_e_inteiro(teclado, 10)){
      					nun=u.cadeia_para_inteiro(teclado, 10)
      					se (nun>=1 e nun<=10) {
      						pare
      					}senao {
      						escreva ("<<ERRO!>> Digite um numero de 1 a 10 \n")
      					}
      				}senao {
      					escreva("<<ERRO ! >> DIgite um número inteiro\n ")
      				}
      			 }
      			cont++
      			soma+= nun
      			enquanto(verdadeiro){
      			escreva("Deseja continuar : ")
      			leia(teclado)
      			se (u.cadeia_e_caracter(teclado)){
      				resp=u.cadeia_para_caracter(teclado)
      				se(resp=='S' ou resp=='s' ou resp=='N' ou resp=='n'){
      					pare
      				}
      			  } senao {
      			  	escreva(" <<ERRO>> Digite uma letra \n")
      			  }
      			}
      			
      		   
      		} enquanto (resp=='s' ou resp=='S')
      		escreva("\n\n=========================")
      		escreva("\n Você digitou ", cont , " valores")
      		escreva("\n A soma deles são :", soma)
      		escreva("\n\n=========================")
      	}
      }

      • #91600
        IcaroFilho
        Moderador

        Bom dia. Basta inicializar as variaveis:

        caracter resp = ' '
        cadeia teclado = ""

        obs: Seu código esta dando a contagem errada errada de entradas pois o contador começa com 1.
        Basca inicializar o contador em 0 que o valor de quantidade de vezes fica correto.. ou então terá que fazer uma operação na saida de cont - 1

    • #97127
      ROSANGELA MENDES
      Participante

      Olá!
      Por favor, analisem o código, pois não consigo ver onde está o erro.
      Primeiro fiz sem consultar o vídeo explicativo. Apresentei alguns erros pois não usei a biblioteca.
      Depois fiz conforme o professor ensinou…já revisei e não encontrei o erro.

      Aguardo retorno!

      funcao inicio()
      {
      cadeia teclado
      inteiro num, soma = 0, cont = 0
      caracter resposta

      faca{
      enquanto(verdadeiro){
      escreva(“—————————————-\n”)
      escreva(” VALOR “,cont + 1, “\n”)
      escreva(“—————————————-\n”)

      escreva(“Digite um número: “)
      leia (teclado)

      se(t.cadeia_e_inteiro(teclado, 10)){

      num = t.cadeia_para_inteiro(teclado, 10)
      se(num >= 1 e num <= 10){
      pare
      }senao{
      escreva(” [ERRO] O número deve estar entre 1 e 10.\n”)
      }
      }senao{
      escreva(” [ERRO] O valor deve ser um número inteiro.\n”)

      }

      }

      cont++
      soma += num
      enquanto(verdadeiro){
      escreva(“Quer continuar? [S/N] “)
      leia(teclado)
      se(t.cadeia_e_caracter(teclado)){
      resposta = t.cadeia_para_caracter(teclado)
      se(resposta == ‘S’ ou resposta == ‘s’ ou resposta == ‘N’ ou resposta ==’n’){
      pare
      }senao{
      escreva(” [ERRO] Por favor, responda S ou N.\n”)
      }

      }senao{
      escreva(” [ERRO] O valor deve ser uma letra.\n “)
      }
      }
      }enquanto(resposta == ‘S’ ou resposta ==’s’)
      escreva(“========= RESULTADO ============\n”)
      escreva(“Ao todo, você digitou “, cont, ” valores \n”)
      escreva(“A soma de todos eles é “, soma, “\n”)

      }

      }

    • #97128
      ROSANGELA MENDES
      Participante

      >>>>>>>EXERCÍCIO 53<<<

    • #97129
      ROSANGELA MENDES
      Participante

      E X E R C Í C I O

      53

    • #97275
      Tutora Jessica
      Moderador

      Olá Rosangela, peço para que quando for nos enviar sua dúvida ou compartilhar seu código conosco, se atente em ver se já tem esse tópico criado, para mantermos o fórum organizado. 🖖🖖
      Reposicionei seu código para o tópico do exercício 53.
      Qual erro aparece na sua tela?

    • #97292
      ROSANGELA MENDES
      Participante

      Boa tarde!
      Infelizmente não existe a opção excluir qdo postamos errado. Fica a dica! =)

      Aparecem duas mensagens:
      – Erro de compilação
      – Existem trechos onde variável num pode não ter sido inicializada.

    • #97309
      Tutora Jessica
      Moderador

      Olá Rosângela, envie sua sugestão na aba Ajuda, mas de qualquer forma eu reposicionei a sua pergunta para o tópico certo.
      No seu código só precisa ser feito o seguinte:
      A variável num você inicializa ela lá na declaração com num = 0
      E a variável resposta com aspas simples, dessa forma : caracter resposta = ''
      Fazendo isso seu código vai funcionar direitinho!!
      Parabéns por procurar sempre novos caminhos, você esta indo muito bem 🖖🖖

    • #97946
      Yury Corrêa Silva
      Participante

      Olá, por algum motivo meu programa não está executando por erro de compilação e diz que existem trechos onde a variável valor não inicializou. Aqui está o código completo.

      programa
      {
      	inclua biblioteca Tipos --> t
      	
      	funcao inicio()
      	{
      		cadeia valid
      		caracter resp
      		inteiro valor, tot = 0, soma = 0
      		escreva("{ EXERCÍCIO 053 - Números Validados }\n")
      		faca {
      			enquanto(verdadeiro) {
      				escreva("------------------------------------------\n")
      				escreva("\t\t VALOR ", tot+1, "\n")
      				escreva("------------------------------------------\n")
      				escreva("Digite um número (entre 1 e 10): ")
      				leia(valid)
      				se (t.cadeia_e_inteiro(valid, 10)) {
      					valor = t.cadeia_para_inteiro(valid, 10)
      					se (valor>=1 e valor<=10) {
      						pare
      					} senao {
      						escreva("<<ERRO>> O número deve estar entre 1 e 10!\n")
      					}
      				} senao {
      					escreva("<<ERRO>> O valor deve ser um número inteiro!\n")
      				}
      			}
      			tot++
      		     soma += valor
      		     enquanto(verdadeiro) {
      		          escreva("Quer continuar? [S/N]")
      				leia(resp)
      				se (t.cadeia_e_caracter(valid)) {
      					resp = t.cadeia_para_caracter(valid)
      					se (resp == 's' ou resp == 'S' ou resp == 'n' ou resp == 'N') {
      						pare
      					} senao {
      						escreva("<<ERRO>> Por favor responda S ou N!\n")
      					}
      				} senao {
      					escreva("<<ERRO>> A resposta deve ser uma letra!\n")
      				}
      			}
      		} enquanto (resp == 'S' ou resp == 's')
      		escreva("\n-=-=-=-=-=-=- RESULTADO -=-=-=-=-=-=-\n")
      		escreva("Ao todo, você digitou ", tot, " valores.\n")
      		escreva("A soma de todos eles foi ", soma)
      	}
      }
    • #97993
      Tutora Jessica
      Moderador

      Olá Yuri,
      Nesse caso é só inicializar as variáveis :
      valid com aspas duplas , resp com aspas simples e valor = 0 .

      Depois nos dê um feedback se funcionou dessa forma 🖖

    • #108865
      Tatiana Azer Maluf
      Participante

      Olá, boa noite.
      Digitei o código primeiro para o usuário digitar o valor e estava tudo certo.
      Quando inseri a primeira validação, deu o seguinte erro: “Tipos incompatíveis! Não é possível atribuir uma expressão do tipo “lógico” à uma expressão do tipo “inteiro”.
      Por favor, pode me ajudar?
      Segue o código:

      programa
      {
      	
      inclua biblioteca Tipos
      	funcao inicio()
      	{
      		inteiro c = 1, n
      		caracter resp = ' '
      		cadeia teclado = " "
      
      		enquanto (verdadeiro) {
      		escreva ("\n-------------------------------")
      		escreva ("\n\tVALOR " + c )
      		escreva ("\n-------------------------------")
      		escreva ("\nDigite um número (entre 1 e 10): ")
      		leia (teclado) 
      		c++
      			se (Tipos.cadeia_e_inteiro (teclado, 10)) {
      					n = Tipos.cadeia_e_inteiro  (teclado, 10)
      			} senao {
      					escreva ("<<ERRO>> Deve ser digitado um número")
      				}
      		escreva ("Quer continuar? (s/n) ")
      		leia (resp)
      			 se (resp == 'N' ou resp == 'n') {
      				pare
      				}
      		}
      		
      		
      		
      	}
      }
    • #108881
      Tutora Jessica
      Moderador

      Ola Tatiana, seu código esta incompleto.
      Dê uma olhadinha nos exemplos e explicações acima para ver se lhe ajuda, caso não.. só retornar que vamos tentar te ajudar da melhor forma.
      Adiantando, você precisa iniciar o seu enquanto com faca dessa forma:

      faca{
           enquanto(verdadeiro){
      }
           }
    • #108980
      Tatiana Azer Maluf
      Participante

      Oi Jéssica
      Melhorou um pouco da última vez, mas ainda assim não ficou tudo certo.
      Consegue me dar uma dica? Não quero assistir o vídeo de resposta sem conseguir finalizar 🙁

      programa
      {
      	
      inclua biblioteca Tipos
      	funcao inicio()
      	{
      		inteiro c = 1, n
      		caracter resp = ' '
      
      		enquanto (verdadeiro) {
      		escreva ("\n-------------------------------")
      		escreva ("\n\tVALOR " + c )
      		escreva ("\n-------------------------------")
      		escreva ("\nDigite um número (entre 1 e 10): ")
      		leia (n) 
      		c++
      			se (n >= 1 e n <= 10) {
      				pare
      			}
      			se (n < 1 ou n >= 10) {
      				escreva ("<<ERRO>> O número deve estar entre 1 e 10")
      			}
      
      		
      		escreva ("\nQuer continuar? (s/n) ")
      		leia (resp)
      		enquanto (resp == 'n' ou resp == 'N') {
      			pare
      		}
      		
      			se (resp != 'S' ou resp != 's' ou resp != 'N' ou resp != 'n') {
      				escreva ("A resposta deve ser S ou N")
      			
      			}
      		}
      
      		escreva ("\n\n")
      	}
      }
    • #108996
      Tutora Jessica
      Moderador

      Ola Tatiana, eu preciso que você me envie o código completo para análise.
      O seu código só esta pedindo um valor e não faz mais nada depois.
      Te indico completar ele mesmo que com erros e trazer para nós olharmos.
      Esse exercício é feito com o enquanto.. pois são muitas etapas.
      O se/senao ficará dentro do enquanto.
      Assista novamente as explicações do porfessor Guanabara no vídeo em que ele passa esse exercício.

    • #109007
      Tatiana Azer Maluf
      Participante

      Oi Jéssica
      Agora o programa verifica o número, valida, mas não pede pra digitar de novo caso o número esteja fora do range. Como faço isso, por favor?

      programa
      {
      	
      inclua biblioteca Tipos
      	funcao inicio()
      	{
      		inteiro c = 1, n
      		caracter resp = ' '
      
      		enquanto (verdadeiro) {
      		escreva ("\n-------------------------------")
      		escreva ("\n\tVALOR " + c )
      		escreva ("\n-------------------------------")
      		escreva ("\nDigite um número (entre 1 e 10): ")
      		leia (n) 
      		c++
      			se (n >= 1 e n <= 10) {
      				escreva ("\nQuer continuar? (s/n) ")
      				leia (resp)
      			}
      			se (n < 1 ou n >= 10) {
      				escreva ("<<ERRO>> O número deve estar entre 1 e 10")
      			}
      		}
      		
      		escreva ("\n\n")
      	}
      }
    • #109024
      Tutora Jessica
      Moderador

      você precisa iniciar o seu enquanto com faca dessa forma:

      faca{
           enquanto(verdadeiro){
      }
           }
    • #114843
      TATIANE ROCHA
      Participante

      Olá, estou com uma dúvida na linha 43. No código há a pergunta: deseja continuar? No caso, se eu digitasse um numero era pra aparecer o erro: Digite uma letra, mas acaba aparecendo o outro erro: Digite S ou N. Como faço pra corrigir? Na resolução do exercício Guanabara não percebeu e acontece a mesma coisa. Gostaria de saber como resolver esse trecho.

      programa
      {
      inclua biblioteca Tipos–> t

      funcao inicio()
      {
      inteiro c=0, num=0, s=0
      caracter resp= ‘ ‘
      cadeia digitado
      faca {
      escreva(“—————\n”)
      escreva( “VALOR “, c+1, “\n”)
      escreva(“—————\n”)

      enquanto (verdadeiro) {
      escreva(“digite um valor (entre 1 e 10): “)
      leia(digitado)

      se (t.cadeia_e_inteiro(digitado,10)) {
      num= t.cadeia_para_inteiro(digitado,10)
      se (num>=1 e num<=10) {
      pare
      } senao {
      escreva(“<<<ERRO>>> O valor deve ser um número entre 1 e 10\n”)
      }
      } senao {
      escreva(“<<<ERRO>>> O valor dever ser um número entre 1 e 10\n”)
      }
      }
      c=c+1
      s= s+num
      enquanto (verdadeiro) {
      escreva(“deseja continuar? “)
      leia(digitado)
      se (t.cadeia_e_caracter(digitado)) {
      resp= t.cadeia_para_caracter(digitado)
      se (resp== ‘s’ ou resp== ‘S’ ou resp== ‘n’ ou resp== ‘N’) {
      pare
      } senao {
      escreva(“<<<ERRO>>> Digite S ou N\n”)
      }
      43 } senao {
      escreva(“<<<ERRO>>> Digite uma letra\n”)
      }
      }
      } enquanto (resp== ‘S’ ou resp== ‘s’)
      escreva(“————— RESULTADOS —————–\n”)
      escreva(“Voce digitou “, c, ” valores.\n”)
      escreva(“A soma entre eles é “, s)
      }
      }

    • #114845
      TATIANE ROCHA
      Participante

      outra, dúvida. Como faço pra enviar o código com a mesma formatação do portugol? Toda vez que envio o formato fica em forma de texto normal.

    • #114988
      Tutora Jessica
      Moderador

      Ola Tatiane, nesse caso realmente a segunda opção não irá aparecer, pois ele vai ler sempre a linha 42 primeiro e sendo diferente de S ou N ele não entra na linha 43 pois o que pede na linha 42 cabe ao senão.
      Seu código esta correto e não precisa de uma solução para erro, já que não tem.
      Parabéns pelo empenho.
      Em relação a já vir formatado conforme o portugol, você cola seu código aqui no fórum, seleciona ele por completo e clica em CODE na barra acima, após é só enviar.
      Bons estudos 🖖

    • #115112

      Podem me ajudar estou tento dificuldade.
      Quando pede pra continuar clico “S” ou “N”, lê a resposta erra
      Esta : escreva(“[ERRO] Resposta inválida, tente novamente!\n”)
      E soma dos valores está dando errado.

      inclua biblioteca Tipos –> t
      funcao inicio()
      {
      cadeia teclado, resp=” ”
      inteiro num=0, soma=0, c=1
      enquanto(verdadeiro){
      escreva(“—————————————“)
      escreva(“\n\tVALOR ” + c)
      escreva(“\n—————————————“)
      escreva(“\nDigite um número (entre 1 e 10): “)
      leia(teclado)
      se (t.cadeia_e_inteiro(teclado, 10)){
      num = t.cadeia_para_inteiro(teclado,10)

      se (num >= 1 e num <=10){
      escreva(“Quer continuar? [S/N] “)
      leia(resp)
      se (resp==”N” e resp==”n”){

      pare

      }

      se( resp!=”s” ou resp!=”S” ou resp!=”n” ou resp!=”N”){
      escreva(“[ERRO] Resposta inválida, tente novamente!\n”)
      }

      }senao {

      escreva(“[ERRO] O número deve estar entre 1 e 10!\n”)

      }

      }senao{

      escreva(“[ERRO] O valor deve ser um número inteiro!\n”)

      }

      num++
      soma +=num
      c++
      }
      escreva(“\n”)
      escreva(“\n======== RESULTADO ==============”)
      escreva(“\nAo todo, você digitou ” + num + ” valores.”)
      escreva(“\nA soma de todos os números foi ” + soma)
      }

      }

    • #115149
      Tutora Jessica
      Moderador

      Ola Miguel, você precisa se atentar aos fechamentos das chaves de se/senão.
      Nesse trecho por exemplo : se (num >= 1 e num <=10){ o seu senao esta lá embaixo dentro do fechamento de outros se/senao.
      Esse trecho por exemplo, precisa ficar dessa forma:

      se (num >= 1 e num <= 10) {
      	pare	
      } senao{
      	escreva("<<ERRO>> O número deve estar entre 1 e 10.\n")	
      }		
      } senao {
      	escreva("<<ERRO>> O valor deve ser um número inteiro.\n")	
      	}
      }

      Tente refazer seu código prestando mais a atenção nesses fechamentos das chaves, veja algumas explicações acima também que isso irá lhe ajudar.
      Bons estudos 🖖

      • #115429

        Ok, obrigado! Já refiz o código, mas a única dificuldade que tive foi
        ao passar pra o segundo valor. Não consigo verificar o erro.

        inclua biblioteca Tipos –>t
        funcao inicio()
        {
        inteiro num=0, c=1, val_digitado=0, soma=0
        cadeia resp=” “, teclado

        enquanto(verdadeiro){
        escreva(“——————————-“)
        escreva(“\n\tValor ” + c)
        escreva(“\n——————————-“)
        escreva(“\nDigite um num número (1 e 10): “)
        leia(teclado)
        c++

        se (t.cadeia_e_inteiro(teclado,10)){
        num = t.cadeia_para_inteiro(teclado,10)
        se( num >= 1 e num <= 10){
        val_digitado++
        soma+=num
        escreva(“Quer continuar? [S/N] “)
        leia(resp)
        se(resp==”n” ou resp==”N”){

        pare

        }

        se (resp!=”S” e resp!=”s”){
        escreva(“[ERRO] Resposta inválida, tente novamente!\n”)
        escreva(“Quer continuar? [S/N] “)
        leia(resp)
        }

        }senao{
        escreva(“[ERRO] O número deve estar entre 1 e 10!\n”)
        }

        }senao{
        escreva(“[ERRO] O valor deve ser um número inteiro!\n”)
        }

        }

        escreva(“\n”)
        escreva(“================= RESULTADO ======================”)
        escreva(“\nAo todo você digitou ” + val_digitado + ” valores.”)
        escreva(“\nA soma de todos eles foi ” + soma)
        escreva(“\n”)

        }
        }

    • #115539
      Tutora Jessica
      Moderador

      Ola Miguel, parabéns pela nova resolução, testei aqui e esta funcionando certinho conforme foi pedido no exercício.
      Bons estudos 🖖

    • #122452
      Marcio Junior
      Participante

      Bom dia!
      gostaria de entender porque o meu código não está funcionando. Ele está apresentando o seguinte erro:

      ——————————————————————————————————–
      Traduzindo erro sintático: org.antlr.runtime.NoViableAltException
      line 9:18 – no viable alternative at input ”’
      Contexto atual: expressao7

      line 10:0 mismatched character ‘\t’ expecting ”’
      ERRO: A expressão ”’ não era esperada neste local, remova a expressão para corrigir o problema. Linha: 9, Coluna: 18

      Programa finalizado.
      ———————————————————————————————————-

      Segue o código que criei:

      programa {
      inclua biblioteca Texto –> txt
      inclua biblioteca Tipos –> tip
      funcao inicio() {
      escreva(“{ EXERCÍCIO 053 – Números Validados }\n\n”)

      inteiro valor, c = 1, soma = 0
      cadeia teclado = “”
      caracter resp = ”

      enquanto (verdadeiro) {
      escreva(
      “————————————-\n”,
      ” VALOR “, c, “\n”,
      “————————————-\n”
      )

      enquanto (verdadeiro) {
      escreva(“Digite um número (entre 1 e 10): “)
      leia(teclado)

      se (tip.cadeia_e_inteiro(teclado, 10)){

      valor = tip.cadeia_para_inteiro(teclado, 10)

      se (valor >= 1 e valor <= 10) {
      pare
      } senao {
      escreva(“<<ERRO>> O número deve estar entre 1 e 10!\n”)
      }
      } senao {
      escreva(“O valor digitado deve ser um número inteiro!\n”)
      }
      }

      soma += valor

      enquanto (verdadeiro) {
      escreva(“Quer continuar? [S/N] “)
      leia(teclado)

      se (txt.cadeia_e_caracter(teclado)) {

      resp = teclado

      se (resp == ‘N’ ou resp == ‘n’ ou resp == ‘S’ ou resp == ‘s’) {
      pare
      } senao {
      escreva(“<<ERRO>> Resposta inválida, responda S ou N\n”)
      }

      }
      }

      se (resp == ‘N’ ou resp == ‘n’) {
      pare
      } senao se (resp == ‘S’ ou resp == ‘s’) {
      c++
      }

      }

      escreva(
      “============ RESULTADO ============\n”,
      “Ao todo, você digitou “, c, ” valores.”,
      “A soma de todos eles foi “, soma, “\n”
      )
      }
      }

    • #122456
      Tutora Jessica
      Moderador

      Olá Marcio, na sua linha 9 esta faltando uma aspas.
      Após vão aparecer alguns outros erros, dê uma olhada nas explicações acima e veja se consegue resolver seu código, caso não consiga só retornar ao fórum que iremos lhe ajudar.

    • #122464
      Marcio Junior
      Participante

      Boa tarde, Jéssica!

      De todas as formas que tento, está dando o mesmo erro. Até fazendo igualzinho a resolução do Guanabara. Não sei se é porque estou utilizando o Portugol Web no Chrome.

      segue o erro e um novo código que fiz:

      ——————————————————————————-
      ERRO: Erro na compilação!. Linha: 0, Coluna: 0
      ERRO: /tmp/portugol/programas/Programa1693592057725.java:104: error: variable flag_1693592057737 is already defined in method executar(String[]). Linha: 0, Coluna: 0
      ERRO: boolean flag_1693592057737 =false;while(flag_1693592057737). Linha: 0, Coluna: 0
      ERRO: ^. Linha: 0, Coluna: 0
      ERRO: 1 error. Linha: 0, Coluna: 0

      Programa finalizado.
      ———————————————————————————-

      programa {
          inclua biblioteca Tipos --> t
      	funcao inicio() {
      	    
      		cadeia teclado
      		inteiro num, soma = 0, cont = 0
      		caracter resp
      		
      		faca {
      		    enquanto(falso) {
      		        escreva("Digite o " + (cont + 1) + "º número: ")
      		        leia(teclado)
      		        
      		        se (t.cadeia_e_inteiro(teclado, 10)) {
      		            
      		            num = t.cadeia_para_inteiro(teclado, 10)
          		        se (num >= 1 e num <= 10) {
          		            pare
          		        } senao {
          		            escreva("<<ERRO>> O número deve estar entre 1 e 10.\n")
          		        }
          		    } senao {
          		        escreva("<<ERRO>> O valor deve ser um número inteiro.\n")
      		        }
      		    }
      		    
      		    cont++
      		    soma += num
      		    
      		    enquanto (falso) {
      		        escreva("Quer continuar? [S/N] ")
      		        leia(teclado)
      		        
      		        se (t.cadeia_e_caracter(teclado)) {
      		            resp = t.cadeia_para_caracter(teclado)
      		            
      		            se (resp == 'S' ou resp == 's' ou resp == 'N' ou resp == 'n') {
      		                pare
      		            } senao {
      		                escreva("<<ERRO>> Por favor, responda S ou N.\n")
      		            }
      		        } senao {
      		            escreva("<<ERRO>> O valor deve ser uma letra.\n")
      		        }
      		    }
      		    
      		} enquanto (resp == 'S' ou resp == 's')
      		
      		escreva("------------------------------------")
      		escreva("\nVocê digitou " + cont + " valores.")
      		escreva("\nA soma entre eles é " + soma)
      		escreva("\n-----------------------------------\n\n")
      	}
      }
      • #122465
        Marcio Junior
        Participante

        no código acima eu coloquei o valor “falso” dentro do “enquanto” para testar. Mas antes eu fiz com “verdadeiro” e apresentou o mesmo erro.

    • #122467
      Tutora Jessica
      Moderador

      Olá Marcio,
      você precisa inicializar a variável num = 0,
      e a variável resp com aspas simples (com espaço no meio), dessa forma: resp = ‘ ‘ , após você pode colocar o seu enquanto com verdadeiro.
      Observe sempre os erros que o programa mostra , ali mesmo tem dicas de onde encontrar o erro, ou se ficar muito confuso pode pesquisar o erro ou trazer aqui no fórum ou no discord que vamos lhe ajudar.

      • Esta resposta foi modificada 1 ano, 2 meses atrás por Tutora Jessica.
      • Esta resposta foi modificada 1 ano, 2 meses atrás por Tutora Jessica.
      • #122470
        Marcio Junior
        Participante

        Oi Jessica, obrigado!!!

        Realizei as alterações, mas mesmo assim continuava dando erro de compilação. Acabei descobrindo que era a versão do Portugol Studio que eu estava utilizando (versão web – antiga). Fui para a versão nova e funcionou. Mais uma vez, obrigado pela atenção!!

    • #123067
      Milena Rosa Carnielli
      Participante

      Olá Jessica

      Meu código esta dando erro de compilação na linha 0, não consigo entender o pq, pois já vi a explicação e parece estar ok. Segue abaixo:

      programa
      {
      inclua biblioteca Tipos –> ti

      funcao inicio()
      {
      escreva(“{ Exercício 53 – Numeros Validados }\n\n”)

      inteiro c=1, n, soma = 0
      cadeia dadosI, dadosR
      caracter resp

      faca{
      enquanto (verdadeiro){
      escreva (“Digite o “, c, “° número de 1 a 10: “)
      leia (dadosI)

      se (ti.cadeia_e_inteiro(dadosI,10)){
      n = ti.cadeia_para_inteiro(dadosI,10)

      se (n >=1 e n <=10){

      } senao{
      escreva (“<<ERRO>> O número precisa estar entre 1 a 10!\n\n”)
      }

      }senao{
      escreva (“<<ERRO>> O valor precisa ser um numero inteiro!\n\n”)
      }
      }
      c++
      soma += n
      enquanto(verdadeiro) {
      escreva (“Quer continuar? [S/N] “)
      leia (dadosR)

      se (ti.cadeia_e_caracter(dadosR)){
      resp = ti.cadeia_para_caracter(dadosR)

      se (resp ==’S’ ou resp ==’s’ ou resp ==’N’ ou resp ==’n’){
      pare
      }senao{
      escreva (“<<ERRO>> o valor digitado precisa ser S para sim e N para não\n\n”)
      }
      }
      }

      }enquanto(resp == ‘S’ ou resp ==’s’)
      escreva (“Voce digitou “, c, ” valores\n”)
      escreva (“E a soma entre eles é “, soma)
      }
      }

      Obrigada pela ajuda 🙂

    • #123077
      Tutora Jessica
      Moderador

      Ola Milena, trouxe sua dúvida para uma já existente no fórum do mesmo exercício.
      Dê uma olhadinha nas explicações acima e veja se consegue resolver seu erro, caso não consiga ou tenha alguma dúvida, só retornar ao fórum que iremos lhe ajudar.
      Bons estudos 🖖

      • #123124
        Milena Rosa Carnielli
        Participante

        Obrigada Jessica, achei que o erro da linha 0 vinha antes de inicializar, e pq tinha usado o faça enquanto primeiro não precisaria inicializar, mas esqueci que utilizei enquanto dentro. Consegui entender, muito obrigada!

Visualizando 29 respostas da discussão
  • Você deve fazer login para responder a este tópico.