Jump to content
Dexter's Lab

Passagem por referência

Recommended Posts

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.

Edited by Rui Carlos
Falta LP

Share this post


Link to post
Share on other sites
pwseo

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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 :)

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


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