Rafael, boa noite. O cálculo do fatorial está correto, porém, duas coisinhas estão levando o seu código ao erro.
A primeira delas é que o vetorA
está vazio, ou seja, não há nenhum valor em nenhuma posição do mesmo. Observe que você apenas cria a variável vetorA, mas não a preenche. E para sanarmos isto, podemos fazer um laço de repetição para preencher estes valores automaticamente:
for(i = 0; i< 10; i++){
vetorA[i] = i;
}
Neste caso, estamos preenchendo cada posição do vetorA conforme ocorre o incremento da variável i, dentro do laço de repetição. Observe:
- VetorA na posição 0 recebe 0, pois, i vale 0
- Variável i sofre o incremento
- VetorA na posição 1 recebe 1, pois, i agora vale 1
- Variável i sofre o incremento
- VetorA na posição 2 recebe 2, pois, i agora vale 2
E assim por diante.
O segundo fator que está levando seu código ao erro, é devido a linha abaixo:
vetorB[i] = fatorial (vetorA [i]);
Quando escrevemos fatorial (vetorA [i]), espera-se que fatorial seja uma função que receba como parâmetro um inteiro. No caso do seu código não há esta função, pois você calcula o fatorial diretamente na main. Podemos corrigir isto isolando o código e criando uma função que retorne o valor do fatorial calculado, como é pedido no exercício:
int fatorial(int i){
int fatorial = 1;
for(fatorial = 1; i > 1; i = i -1){
fatorial = fatorial * i;
}
return fatorial;
}
Com estas correções já será possível alcançar o objetivo do exercício.
Código completo:
int fatorial(int i){
int fatorial = 1;
for(fatorial = 1; i > 1; i = i -1){
fatorial = fatorial * i;
}
return fatorial;
}
#include <stdio.h>
int main(){
int vetorA[10];
int vetorB[10];
int i;
for(i = 0; i< 10; i++){
vetorA[i] = i;
}
for(i =0; i<10; i++){
vetorB[i] = fatorial(vetorA[i]);
}
printf("Fatorial dos números do primeiro vetor: ");
for(i = 0; i<10; i++){
printf("%d\n", vetorB[i]);
}
}
Qualquer dúvida é só falar. Espero ter ajudado. Abraços e bons estudos!