Série de sequência de números

23/07/2018

2

Fiz o exercício, mas não sei porque não está funcionando.

{ Escreva um algoritmo que calcule e escreva a soma dos dez primeiros termos da seguinte serie: 2/500 - 5/450 + 2/400 - 5/350 + ... }

#include <iostream>
#include <cstdlib>
#include <stdio.h>

using namespace std;
int main()
{
setlocale(LC_ALL, "Portuguese");
int i, denominador;
float s;
denominador = 500;
s = 0;
for (i=1;i<=10;i++)
{
if ((i % 2) != 0)
{
s = s + (2/denominador);
}
else
{
s = s - (5/denominador);

}
denominador = denominador - 50;
cout << s << "/" << denominador;

}

return 0;
}

D sempre 0250. Não descubro o erro.
Responder

Post mais votado

23/07/2018

Paulo,

No seu if (if ((i % 2) != 0)), não seria, if ((i % 2) == 0)? Uma vez que os pares deverão dividir 2/ denominador.
Responder

Mais Posts

26/07/2018

Paulo Kutwak

É isso mesmo, a configuração do compilador estava errada. Quase tudo certo, só falta eu descobrir porque o numerador não está sendo alterado. Valeu. Depois coloco a resposta.
Responder

26/07/2018

Paulo Kutwak

Achei a resposta:

#include <stdio.h>

int main() {
int denominador = 500;
float s = 0;

for (int i=1; i<=10; i++) {
if ((i % 2) != 0)
s = s + (2 / float(denominador));
else
s = s - (5 / float(denominador));

denominador = denominador - 50;
}

printf("S = 2/500 - 5/450 + 2/400 - 5/350 + ...");
printf("\\n\\n");
printf("S = %10.7f\\n", s);
}
Não entendi porque fazer a conversão para float, e se fosse tudo inteiro? Coloquei tudo inteiro e não funcionou.
Responder

26/07/2018

Paulo Kutwak

Ainda não é isso. está mostrando um valor com ponto decima, tem de mostrar fração e está dando 0 no numerador. Ainda vou descobrir.
Responder