Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Flames

Testar um codigo

Mensagens Recomendadas

Flames

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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrosorio

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

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) :cheesygrin:

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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.