Enunciado
Programação - Deitel &Deitel - Como programar em C- Ed: 6º - Capítulo 5.Exercícios - Ex. 46
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 :)