Simples programa em C que calcula o fatorial de um número qualquer:
#includeint main() { int fat, n; printf("Insira um valor para o qual deseja calcular seu fatorial: "); scanf("%d", &n); for(fat = 1; n > 1; n = n - 1) fat = fat * n; printf("\nFatorial calculado: %d", fat); return 0; }
Como funciona?
A variável “n” armazena o número no qual se quer calcular o fatorial, o loop é executado, a variável “n” é multiplicada por “fat”, então temos “fat = n” e a cada iteração 1 unidade é subtraída do número escolhido até que ele seja igual à 1, ou seja, a variável “fat” é multiplicada a cada iteração pelo antecessor do número escolhido.
gostaria de receber esta atividade para testar com meus alunos.
Um pouco mais complicado, pois é necessário mostrar as operações na tela juntamente com o resultado, exige um pouco mais do conhecimento e do raciocínio lógico. Se quiser usar segue logo abaixo o código.
#include
int i,n,fat=1;
int main()
{
printf(“Digite o numero a ser fatorado:”);
scanf(“%d”,&n);
for(i=n;i>1;)
{
fat=fat*i;
printf(“%dX”,i);
i–;
}
printf(“1=%d”,fat);
getch();
return(1);
}
seu codigo ta faltando coisa
Minha solução
#include
#include
int main(){
int num, i=1;
// Fatoração retorna numeros grandes que não cabem em 2 bites
float fator;
printf(“Digite o numero que deseja calcular o fatorial”);
scanf(“%d”, &num);
fator=1;
do{
fator=fator * i;
i++;
} while (i<=num);
printf("O resultado eh %f", fator);
return'0';
system("pause");
}
Muito bom! Parabéns!
Aqui está o meu!
Deve tá um pouco grande, pois, estou começando aprender função agora!
#include
#include
int x(int y);
int main()
{
int fat, n;
n = x(0);
for(fat = 1; n > 1; n = n – 1){
fat = fat * n;
printf(” x %d”, n-1);
}
printf(“\n\nFatorial calculado: %d\n\n”, fat);
system(“pause”);
return 0;
}
int x(int y){
printf(“Insira um valor para o qual deseja calcular seu fatorial: “);
scanf(“%d”, &y);
printf(“\n%d”, y);
return y;
}
Esse algorítimo é recursivo?
Não, o algoritmo não é recursivo, ele é iterativo.
Para entender recursividade, antes precisa entender recursividade!
time limit exceeded
main()
{
float a,x,y;
int i;
i=0;
printf(“digite o numero que deseja calucular”);
scanf(“%f”,&a);
while(i<a){
x=a-1;
y=a*x;
i++;
}
printf("%f",y);
}
#include
#include
int main(){
unsigned long fat;
int n;
printf(“Insira um valor para o qual deseja calcular seu fatorial:\n”);
scanf(“%i”,&n);
fflush(stdin);
for(fat = 1; n > 1; n = n – 1){
fat = fat * n;
}
printf(“Fatorial calculado: %lu\n”, fat);
system(“pause”);
return 0;
}
int main(void) {
int num1,result;
printf(“Digite o numero que deseja saber o fatorial: “);
scanf(“%d”,&num1);
result = 1;
for ( int i = 1; i <= num1;i++){
result = result * i;
}
printf("\n%d\n",result);
system("pause");
return 0;
}
Porra, estao sem spidi
Olá, Boa noite!
Gostaria de te parabenizar pelo site. Ele me esclareceu algumas coisas sobre algorítimos, porém eu encontrei dificuldades em relação a esse Programa em Linguagem C que calcula o fatorial de um número.
Ao copiar e colar os algorítimos o programa não funcionou corretamente. Gostaria de saber se poderiam me mostrar o erro ou me auxilar na montagem de um programa semelhante.
Desde já agradeço a atenção.
Sim claro, meu email é [email protected]
#include
#include
int fatorial(int n){
if (n == 0)
return 0;
else
return n + fatorial(n-1);
}
int int main(){
printf(“%d\n”,soma(15)); // Entrada do número a ser fatorado
system(“pause”);
return 0;
}
Pessoal como que eu posso fazer a fatorial de uma matriz de duas dimensões???
Tão sem spidi. BAGOSSSSS
#include
int main()
{
int n, t, i;
t=1;
scanf(“%d”, &n);
for (i=0; i<=n; i++)
t=t*1
printf("%d\n",t);
return 0;
}
ta errrado
Quebrei a cabeça fazendo este em casa, o algoritmo aceita apenas numeros positivos, e depois do numero 1 realiza um FOR para calcular o Fatorial. Espero que este post possa estar ajudando vocês também.
/* usando 5 como exemplo, se soma = 0, soma vai ser 5* (5-1), depois faz 5*(5-x), o ‘x’ vai aumentando exponencialmente no loop ‘for’ */
// Algoritmo exibe fatorial de um numero.
#include
#include
int main ()
{
int num, x = 1, soma = 0;
do
{
printf(“Digite um numero inteiro: “);
scanf(” %d”, &num);
} while (num <= 0);
if (num == 1)
{
soma = 1;
}
else
{
for ( x = 1; x < num; x++)
{
if (soma != 0)
{
soma = soma * (num – x);
}
else
{
soma = (num – x) * num; // se der erro muda este 'x' por '1'
}
// PARA FAZER TESTE DE MESA APAGUE AS ' // ' ABAIXO
//printf("Etapa = %d \t Conta * %d = %d\n", x, (num – x), soma);
}
}
printf("\n\tO fatorial de %d e %d.\n\n", num, soma);
system("pause");
return 0;
}
#include
int main(int argc, char const *argv[])
{
int i, numero, fatorial;
printf(“Introduza o numero para calcular o factorial do mesmo:\n”);
scanf(“%d”,&numero);
fatorial = 1;
for (i=1; i <= numero; ++i)
{
fatorial = fatorial * i;
}
printf("fatorial(%d)=%d\n",numero,fatorial);
return 0;
}
main()
{
int opcao, i;
float num, aux, fat;
do
{
printf(“\t\t\t FATORIAL\n”);
printf(“\t\t\t [1] – Entre com o numero a ser fatorado:\n”);
printf(“\t\t\t [2] – Sair\n”);
printf(“\t\t\t Opcao [ ] \b\b\b”);
do
{
opcao = getche();
if(opcao’2′){
printf(“\n\n\t\t Opcao Invalida. Entre novamente com a sua Opcao \n”);
printf(“\t\t\t Opcao [ ]\b\b\b”);
}}while(opcao ‘2’);
if (opcao == ‘1’){
scanf(“%f”, &num);
if(num<0){
printf("Valor Invalido. Insira um numero inteiro positivo");}
else{
while(i<num){
fat = num -1;
aux = num * fat;
i++;
}}}
printf("\n\n\t\t O reusltado eh = %f \n\n\n", aux);}
while(opcao != '2');
system("pause");
}
gostaria de saber como eu posso fazer uma função que receba um número inteiro como parâmetro e devolva o seu fatorial em precisão dupla. Faça um programa para testar a função.
Você pode tentar usar Double ao invés de INT
Sinto que fiz do jeito mais burro possível, mas segue o resultado mesmo assim.
#include
#include
int main(){
int num, fatorial, contador, baseNum;
printf(“Insira um numero: “);
scanf(“%d”, &num);
contador = num – 1;
baseNum = num;
fatorial = num * contador;
for (contador = contador – 1 ; contador >= 1; contador–)
{
fatorial = fatorial * contador;
}
printf(“O resultado do fatorial de %d eh %d.”, baseNum, fatorial);
return 0;
}
int main(){
int fat, n;
printf(“Insira um valor para o qual deseja calcular seu fatorial: “);
scanf(“%d”, &n);
for (fat = 1; n > 1; fat *= n–);
printf(“\nFatorial calculado: %d”, fat);
return 0;
}
#include
void fatorial(){
int i,n,fat = 1;
scanf(” %d”,&n);
for(n ;n>0;n–){
fat = fat*n;
}
printf(“%d\n”, fat);
}
int main()
{
fatorial();
return 0;
}
int main()
{
int num=6, fat;
printf(“\t\t****Calculo do fatorial de 6****\n\n”);
while(num>1)
{
fat *= num;
num–;
}
printf(“\nO fatorial de 6 e >> %i <<\n\n", fat);
return 0;
}
Usando essa solução, o fatorial de 13 em diante não é exibido corretamente. Acredito que tal problema ocorra pelo fato de variáveis do tipo INT estarem sendo usadas, ao invés de um long ou algo assim. O problema real é que ao testar esse programa, não obtive sucesso mesmo alterando o tipo de variável.
como tu corrigiu o problema?
Eu tenho uma certa preferência por “while”. Acabei utilizando quatro variáveis, e ficou assim:
#include
int main(){
int n, aux, p, fat;
scanf(“%d”, &n);
aux=n*(n-1);
fat=aux;
while(n>=3){
n=n-1;
p=n-1;
fat=aux*p;
aux=fat;
}
printf(“%d”, fat);
}
Fia diferente. Segue abaixo minha solicitação
int main() {
int n, y, i;
printf(“Digite um número inteiro positivo N: “);
scanf(“%d”, &n);
printf(“Digite outro número inteiro positivo Y: “);
scanf(“%d”, &y);
printf(“Os múltiplos de %d inferiores a %d são: “, y, n);
for(i = y; i < n; i += y) {
printf("%d ", i);
}
return 0;
}