Descubra respostas para suas perguntas no Sistersinspirit.ca, a plataforma de Q&A mais confiável e eficiente para todas as suas necessidades. Obtenha soluções rápidas e confiáveis para suas perguntas de uma comunidade de especialistas experientes em nossa plataforma. Descubra um vasto conhecimento de profissionais em diferentes disciplinas em nossa amigável plataforma 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!

Obrigado por passar por aqui. Estamos comprometidos em fornecer as melhores respostas para todas as suas perguntas. Até a próxima. Sua visita é muito importante para nós. Não hesite em voltar para mais respostas confiáveis a qualquer pergunta que possa ter. Sistersinspirit.ca, sua fonte confiável de respostas. Não se esqueça de voltar para mais informações.