How to resolve the algorithm Convert seconds to compound duration step by step in the Gambas programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Convert seconds to compound duration step by step in the Gambas programming language

Table of Contents

Problem Statement

Write a function or program which: This is detailed below (e.g., "2 hr, 59 sec").

Demonstrate that it passes the following three test-cases: Test CasesDetailsThe following five units should be used: However, only include quantities with non-zero values in the output (e.g., return "1 d" and not "0 wk, 1 d, 0 hr, 0 min, 0 sec"). Give larger units precedence over smaller ones as much as possible (e.g., return 2 min, 10 sec and not 1 min, 70 sec or 130 sec) Mimic the formatting shown in the test-cases (quantities sorted from largest unit to smallest and separated by comma+space; value and unit of each quantity separated by space).

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Convert seconds to compound duration step by step in the Gambas programming language

Source code in the gambas programming language

Public Sub Main()
Dim iInput As Integer[] = [7259, 86400, 6000000]                                  'Input details
Dim iChecks As Integer[] = [604800, 86400, 3600, 60]                              'Weeks, days, hours, mins in seconds
Dim iTime As New Integer[5]                                                       'To store wk, d, hr, min & sec
Dim iOriginal, iSec, iLoop As Integer                                             'Various integers
Dim sOrd As String[] = [" wk", " d", " hr", " min", " sec"]                       'To add to the output string
Dim sOutput As String                                                             'Output string

For Each iSec In iInput                                                           'For each iInput
  iOriginal = iSec                                                                'Store orginal value in seconds
  iTime[4] = iSec                                                                 'Store seconds in iTime[4]

  For iLoop = 0 To 3                                                              'Loop through wk, d, hr, min & sec
    If iTime[4] >= iChecks[iLoop] Then                                            'Check if value is = to wk, d, hr, min
      iTime[iLoop] = Int(iTime[4] / iChecks[iLoop])                               'Put the correct value for wk, d, hr, min in iTime
      iTime[4] = iTime[4] - (iTime[iLoop] * iChecks[iLoop])                       'Remove the amount of seconds for wk, d, hr, min from iTime[4]
    Endif
  Next

  For iLoop = 0 To 4                                                              'Loop through wk, d, hr, min & secs
    If iTime[iLoop] > 0 Then sOutput &= ", " & Str(iTime[iLoop]) & sOrd[iLoop]    'Add comma and ordinal as needed
  Next

  If Left(sOutput, 2) = ", " Then sOutput = Mid(sOutput, 3)                       'Remove unnecessary ", "
  sOutput = Format(Str(iOriginal), "#######") & " Seconds = " & sOutput           'Add original seconds to the output string
  Print sOutput                                                                   'Print sOutput string
  sOutput = ""                                                                    'Clear the sOutput string
  iTime = New Integer[5]                                                          'Reset iTime[]
Next

End

  

You may also check:How to resolve the algorithm Almost prime step by step in the Seed7 programming language
You may also check:How to resolve the algorithm Trigonometric functions step by step in the Logtalk programming language
You may also check:How to resolve the algorithm Keyboard macros step by step in the C programming language
You may also check:How to resolve the algorithm Symmetric difference step by step in the EasyLang programming language
You may also check:How to resolve the algorithm Average loop length step by step in the Lua programming language