Jump to content

Testar um codigo


Flames
 Share

Recommended Posts

Queria que dessem uma olhadela para o seguinte código e me respondam o seguinte (porque este codigo na minha cabeça precisa de uma boa reformulacao entre variaveis de entrada na funcao e saida blabla):

Este código necessita de uma boa reformulacao ou estou a imaginar coisas?

#include <stdio.h>

/*
    Read a set of values from the user.
    Store the sum in the sum variable and return the number of values read.
*/
int read_values(double sum)
{
  int values=0,input=0;
  sum = 0;
  printf("Enter input values (enter 0 to finish):\n");
  scanf("%d",&input);
  while(input != 0) {
    values++;
    sum += input;
    scanf("%d",input);
  }
  return values;
}

int main()
{
  double sum=0;
  int values;
  values = read_values(sum);
  printf("Average: %g\n",sum/values);
  return 0;
}

Num dos scanf's falta & que é um dos erros para detectar e pensava que ficava por ai quando realmente olho para o codigo e pensei hummmm wrong dead wrong...

Link to comment
Share on other sites

Yep. Faltam mais coisas. Neste momento a variável sum é declarada no main, e é alterada na função read_values, mas como sum é local à função read values na função main continuas a ter sum=0, sabes o que tens que fazer para modificar isso? (Uma hipótese seria declarar a variável sum como global, mas a resposta correta tem provavelmente a ver com o argumento da função read_values).

Não respondo a dúvidas por mensagem.

Link to comment
Share on other sites

O scanf() é notoriamente dificil de usar bem, especialmente quando há erros: vê lá o que acontece se o número introduzido for "dois" (sem as aspas, claro) 😁

Sugestão para melhor tratamento de erros: lê o input com fgets() e usa sscanf() para converter esse input num inteiro.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.