Faça uma função que receba um vetor
de 10 elementos inteiros, por parâmetro. Ao final dess função, o vetor
deve conter o fatorial de cada número do vetor
. O vetor
deve ser mostrado no programa principal.
|
2 | 1 | 0 | 3 | 4 |
|
---|---|---|---|---|---|---|
|
2 | 1 | 1 | 6 | 24 |
|
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:
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 é
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
:- Se
x == 0
, o resultado é 1, porque por definição. - Se
x > 0
, usamos um loop:
Ao final,int fat = 1; for(int j = 1; j <= x; j++) { fat = fat * j; }
fat
vale.
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:- Declara e inicializa o vetor
A[10]
com os valores desejados. - Declara um vetor
B[10]
sem inicializar (vai ser preenchido pela função). - Chama
calculaFatorial(A, B, 10);
- 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.