Enunciado

Encontre o erro em cada um dos segmentos de programa a seguir e explique como corrigi-los:

a) double cube( float ); /* protótipo de função */

...

cube( float number ) /* function definition */

{

return number * number * number;

}

b) register auto int x = 7;

c) int randomNumber = srand();

d) double y = 123.45678;

int x;

x = y;

printf( “%f\n”, (double) x );

e) double square( double number )

{

double number;

return number * number;

}

f) int sum( int n )

{

if ( n == 0 ) {

return 0;

}

else {

return n + sum( n );

}

}

Passo 1

Fala Galera!!! Tudo certo? Espero que sim!!! Bora para mais um exercício.

Bora analisar cada uma das alternativas e encontrar o erro.

Na letra (a) na função cube( float number ), falta definir o tipo de retorno da função. Para corrigir isso podemos reescrever da seguinte forma:

double cube( float ); /* function prototype */

...

double cube( float number ) /* function definition */

{

return number * number * number;

}

Passo 2

Na letra b) tem muitas definições de classes de armazenamento e a definição de classe automática não é necessária. Podemos reescrever da seguinte forma:

register int x = 7; /* auto removed */

Passo 3

Na letra c) a forma como está errada, o comando srand() é uma semente usada para inicializar o número gerado pela função rand(), ou seja, a função srand() não retorna nada. Podemos reescrever o código da seguinte forma:

int randomNumber = rand();

Passo 4

Na letra d) os valor decimal é perdido quando um double é atribuído a um número inteiro e forma de usar printf( “%f\n”, (double) x ); está errada. Podemos reescrever da seguinte forma:

double y = 123.45678;

double x;

x = y;

printf( “%f\n”, x );

Passo 5

Na letra e) number é definido duas vezes desnecessariamente. Podemos reescrever da seguinte forma:

double square( double number )

{

return number * number;

}

Passo 6

Na letra f) o parâmetro passa no else ocasiona uma recursividade infinita, a função vai ficar chamando-a sem parar. Podemos reescrever da seguinte forma:

int sum( int n )

{

if ( n == 0 )

return 0;

else

return n + sum( n - 1 );

}

E assim finalizamos nosso exercício galera!!! Até o próximo!!

Resposta

Ei, a resposta está no passo a passo :)