SAOD Posted April 17, 2015 Report Share Posted April 17, 2015 (edited) 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 April 17, 2015 by SAOD Quote Link to comment Share on other sites More sharing options...
0 ArteEN Posted April 17, 2015 Report Share Posted April 17, 2015 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; } Quote Link to comment Share on other sites More sharing options...
0 PedroCunha Posted April 21, 2015 Report Share Posted April 21, 2015 (edited) 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 April 21, 2015 by PedroCunha Quote Link to comment Share on other sites More sharing options...
Question
SAOD
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 SAODLink to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.