Ir ao conteúdo
  • Cadastre-se
diogo moura

C calcular fatorial passagem de referencia

Recommended Posts

Estou iniciando meus estudos na linguagem c,porém estou com dificuldades na parte de ponteiros,estou tentando fazer o cálculo de um fatorial, alguém poderia me ajudar com essa questão,,o abaixo o meu código

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

void calulcafatorial(int num,int *fatorial);

int main(void)
{
	int num,*fatorial;
	scanf("%d",&num);
	calulcafatorial(num,&fatorial);
}

void calulcafatorial(int num,int *fatorial)
{
	int fat;
	for(fat=1;*fatorial>1;*fatorial--)
	{
		fat*=*fatorial;
	}
	printf("%d\n",fat);

}a

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>
#include <stdlib.h>

void calculafatorial(int num, int* fatorial);

int main(void)
{
    int num, fatorial;
    scanf("%d", &num);
  
    calculafatorial(num, &fatorial);
}

void calculafatorial(int num, int* fatorial)
{
    for(int fat = 1; fat <= num; fat++)
        *fatorial *= fat;
  
    printf("%d\n", *fatorial);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Versão recursiva \@/

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

int fibo(int N){
    if (N < 1) return -1;
    if(N == 1 || N == 2) return 1;
    return fibo(N-1) + fibo(N-2);
}

long int fat(int N){
    if (N<0) return -1;
    if(N==0) return 1;
    return N*fat(N-1);
}

int main(){
    int val;
    printf("Informe um inteiro: ");
    scanf("%d", &val);
    printf("Fatorial de %d = %d", val, fat(val));
    printf("\n");
    printf("Fibo = %d \n", fibo(val));
    system("PAUSE");
} 

Só pra descontrair tenho uma verão em Assembly também haha

include 'emu8086.inc'
ORG 100H
jmp enquanto ; Salto para a funcao enquanto   

; Definicao de variaveis
i dw ?   
a dw ?
b dw ? 
aux dw ?   

enquanto:;{

MOV [a],0 ;Inicializa variavel   
MOV [b],1 ;Inicializa variavel 
MOV [i],0 ;Inicializa variavel 
MOV [aux],0 ;Inicializa variavel 

continua: ;ENQUANTO INICIO   
       
testaCondicao: ; {
cmp BX,232 ; Utilizo cmp com jmp (jg) para criar salto condicional (cmp)
jg FIM ;Se i for menor que 13 continua, caso contrario, salto para FIM (termina)    
;CONDICAO FIM  

; aux = a+b - INICIO
MOV AX,[a]
MOV BX,[b] 
ADD BX,AX    
MOV [aux],BX    
; aux = a+b - FIM
 
; A = B - INICIO
MOV BX,[b] ;BX = b 
MOV [a],BX ;a = BX   
; A = B - FIM

; B = aux - INICIO
MOV BX,[aux] ;BX = aux 
MOV [b],BX ;b = BX   
; B = aux - FIM 

inc [i] ;Ao final de cada LOOP, i++   
jmp continua ;Ao final de cada LOOP, salto novamente para a funcao continua - ENQUANTO FIM 
; }

FIM:;}
hlt ;usado para acabar com a execução (parar o processador)
end

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×