5.6. Implemente as seguintes funções:

Long int num (int n_horas, char tipo)

Semelhante a função anterior, só que recebe mais um parâmetro indicando aquilo que se quer saber ‘h’ – Horas, ‘m’ – Minutos e ‘s’ - segundos

Num(3, ‘h’ ) 3

Num(3, ‘m’ ) 180

Num(3, ‘s’ ) 10800

Passo 1

Beleza, vamos matar mais uma!

O exercício pede para a gente resolver de três jeitos diferentes, vamos começar resolvendo com if else. A lógica é a seguinte, a gente cria várias condicionais, e em cada condicional a gente verifica a variável tipo, se ela for ‘h’ a gente mostra o número de horas, se for ‘m’ o número de minutos e se for ‘s’ o número de segundos.

Para implementar essa função basta fazer:

l o n g   i n t   n u m   ( i n t   n _ h o r a s ,   c h a r   t i p o )

{        

        i f   ( t i p o   = =   ' h ' )

        {

                r e t u r n   ( l o n g )   n _ h o r a s ;      

        }

        e l s e   i f   ( t i p o   = =   ' m ' )

        {

                r e t u r n   ( l o n g )   n _ h o r a s * 60 ;

        }

        e l s e   i f   ( t i p o   = =   ' s ' )

        {

                r e t u r n   ( l o n g )   n _ h o r a s * 3600 ;

        }

        p r i n t f ( " D i g i t e   u m a   e n t r a d a   v á l i d a " ) ;

        r e t u r n   0 ;

}

Então quando essa função é chamada temos vários if, se ‘tipo’ for ‘h’ a gente retorna o valor de ‘ n _ h o r a s ’, se for ‘m’ retornamos ‘ n _ h o r a s ⋅ 60 ’ e assim por diante.

Passo 2

Agora vamos resolver com switch e break.

Bom, a gente vai usar switch com a variável tipo. Para cada caso a gente retorna um valor diferente, caso t i p o = = ' h ' o retorno é n _ h o r a s , caso t i p o = = ' m ' o retorno é n _ h o r a s ⋅ 60 , e assim por diante. Fica mais ou menos assim:

l o n g   i n t   n u m   ( i n t   n _ h o r a s ,   c h a r   t i p o )

{

        s w i t c h   ( t i p o )

        {

                c a s e   ' h ' :

                c a s e   ' H ' :   r e t u r n   ( l o n g )   n _ h o r a s ;        

                c a s e   ' m ' :

                c a s e   ' M ' :   r e t u r n   ( l o n g )   n _ h o r a s * 60 ;

                c a s e   ' s ' :

                  c a s e   ' S ' :   r e t u r n   ( l o n g )   n _ h o r a s * 3600 ;

                d e f a u l t :

                p r i n t f ( " e d i g i t e   u m a   e n t r a d a   v á l i d a " ) ;                

        }

}

O break aí fica por conta do ‘default’.

Passo 3

Agora vamos resolver com switch sem break.

Vamos fazer quase a mesma coisa, vamos colocar a variável tipo no switch, mas agora também vamos pegar uma variável auxiliar, e a gente fica mudando o valor dela dependendo de cada caso, e no final, a gente sempre vai devolver o valor dessa variável auxiliar:

l o n g   i n t   n u m   ( i n t   n _ h o r a s ,   c h a r   t i p o )

{

        l o n g   i n t   r e s   =   ( l o n g )   n _ h o r a s ;

        s w i t c h   ( t i p o )

        {

                c a s e   ' m ' :

                c a s e   ' M ' :   r e s   =   r e s * 60 ;

                c a s e   ' s ' :

                c a s e   ' S ' :   r e s   =   r e s * 3600 ;

        }

        r e t u r n   r e s ;

}

E rápido assim a gente já terminou mais uma questão.

Resposta

l o n g   i n t   n u m   ( i n t   n _ h o r a s ,   c h a r   t i p o )

{        

        i f   ( t i p o   = =   ' h ' )

        {

                r e t u r n   ( l o n g )   n _ h o r a s ;      

        }

        e l s e   i f   ( t i p o   = =   ' m ' )

        {

                r e t u r n   ( l o n g )   n _ h o r a s * 60 ;

        }

        e l s e   i f   ( t i p o   = =   ' s ' )

        {

                r e t u r n   ( l o n g )   n _ h o r a s * 3600 ;

        }

        p r i n t f ( " D i g i t e   u m a   e n t r a d a   v á l i d a " ) ;

        r e t u r n   0 ;

}

l o n g   i n t   n u m   ( i n t   n _ h o r a s ,   c h a r   t i p o )

{

        s w i t c h   ( t i p o )

        {

                c a s e   ' h ' :

                c a s e   ' H ' :   r e t u r n   ( l o n g )   n _ h o r a s ;        

                c a s e   ' m ' :

                c a s e   ' M ' :   r e t u r n   ( l o n g )   n _ h o r a s * 60 ;

                c a s e   ' s ' :

                  c a s e   ' S ' :   r e t u r n   ( l o n g )   n _ h o r a s * 3600 ;

                d e f a u l t :

                p r i n t f ( " e d i g i t e   u m a   e n t r a d a   v á l i d a " ) ;                

        }

}

l o n g   i n t   n u m   ( i n t   n _ h o r a s ,   c h a r   t i p o )

{

        l o n g   i n t   r e s   =   ( l o n g )   n _ h o r a s ;

        s w i t c h   ( t i p o )

        {

                c a s e   ' m ' :

                c a s e   ' M ' :   r e s   =   r e s * 60 ;

                c a s e   ' s ' :

                c a s e   ' S ' :   r e s   =   r e s * 3600 ;

        }

        r e t u r n   r e s ;

}