Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tony_alfa

[Resolvido] calculo de soma de fatorial em linguagem c

Recommended Posts

Olá pessoal sou no aqui imasters, como estou estudando linguagem C agora estou com dúvidas e problemas a serem resolvidos, e tenho a seguinte questão que estou tentando resolver, porém os resultados do programas que fiz esta dando errado gostaria de saber onde posso estar errando, agradecido.

 

Escrever um algoritmo que le um valor N inteiro e positivo e que
calcula e escreve o valor de E. E = 1 + 1/1! + 1/2! + 1/3!... + 1/N!.

 

consegui isso, mas a respostas estão dando erradas.

#include<stdio.h>

int main (void){
        int i, n;
        float fat, result;
        printf("Digite um numero : \n ");
        scanf("%d", &n);
        fat = 1;
        for(i=1; i<=n; i++){
            fat = fat * i;
             result = result + (1/fat);
            }
            printf("O valor de E é %d :", result);
	return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está  saindo errado porque seu algoritmo está errado.
A variável result não é inicializada, contém um valor aleatório e você soma 1/fat a esse valor.

Se N=1, como E = 1/0! + 1/1! + 1/2! + ... 1/N!, o resultado deveria ser igual a 2 ao invés de 1 (isso se a variável result assumisse o valor 0 automaticamente)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, pesquisando consegui consertar o erro, muito obrigado ai, boa tarde.

o resultado é esse:

#include<stdio.h>

int main (void){
    int i, n;
    float invfat, result;

    printf("Digite um numero:\n");
    scanf("%d", &n);
    
    result = 1.0;
    invfat = 1.0;
    for(i=1; i<=n; i++){
        invfat = invfat * 1.0/i;
        result = result + invfat;
    }
    
    //printf("%f\n", invfat);
    printf("O valor de E é: %f\n", result);

    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que o tópico está resolvido, mas decidi incluir apenas para expandir informações

 

Da maneira recursiva abaixo, você pode usar tanto em tempo de execução quanto em tempo de compilação, sendo essa última mais eficiente (lógico que nesse caso insignificantemente)

constexpr int fac( int i )
{
    return ( i < 2 ) ? 1 : fac( i  1 );
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá bigbig, valeu por mais essa dica, sou novato nesse ramo de linguagem C, uma pergunta, onde é inserido no código essa dica que você colocou? Se tiver como coloque o código inteiro e inclua ela, desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, tony_alfa disse:

Olá bigbig, valeu por mais essa dica, sou novato nesse ramo de linguagem C, uma pergunta, onde é inserido no código essa dica que você colocou? Se tiver como coloque o código inteiro e inclua ela, desde já agradeço.

Mal ae, não percebi que era C. Até onde sei, "constexpr" não tem em C. É só definir a função antes main ou declará-la antes de main e definir após.

 

#include <stdio.h>

int fac( int n )
{
    return ( n < 2 ) : 1 ? fac( n - 1 );
}

int main( )
{
    // Pegue o input do usuário para o fatorial, passe para fac( input ) e imprima no console
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por thiago_tw
      eu to com uma tarefa que preciso de ajuda, já tentei alguns algoritmos que achei por aqui mas nunca dá certo, mandei a imagem do que é para ser feito, agradecido se me ajudarem

    • Por BGSJunior
      Olá!
      Tenho uma tabela com os campos id, servico e valor. Preciso somar os valores contidos nos campos 'valor' de acordo com os filtros aplicados. Veja:
       
      SELECT *, SUM(valor) AS totalValores FROM financeiro_entrada WHERE servico LIKE "%suporte%"  
      Acima quero mostrar todos os serviços do tipo "suporte" e o campo 'totalValores' com o total dos serviços em cada registro encontrado. Assim:
       

       
      Qual SQL devo criar para mostrar os registros acima? O SQL que fiz mostra apenas um registro. Assim:
       
       
       
      Preciso mostrar todos os registros que contenha 'suporte' como serviço. Assim: 
       

    • Por paulopoxoreo1234@gmail.com
      Dado o trecho de código em C listado abaixo responda as perguntas a seguir.
      Cont = result = 1;
      For ( i=0; i<5; i= i+0.1){
            Cont = cont+i;
            Result  *= cont;
            Printf(“%f", result);
      }
      a)      O que será impresso depois da primeira iteração deste código?
      b)      Quantas vezes este laço precisará ser executado para que encontre a condição de término ?
      c)      Faça um trecho de código em C para quebrar esse laço na decima quinta iteração.
    • Por ednan
      estou precisando de ajuda neste trabalho se alguem souber e puder ajudar agradeço de coraçao
       
    • Por Hokage1
      Boa Tarde estou quebrando a cabeça com um trabalho, podem me ajudar ?:
       
      ara execução do projeto final siga as instruções: 
       
      (Tarefa 1) Elaborar um programa em Linguagem de Programação C com 2 interfaces (telas); uma para o cadastro dos 10 estudantes e outra para os dados analíticos. (Tarefa 2) Somente após finalizar a Tarefa 1, faça uma investigação para identificar quais recursos (não abordados nesta disciplina), em Linguagem de Programação C, que poderiam tornar a construção desta aplicação mais sofisticada e, até mesmo, mais fácil de implementar? Explique (não há necessidade de implementar o novo recurso). Enviar a resposta da Tarefa 1 (código-fonte escrito em Linguagem de Programação C) e da Tarefa 2 para avaliação em um arquivo no formato MS-Word com nome no seguinte padrão: LCC-IA-2020-3-Mod3-Projeto-Seu_Nome.docx (Arquivos nomeados fora deste padrão serão descartados). Use o fórum do Módulo 03 para postar suas dúvidas e/ou colaborar com os colegas.  
      TAREFA 1 – Programa de cadastro e análise de dados de 10 Estudantes:
      1.Tela: Criar a tela a seguir que permita a entrada de dados de 10 estudantes diferentes. Assim que o usuário digitar os dados do último estudante, o programa deverá ir para a 2.tela.
      Tela 1 – Interface (Tela) para cadastro de 10 estudantes
      2.Tela: Criar a tela a seguir que apresente os dados analíticos, a partir dos dados digitados na Tela 1. Na sequência, encerrar o programa.
       
      tela 2 – Interface (Tela) do quadro analítico
      OBSERVAÇÕES:
      Todos indicadores do Quadro Analítico deverão ser calculados (nenhum digitado pelo usuário);
       
      A “Maior Nota Individual” deverá ser a maior nota obtida por um estudante em qualquer uma das 2 avaliações; A “Menor Nota Individual” deverá ser a menor nota obtida por um estudante em qualquer uma das 2 avaliações; A “Média da Sala” deverá ser a média das médias dos 10 estudantes; A “Melhor Média da Sala” deverá ser a maior média obtida por 1 estudante; A “Pior Média da Sala” deverá ser a menor média obtida por 1 estudante.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.