int main() {
	/*
	EXPLICAÇÃO: printf("\xNN");
	O '\xNN' serve para informar ao 'printf()' que iremos imprimir um caracter
	da tabela ASCII. O valor do caracter na tabela é NN em hexadecimal
	*/
	const eh = "\x82"; // 'é' na tabela ASCII;
	const a_til = "\xC6"; // 'ã' na tabela ASCII;
	const uh = "\xA3"; // 'ú' na tabela ASCII;
	const ah = "\xA0"; // 'á' na tabela ASCII;
	int n;
	printf("Calcular o fatorial de: ");
	scanf("%i", &n);
	if (n >= 0) {
		unsigned long long int fatorial;
		if (n <= 20) { //O maior fatorial que conseguimos calcular com um 'unsigned long long int' é o fatorial de 20.
			fatorial = calcularFatorial(n);
			printf("O Fatorial de %i %s %llu \n", n, eh, fatorial);
		}
		else {
			printf("ERRO: O valor digitado %s muito alto! Digite um valor de no m%sximo 20\n", eh, ah);
		}
	}
	else {
		printf("ERRO: N%so existe fatorial de n%smero negativo!\n", a_til, uh);
	}
	system("pause");
	return 0;
}
void main(){
  int num = 0;
  unsigned int opcao;
  unsigned int total = 0;
  setlocale(LC_ALL, "Portuguese");
  //system("clear"); // limpa console, util para Linux

  lerNumero(&num);

  do{
    imprimeMenu(&opcao);
    switch(opcao){
      case 1:
        total = calcularFatorial(num);
        printf("Fatorial: %d \n", total);
        break;
      case 2:
        total = calcularSomatorio(num);
        printf("Somatório: %d \n", total);
        break;
      default:
        printf("Opção inválida. \n");
        break;
    }
  } while(opcao < 1 || opcao > 2);
  
}