Por favor me ajudem! Não consigo sair dessa questão!
Faça um programa em linguagem C que calcule e escreva a soma dos N primeiros termos da série: (na imagem)
Um termo é uma divisão do tipo Numerador/Denominador. O número de termos deve ser fornecido pelo usuário. Escreva mensagens para o usuário, informando o que deve ser digitado. Cuidado, pois algumas variáveis devem ser de números reais. Cuidado também com o sinal que se alterna. Procure controlar o numerador e o denominador com variáveis diferentes.
Tabulação dos blocos, capricho na escrita, legibilidade valem nota. Você pode usar o DevCpp para auxiliá-lo nessa tarefa.
Anexos:
Soluções para a tarefa
Respondido por
1
Bom, vou tentar te dar uma luz, cabe a você terminar e testar.
int nTermos, cont;
float sTotal = 0;
float temp = 0;
scanf("%d", &nTermos);
for(cont=1; cont<=nTermos; cont++){
temp = (400 - 5*cont)/(10 + 3*cont);
if(cont%2 == 0) { //se é entrada par
sTotal -= temp;
}
else{
sTotal+=temp;
}
}
int nTermos, cont;
float sTotal = 0;
float temp = 0;
scanf("%d", &nTermos);
for(cont=1; cont<=nTermos; cont++){
temp = (400 - 5*cont)/(10 + 3*cont);
if(cont%2 == 0) { //se é entrada par
sTotal -= temp;
}
else{
sTotal+=temp;
}
}
bokomoko:
tá horrível esse código. Pode ser muito simplificado
Respondido por
1
Temos 3 coisas aí
O numerador diminui de 5 em 5 a partir de 400
O denominador aumenta de 3 em 3 a partir de 10
O sinal alterna entre +1 e -1
A soma começa com zero
O loop pode ser controlado tanto pelo numerador, como pelo denominador.
Presumimos que o numerador começa em 400 e vai até 0 com passo 5, esse pode ser o for
Dentro do laço, fazemos a soma, adicionamos mais 3 ao denominador e invertemos o sinal para a próxima iteração.
Para inverter o sinal é só multiplicar por -1. O sinal começa com 1 e a cada iteração multiplica por -1. Assim 1 * -1 = -1 , -1 * -1 = 1 e assim vai.
COnsegue fazer agora ?
int main() {
float soma = 0;
for (int numerador = 400, denominador =10, sinal=1; numerador >0 ; numerador -= 5 ) {
soma+= sinal * numeador / denominador;
sinal *= -1;
denominador += 3;
}
printf("%f\n", soma);
}
ou podemos fazer assim, de uma forma bem pouco ortodoxa
int main(void) {
int sinal, denominador, numerador;
int conta(){
sinal *=-1;
denominador+=3;
numerador -=5;
}
float soma = 0;
for ( (numerador= 400, denominador = 10, sinal=1); numerador >0; conta() ){
soma += (float) sinal * numerador / denominador;
}
printf("soma %f\n",soma);
return 0;
}
O numerador diminui de 5 em 5 a partir de 400
O denominador aumenta de 3 em 3 a partir de 10
O sinal alterna entre +1 e -1
A soma começa com zero
O loop pode ser controlado tanto pelo numerador, como pelo denominador.
Presumimos que o numerador começa em 400 e vai até 0 com passo 5, esse pode ser o for
Dentro do laço, fazemos a soma, adicionamos mais 3 ao denominador e invertemos o sinal para a próxima iteração.
Para inverter o sinal é só multiplicar por -1. O sinal começa com 1 e a cada iteração multiplica por -1. Assim 1 * -1 = -1 , -1 * -1 = 1 e assim vai.
COnsegue fazer agora ?
int main() {
float soma = 0;
for (int numerador = 400, denominador =10, sinal=1; numerador >0 ; numerador -= 5 ) {
soma+= sinal * numeador / denominador;
sinal *= -1;
denominador += 3;
}
printf("%f\n", soma);
}
ou podemos fazer assim, de uma forma bem pouco ortodoxa
int main(void) {
int sinal, denominador, numerador;
int conta(){
sinal *=-1;
denominador+=3;
numerador -=5;
}
float soma = 0;
for ( (numerador= 400, denominador = 10, sinal=1); numerador >0; conta() ){
soma += (float) sinal * numerador / denominador;
}
printf("soma %f\n",soma);
return 0;
}
Dá para fazer mais simples, basta só multiplicar por -1, sacou ? Que acha ?
Mas diz aí, que achou da ideia ? Gostou da dica ?
Perguntas interessantes
Matemática,
8 meses atrás
Português,
8 meses atrás
História,
8 meses atrás
Matemática,
1 ano atrás
Química,
1 ano atrás