Ir ao conteúdo
  • Cadastre-se

C Retornar o valor do fatorial


Augusto Megres
Ir à solução Resolvido por Olinad212,

Posts recomendados

Boa tarde, estou fazendo uns exercicios, e estou com dificuldade em receber o valor do fatorial na função

 

Tentei de várias formas diferentes, mas não consigo concluir o exercicio por este erro, se alguem souber o por que estou errando, e me ajudar a consertar serei grato

Obrigado!!

 

#include <stdio.h>
#include <stdlib.h>

/*3) Escreva um procedimento que leia um número n que indicará a quantidade de números
inteiros positivos que devem ser lidos a seguir. A função deve imprimir uma tabela de n
linhas onde cada linha deve conter um dos valores inteiros lidos seguido de seu dobro,
seu quadrado e seu fatorial. Exemplo: se os valores lidos forem 2 3 5, a saída deverá ter
2 linhas na tabela, com x
x   2x   x*x   x!*/



int main() {
	int n, x=0, v[x], f=0, fat;
		printf("Quantos numeros voce ira digitar?\n");
		scanf("%i", &n);
		printf("Digite os numeros\n");	
	while (x<n){
		scanf("%i", &v[x]);
		x++;
	}
		
		for (x=0;x<n;x++){
					f=v[x];
					for (fat=v[x];f>1;f--){
						fat=fat*f;
					}
			printf("%i   %i   %i   %i\n", v[x], 2*v[x], v[x]*v[x], fat);			
		
	}

}

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Analisando seu código, percebi que ao calcular o fatorial de um número, a primeira multiplicação que está sendo feita é do número por ele mesmo.

Por exemplo, ao calcular o fatorial de 5, que é igual a 120, o correto seria: 5*4*3*2*1 = 120.

O seu código está fazendo 5*5*4*3*2*1.

Para tal, basta corrigir a linha na qual o fatorial é calculado, subtraindo 1 do valor de f.

 

Segue o código abaixo.

 

Faça os testes e veja se a situação resolve o seu problema.

#include <stdio.h>
#include <stdlib.h>

/*3) Escreva um procedimento que leia um número n que indicará a quantidade de números
inteiros positivos que devem ser lidos a seguir. A função deve imprimir uma tabela de n
linhas onde cada linha deve conter um dos valores inteiros lidos seguido de seu dobro,
seu quadrado e seu fatorial. Exemplo: se os valores lidos forem 2 3 5, a saída deverá ter
2 linhas na tabela, com x
x   2x   x*x   x!*/



int main() {
	int n, x=0, v[x], f=0, fat;
		printf("Quantos numeros voce ira digitar?\n");
		scanf("%i", &n);
		printf("Digite os numeros\n");	
	while (x<n){
		scanf("%i", &v[x]);
		x++;
	}
		
		for (x=0;x<n;x++){
					f=v[x];
					for (fat=v[x];f>1;f--){
						fat=fat*(f-1);
					}
					printf("\n\n");
			printf("%i   %i   %i   %i\n", v[x], 2*v[x], v[x]*v[x], fat);			
		
	}

}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

31 minutos atrás, Olinad212 disse:

Analisando seu código, percebi que ao calcular o fatorial de um número, a primeira multiplicação que está sendo feita é do número por ele mesmo.

Por exemplo, ao calcular o fatorial de 5, que é igual a 120, o correto seria: 5*4*3*2*1 = 120.

O seu código está fazendo 5*5*4*3*2*1.

Para tal, basta corrigir a linha na qual o fatorial é calculado, subtraindo 1 do valor de f.

 

Segue o código abaixo.

 

Faça os testes e veja se a situação resolve o seu problema.


#include <stdio.h>
#include <stdlib.h>

/*3) Escreva um procedimento que leia um número n que indicará a quantidade de números
inteiros positivos que devem ser lidos a seguir. A função deve imprimir uma tabela de n
linhas onde cada linha deve conter um dos valores inteiros lidos seguido de seu dobro,
seu quadrado e seu fatorial. Exemplo: se os valores lidos forem 2 3 5, a saída deverá ter
2 linhas na tabela, com x
x   2x   x*x   x!*/



int main() {
	int n, x=0, v[x], f=0, fat;
		printf("Quantos numeros voce ira digitar?\n");
		scanf("%i", &n);
		printf("Digite os numeros\n");	
	while (x<n){
		scanf("%i", &v[x]);
		x++;
	}
		
		for (x=0;x<n;x++){
					f=v[x];
					for (fat=v[x];f>1;f--){
						fat=fat*(f-1);
					}
					printf("\n\n");
			printf("%i   %i   %i   %i\n", v[x], 2*v[x], v[x]*v[x], fat);			
		
	}

}

 

Não consegui perceber um erro tão besta, talvez por que seja iniciante kkk, valeu amigo!!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!