Obtenha as melhores soluções para todas as suas perguntas no Sistersinspirit.ca, a plataforma de Q&A de confiança. Experimente a conveniência de encontrar respostas precisas para suas perguntas de uma comunidade dedicada de especialistas. Descubra soluções detalhadas para suas dúvidas de uma ampla gama de especialistas em nossa plataforma amigável de perguntas e respostas.

A tabela a seguir contém os fatoriais de 0 a 12: Considerando a tabela ao lado e as regras descritas acima, desenvolva o algoritmo conforme regras descritas abaixo: A: Deverá ser solicitado ao usuário para que informe um número inteiro qualquer; B: Caso o valor informado seja negativo, o fatorial não deverá ser calcula, sendo exibida ao usuário a mensagem "Não há fatorial para valores negativos!"; C: Caso seja informado um valor maior do que o maior valor contido na coluna n da tabela 01, o algoritmo deverá informar ao usuário que o fatorial de tal número não pode ser calcula pelo programa, uma vez que o cálculo resulta em um valor muito elevado; D: O valor do fatorial deverá ser mostrado após ser mostrada a descrição de todos os elementos da sequência. Ex.: Cálculo de fatorial 5! = 5 X 4 X 3 X 2 X 1 = 120 E: Resultados esperados: a) 0! = 1 (valor 0,25) b) 1! = 1 (valor 0,25) c) Cálculo de fatorial 5! = 5 X 4 X 3 X 2 X 1 = 120 (valor 1,00) d) Não há fatorial para valores negativos! (valor 0,25) e) O programa não pode resolver o fatorial para o número informado! (valor 0,25)



Sagot :

epanta

Olá,
você não disse qual sintaxe utiliza, então pode ser que tenha que alterar a resposta conforme o que viu em sala. Por exemplo, alguns autores usam IMPRIMA ao invés de ESCREVA, ou então usam { e } ao invés de INÍCIO e FIM, etc.
Coloquei "." no início das linhas para simular a identação e ficar mais fácil de entender.

INICIO
..INTEIRO n,i,resultado;
..ESCREVA("Digite um numero inteiro: ");
..LEIA(n);
..SE n<0 ENTÃO
....ESCREVA("Não há fatorial para numeros negativos!");
..SENÃO SE n>12 ENTÃO
..........ESCREVA("O programa não pode resolver o fatorial para o numero informado!");
........SENÃO SE n<2 ENTÃO
................ESCREVA(n,"! = ");
..............SENÃO
................ESCREVA("Calculo de fatorial ",n,"! = ");
................resultado = 1;
................PARA i DE n ATÉ 2 FAÇA
..................resultado = resultado * i;
..................ESCREVA(i," X ");
................FIMPARA
................SE n>1 ENTÃO ESCREVA (1," = ");
................ESCREVA(resultado);
..............FIMSENÃO
FIM

Para testar o algoritmo, usei o código C:
void main()
{
int n,i,resultado;
//printf("Digite um numero inteiro: ");
//scanf("%d",&n);
n = 5;
if (n<0) printf("Não há fatorial para numeros negativos!");
else if (n>12)
printf("O programa não pode resolver o fatorial para o numero informado!");
else{
if (n<2) printf("%d! = ",n); else printf("Calculo de fatorial %d! = ",n);
resultado = 1;
for (i=n;i>=2;i--){
resultado = resultado * i;
printf("%d X ",i);
}
if (n>1) printf("1 = ");
printf("%d",resultado);
}
}

no qual substituí o LEIA por uma atribuição direta pois usei o compilador online codepad.org.
Para testar os diversos valores de n fui substituindo o comando n=5 por, por ex, n=-1, n=0,
n=12, etc.

Explicando melhor: você pode entrar na página codepad.org e colar o código acima (com a opção da linguagem C marcada). Aí clica em Submit e o site executa o seu código. Só não funcionam comandos de entrada, como scanf (ou seja: LEIA).

Obs: resolvi o exercício conforme solicitado, entretanto uma solução mais "elegante" seria
utilizar uma função recursiva para o fatorial. Caso o tópico de estudo sejam funções
recursivas, por favor escreva outra pergunta deixando isso claro!

Esperamos que nossas respostas tenham sido úteis. Volte a qualquer momento para obter mais informações e respostas a outras perguntas que tenha. Esperamos que nossas respostas tenham sido úteis. Volte a qualquer momento para obter mais informações e respostas a outras perguntas que tenha. Temos orgulho de fornecer respostas no Sistersinspirit.ca. Visite-nos novamente para obter mais informações.