Jump to content

Recommended Posts

Boa noite/dia gente. Preciso de ajuda aqui. Tenho um exercício no qual tenho de fazer um programa em pascal com o seguinte enunciado:

Considere a soma S dos termo da série infinita apresentada abaixo:

soma_infinita.png

Fazer um programa em Free Pascal que calcule o valor aproximado da soma S dos termos da série até o momento em que a diferença das normas (módulo) de 2 termos consecutivos for menor que 0,000001 ({i.e.}, norma da diferença das normas de dois termos consecutivos).

 

Segue meu algoritmos/programa:

 

program calcserie;
var
   soma, a1, a2, an  : real;
   sinal                : longint;
   cont, n, fat         : integer;

begin
   n := 0;
   a1 := 1;
   a2 := 0;
   soma := 0;
   cont := 1;
   fat := 1;
   an := 1;
   sinal := 1;

   while (an) > 0.000001 do
      begin
      n := n + 2;
        while cont <= n do
            begin
            fat := fat * cont;
            cont := cont + 1;
        end;
     soma := (soma + (a1 * sinal));
     sinal := sinal * -1;
     a2 := a1;
     a1 := ((1/fat));
        if (a2 < 0) then
        an := (a2 * -1) - a1
        else if (a1 < 0) then
        an := (a2) - (a1 * -1);
        end;
   write (soma:0:15);
end.

 

Meu erro está sendo a partir da 3 casa decimal

02.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By marlone
      Preciso fazer uma consulta no banco onde eu pego total gasto por CPF, somando cada row que for do mesmo CPF por exemplo:
       
       
      Cpf    ctro    vlr               vlrtotal
      158   166     1000         5000
      158   156     1000         5000
      158   1644   3000        5000
       
      159   168     2000         6000
      159   154     2000         6000
      159   111     2000         6000
       
      É possível?
    • By novo na programação
      O sistema consiste em ler os dados cadastrados (valores estáticos) de uma entrevista e
      fornecer as informações para as seguintes perguntas:
       
      1 - Quantidade de mulher e homens na área? (% de cada sexo)
      2 - Faixa etária? (Menor e maior idade por sexo). Criar um vetor idade para cada sexo.
      3 - Quem ganha mais? Homem ou Mulher? (Comparar médias de salários)
      4 - Quem é mais especializado? (Comparar quantidade com pós-graduação %)
       
      Ex1. Perguntas?
      Sexo (1- H, 2-M)
      Idade (?)
      Salário (?)
      Possui pós-graduação? (1-S, 2-N)

      Entrada (estática)

      Entrevistado 1
      Sexo = 1
      Idade = 19
      Salário = 4.000,00
      Possui pós-graduação = 2

      Entrevistado 2
      Sexo = 2
      Idade = 25
      Salário = 3.000,00
      Possui pós-graduação = 1

      Entrevistado 3
      Sexo = 1
      Idade = 18
      Salário = 5.000,00
      Possui pós-graduação = 2

      Entrevistado 4
      Sexo = 1
      Idade = 23
      Salário = 6.000,00
      Possui pós-graduação = 1 

      Entrevistado 5
      Sexo = 2
      Idade = 30
      Salário = 2.000,00
      Possui pós-graduação = 1

      SAÍDA
      1 - Quantidade de mulher e homens na área?
      60% homens e 40% mulheres
      2 - Faixa etária?
      homens (18-23) e mulheres (25-30)
      3 - Quem ganha mais? Homem ou Mulher?
      Homens (média 5.000,00) e Mulheres (média 2.500,00)
      4 - Quem é mais especializado?
      homens - 33% e mulheres - 100%
      Cálculo = qtdhomens com pós/qtdhomens *100
    • By makioplayer
      A pressão da minha mesa não está funcionando apenas no Paint Tool SAI, alguém sabe o que pode ser?
       
      Ela é uma Genius mousepen i608x.
    • By ViniciusRamoa
      Olá, comecei a estudar algoritimos e me informaram que o melhor programa para estudar é o Visualg, mas estou com um Problema, ele está preenchendo informações automaticamente onde o usuários deveria preencher, como nas imagens mostradas, ele deveria aguardar o usuário responder com seu nome, mas ele preenche automaticamente, como resolver este Problema? Pois eu acredito que o código está correto


    • By Hashira do Vento
      O exercício pede o que eu faça um código com uma matriz, onde eu peça uma linha qualquer ao usuário, e nela será feito a soma ou média dos elementos contidos.
      O problema é na hora da decisão do usuário na hora de escolher entre média ou soma, escrevendo a letra inicial de uma dessa palavras em maiúsculo. O "If" simplesmente não funciona, e eu acho que seja essa minha dificuldade, pois quando tirei o if, a soma funcionou normalmente (com o código atual a soma fica igual a zero no printf final). E sim, eu pesquisei a fundo sobre o tipo char, mas mesmo assim não consegui resposta alguma para a solução do meu problema :/
      Segue o código:
      Obs: Claramente, o meu código não está terminado (ainda falta pôr a parte da média), a partir do momento em que eu solucionar esse problema principal, creio que conseguirei finalizá-lo sem mais contratempos.
       
      #include <stdio.h> #include <stdlib.h> #include <locale> int main (void){ setlocale (LC_ALL, "Portuguese"); float M [2][2], media; int lin, x, soma1, soma2; char op[5]; printf ("Preencha a matriz: \n"); for (int l = 0; l<2; l++) { //linha for (int c = 0; c<2; c++ ) { //coluna scanf ("%f", &M[l][c]); } } printf ("Que operação você quer? S ou M?\n"); //Entrada do char, escolha da operação scanf ("%s", op); printf ("Em qual linha da matriz a operação deve ser realizada?\n"); scanf ("%d", &x); for (int l = x; l==x; l++) { for (int c = 0; c<2; c++ ){ printf ("%f \n", M[l][c]);//só mostrando os numeros da linha (ignore) if (op=="S") //tenho quase certeza que o problema se encontra aqui soma1= M[l][c]+soma1; } } printf ("O resultado da soma deu %d", soma1); //e na hora de mostrar a soma, ela sempre aparece como zero }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.