Faça uma função que receba um vetor A de 10 elementos inteiros, por parâmetro. Ao final dess função, o vetor B deve conter o fatorial de cada número do vetor A. O vetor B deve ser mostrado no programa principal.
A 2 1 0 3 4 ldots
B 2 1 1 6 24 ldots

Passo 1

Beleza, vamos recapitular o que a gente tem aqui. O enunciado pede que a gente crie uma função que receba um vetor A de 10 inteiros e, depois de processar cada elemento de A, preencha um vetor B com o fatorial de cada valor de A. No final, o programa principal deve mostrar o vetor B.
Conteúdo envolvido:
  • Como passar vetores (arrays) para funções em C
  • Looping (laços) para percorrer vetores
  • Cálculo de fatorial, cuja definição é
n! = 1, & se n=0, n times (n-1) times dots times 1, & se n>0
O que precisamos: protótipo da função, laço para calcular fatorial e um laço para percorrer o vetor de tamanho 10.

Passo 2

Vamos criar o protótipo da função. Em C, a gente passa o vetor como ponteiro, então a assinatura pode ser:
void calculaFatorial(int A[], int B[], int tamanho);
Aqui:
  • A[] é o vetor de entrada com os valores originais,
  • B[] será preenchido com os fatoriais,
  • tamanho (que vai valer 10) indica quantos elementos tem o vetor.

Passo 3

Dentro da função, precisamos percorrer cada posição i de 0 até tamanho-1 e calcular o fatorial de A[i]. Para calcular o fatorial de um número x:
  1. Se x == 0, o resultado é 1, porque por definição 0! = 1.
  2. Se x > 0, usamos um loop:
    int fat = 1;
    for(int j = 1; j <= x; j++) {
        fat = fat * j;
    }
    
    Ao final, fat vale x! = x times (x-1) times dots times 1.
Dentro de calculaFatorial fica assim:
void calculaFatorial(int A[], int B[], int tamanho) {
    for(int i = 0; i < tamanho; i++) {
        int x = A[i];
        int fat = 1;
        if(x > 0) {
            for(int j = 1; j <= x; j++) {
                fat *= j;
            }
        }
        // Se x for 0, fat já está 1
        B[i] = fat;
    }
}

Passo 4

No programa principal (main), a gente:
  1. Declara e inicializa o vetor A[10] com os valores desejados.
  2. Declara um vetor B[10] sem inicializar (vai ser preenchido pela função).
  3. Chama calculaFatorial(A, B, 10);
  4. Percorre B para imprimir cada valor.
Fica algo assim:
#include <stdio.h>

void calculaFatorial(int A[], int B[], int tamanho) {
    for(int i = 0; i < tamanho; i++) {
        int x = A[i];
        int fat = 1;
        if(x > 0) {
            for(int j = 1; j <= x; j++) {
                fat *= j;
            }
        }
        B[i] = fat;
    }
}

int main() {
    int A[10] = {2, 1, 0, 3, 4, 5, 6, 7, 8, 9};
    int B[10];

    calculaFatorial(A, B, 10);

    printf("Vetor B (fatoriais):\n");
    for(int i = 0; i < 10; i++) {
        printf("%d ", B[i]);
    }
    printf("\n");
    return 0;
}

Resposta

Veja acima o código completo em C que resolve o exercício, dividindo a lógica em função e programa principal.

Exercícios relacionados