How to solve this "Error in syntax" [closed]

1

I have the following question and I can not think of a solution:

  

Make an algorithm that reads the duration of an event in seconds and displays it in hours, minutes, and seconds.

My code:

algoritmo "Duração de Evento"
var
   segundos, sec, horas, minutos : real
inicio
      escreva("Quantos segundos o Evento dura?")
      leia(segundos)
      horas<-segundos/3600
      minutos<-(segundos%3600)/60
      sec<-(segundos%3600)%60
      escreva(horas,":",minutos,":",segundos)
fimalgoritmo

I always get: Syntax error

    
asked by anonymous 20.08.2016 / 17:08

2 answers

0

Your code:

  algoritmo "Duração de Evento"
  var
  segundos, sec, horas, minutos : real
  inicio
  escreva("Quantos segundos o Evento dura?")
  leia(segundos)
  horas<-segundos/3600
  minutos<-(segundos%3600)/60
  sec<-(segundos%3600)%60
  escreva(horas,":",minutos,":",segundos)
  fimalgoritmo

I was able to notice in your code that the variables are as real, so it will not be feasible to use the% operator to do the rest of the division. Using the variables as integer you can do so:

  algoritmo "Duração_de_Evento"
  var
  segundos, sec, horas, minutos : inteiro
  inicio
  escreval("Quantos segundos o Evento dura?")
  leia(segundos)
  horas<-segundos00
  minutos<-(segundos%3600)
  sec<-(segundos%3600)%60
  escreval(horas,":",minutos,":",segundos)
  fimalgoritmo

EXTRA
You may now be wondering why you need to change the variable type from real to inteiro ? The \ (division) and % (rest) operators are used for divisions between integer values, which should always result in an integer quotient and an integer remainder.

    
26.10.2017 / 13:43
0

The operator mod or % requires a variable of integer type. In your case, you set the variable "seconds" to real, so you need to reset it to integer. The code looks like this:

algoritmo "Duração de Evento"
var
sec, horas, minutos : real
  segundos : inteiro
inicio
  escreva("Quantos segundos o Evento dura?")
  leia(segundos)
  horas<-segundos/3600
  minutos<-(segundos%3600)/60
  sec<-(segundos%3600)%60
  escreva(horas,":",minutos,":",segundos)
fimalgoritmo

I think this code does not correctly answer the question, but the syntax error does not occur anymore.

@ Editing: In this case, one of the right solutions to your question would be:

algoritmo "Segundos em hora, minutos e segundos"
var
   TS, S, M, H: Inteiro // TS - Tempo em Segundos, S - Segundos, M - Minutos, H - Horas
inicio
      EscrevaL("Informe o tempo em segundos: ")
      Leia(TS)
      H <- TS div 3600
      M <- (TS - (H * 3600)) div 60
      S <- TS - (H * 3600) - (M * 60)
      EscrevaL("---------")
      EscrevaL(" Horário ")
      EscrevaL("---------")
      Escreva(H," :", M," :", S)
fimalgoritmo
    
20.10.2016 / 06:37