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

Dexter's Lab

Passagem por referência

Mensagens Recomendadas

Dexter's Lab

Boas,

estou a iniciar-me na passagem por referência e gostava de uma mãozinha vossa. E já agora, correções no código ou dicas.

Eis o código. Está-me a dar os seguintes erros:

In function `RECEBE_NUM':

41 [Warning] passing arg 2 of `SOMA' from incompatible pointer type

44 [Warning] passing arg 2 of `FUN_MEDIA' from incompatible pointer type

[Linker error] C:\Users\Dexter'sLab\AppData\Local\Temp/ccQ1caaa.o(.text+0x10f):Teste22.c: undefined reference to `soma'

collect2: ld returned 1 exit status

unrecognized option `-static-libstdc++'

Código:

# include <stdio.h>
/*62) Faça um programa que leia uma seqüência de números terminada por 0 (zero)
e imprima a média aritmética dos números ímpares e a soma dos números pares.*/void FILE_TXT();
void RECEBE_NUM();
void FUN_MEDIA(int b, int *media);
void SOMA(int a, int *total);
int main (void)
{
 FILE_TXT();
 RECEBE_NUM();

 getch();
 return 0;
}

void FILE_TXT()
{
 FILE *tst22;
 char txt[200];

 tst22 = fopen ("teste22.txt" , "r");
 fgets (txt, sizeof(txt), tst22);
 fclose(tst22);

 printf("%s\n\n");
}

void RECEBE_NUM()
{
 int value, *total = 0, *media = 0;
 int counter = 0;

 do {
   printf ("VALOR: "); scanf("%d", &value);

   if (value%2==0) {
     SOMA(value, &total);
   }
   else {
     FUN_MEDIA(value, &media);
   }
 } while (value);
 printf("%d", soma(value));

 counter++;
 printf("TOTAL DA SOMA DOS PARES: %d\nMEDIA DOS IMPARES: %d", *total, *media/counter);
}

void SOMA(int a, int *total)
{
 total+=a;
}

void FUN_MEDIA(int b, int *media)
{
 media+=b;
}

O código está melhor identado, a passagem para aqui é que omitiu alguma identação. Qualquer dica, opinião e principalmente correção de erros serão aceites e agradecidos.

Editado por Rui Carlos
Falta LP

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dexter's Lab

Dexter's Lab,

Não seria mais simples leres número a número e ir somando os pares e ímpares, mantendo uma contagem dos ímpares?

Olha um exemplo (repara que o 10, após o 0, foi ignorado nos cálculos):

http://ideone.com/BcoD9p

Foi exatamente o que fiz, pwseo. Mas eu quero mesmo usar funções e passagem de referência, que é para treiná-los, compreendes?

Muito obrigado, ainda assim.

AJBM, vou corrigir. Obrigado pela atenção.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Pois, na altura não vi o teu código (o fórum tira-lhe a indentação e portanto tira a vontade de ler) apenas olhei para o tamanho e para o facto de estares a falar em passagem de parâmetros por referência, e pensei que talvez estivesses a complicar :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dexter's Lab

Pois, na altura não vi o teu código (o fórum tira-lhe a indentação e portanto tira a vontade de ler) apenas olhei para o tamanho e para o facto de estares a falar em passagem de parâmetros por referência, e pensei que talvez estivesses a complicar :)

Tudo bem! Obrigado pela atenção. Vou agora tentar corrigir isto.

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.