Obrigada! Agora entendi o que estava errando.
@arfneto
Criei essas funções e realmente ficou bem mais simples e claro (deixei as anotações do devair para me ajudar)
#include<stdio.h>
int le_serie(int*);
int calcula_serie(int n, int* );
int inverte_serie(int n, int* );
int serie_invertida(int n, int* );
int main()
{
int n=0, a[50], i = 0;
while(n < 4){
printf("quantidade de termos da serie: ");
scanf("%d", &n);
}
le_serie(a);
calcula_serie(n, a);
serie_invertida(n, a); // enviando um vetor por parametro
return 0;
}
int le_serie(int a[]){
printf("primeiro termo: ");
scanf("%d", &a[0]);
printf("segundo termo: ");
scanf("%d", &a[1]);
printf("Terceiro termo: ");
scanf("%d", &a[2]);
return a[0], a[1], a[2];
}
int calcula_serie(int n, int a[]) // recebendo um vetor por parametro
{
int i;
for (i = 3; i < n; i++)
a[i] = a[i - 1] + a[i - 2] + a[i - 3];
return a[i];
inverte_serie(n,a);
}
int inverte_serie(int n, int a[], int inv[])
{
int i;
for (i = n; i > 0; i--)
inv[i] = a[i];
return inv[i];
}
int serie_invertida(int n, int inv[]){
int i;
printf("\nOrdem inversa:");
printf("\n{");
for (i = n; i >= 0; i--)
printf(" %d", inv[i]);
printf("}\n");
}
a minha ordem inversa acaba saindo com 1 digito a mais que não deveria estar ali, o que poderia ser?
E pensando agora sobre a questão de fazer a subtração (ordem sendo criada a partir das 3 ultima somas e depois subtração intercalando entre elas), eu poderia criar um outro vetor para receber o a[] e fazer a subtração? ou esse jeito estaria errado?