Jump to content
Fórum Script Brasil
  • 0

Efetuando a expressão


SAOD

Question

Boa tarde amigos,

Alguém poderia me ajudar a resolver este problema:

O codigo tem que ler um valor n inteiro e positivo e depois calcular a seguinte expressão:

S = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n

Se n for menor que zero da uma mensagem de erro.

O valor final deve estar em 6 casas decimais.

O que eu consegui fazer: http://pastebin.com/pBL5PfZG

Estou em desde meio dia tentando, já não sei mais o que testar.

Grato

!

Edited by SAOD
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Fiz um código aqui, comecei a estudar c a pouco tempo

#include <stdio.h>

int main()
{
int numeroqualquer, i = 0;
float s = 0;

puts("Digite um valor inteiro positivo:");
scanf("%d", &numeroqualquer);

while(numeroqualquer < 1)
{
    puts("\nErro na entrada do valor\n\nEntre um valor inteiro positivo");
    fflush(stdin);
    scanf("%d", &numeroqualquer);
}

while(i++ < numeroqualquer) s += 1.0 / i;


printf ("\n----------------------------------------------------");
printf("\n------------------- RESULTADO ----------------------\n");

printf("\nResultado Final: %.6f", s);

printf ("\n\n----------------------------------------------------");

return 0;
}
Link to comment
Share on other sites

  • 0

Olá, amigos.

ArteEN, cuidado com o seu loop: numeroqualquer < 1 só impede que o usuário dê valores decimais menores do que 1 para n. Se ele digitar 2.5, por exemplo, o seu programa deixa passar.

Fiz da seguinte maneira:

/*
Coder: Pedro Milreu Cunha
Tester: Pedro Milreu Cunha
Date: 04/21/2015
*/

#include <iostream>
#include <limits>
#include <iomanip>
#include <locale>

using namespace std;

float n = 0;
float Valor_da_Soma = 0;

void Perguntar_valor_da_variavel(float);
void Calcular_Soma(float);
void Mostrar_soma(float);

void Perguntar_valor_da_variavel(float n)
{
    int parte_inteira_n = 0;
    cout << "\n\nDigite o valor de n (n deve ser positivo e inteiro)." << endl;
    cin >> n;
    cin.sync();
    parte_inteira_n = n;
    if ( (!cin) || (n < 0) || ((n - parte_inteira_n) != 0))
    {
        cout << "\nValor inválido." << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        Perguntar_valor_da_variavel(n);
    }
    else
    {
      cin.sync();
      Calcular_Soma(n);
    }
}

void Calcular_Soma(float n)
{
    float i = 0;
    float soma_parcial = 0;
    for (i = 1; i <= n; i++)
    {
        soma_parcial = (1/i);
        Valor_da_Soma += soma_parcial;
    }
    Mostrar_soma(Valor_da_Soma);
}

void Mostrar_soma(float Valor_da_Soma)
{
    cout << fixed << setprecision(6) << endl;
    cout << "O valor da soma é " <<  Valor_da_Soma << endl;
}

int main()
{
    setlocale(LC_ALL, "Portuguese");
    Perguntar_valor_da_variavel(n);
    cin.get();
    return 0;
}

Abraços,
Pedro

Edited by PedroCunha
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...