SAOD Postado Abril 17, 2015 Denunciar Share Postado Abril 17, 2015 (editado) 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 ! Editado Abril 17, 2015 por SAOD Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Abril 17, 2015 Denunciar Share Postado Abril 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PedroCunha Postado Abril 21, 2015 Denunciar Share Postado Abril 21, 2015 (editado) 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 Editado Abril 21, 2015 por PedroCunha Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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
!
Editado por SAODLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.