jassak 0 Denunciar post Postado Julho 31, 2008 Utilizando o comando for, escreva um programa para calcular a soma dos 20 primeiros termos da série: 100 99 98 97 _ + _ + _+ _... 0! 1! 2! 3! Para calcular o fatorial no denominador criar uma função com a seguinte assinatura: public static int fatorial(int num) sera que alguem pode me ajudar Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 31, 2008 seria 100/0! o primeiro termo? Compartilhar este post Link para o post Compartilhar em outros sites
jassak 0 Denunciar post Postado Julho 31, 2008 sim isso mesmo.. 100/0! + 99/1!+98/2!... isso com os 20 primeiros termos. Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 31, 2008 Pra ficar mais fácil crie uma função que receba um número e retorne seu fatorial. Voce consegue fazer isso? Depois fica simples. Faça um loop de 0 até 19 "20 vezes". somatoria <- 0 para i de 0 ate 19 faca somatoria <- somatoria + (100-i)/fatorial(i) fimpara sim isso mesmo.. 100/0! + 99/1!+98/2!... isso com os 20 primeiros termos. Compartilhar este post Link para o post Compartilhar em outros sites
jassak 0 Denunciar post Postado Julho 31, 2008 int numerador = 100; //prossesamento dos dados for(int i = 0; i < 19; i++){ numerador = numerador-1; soma +=soma(numerador/ fatorial(i)); System.out.println("o fatorial e = "+fatorial(i)); }saida +="\n\t a soma ="+ soma; System.out.println(saida); Compartilhar este post Link para o post Compartilhar em outros sites
jassak 0 Denunciar post Postado Julho 31, 2008 a funcao eu fiz assim: public static double fatorial(double n){ double fat = 1.0; while (n > 0 ){ fat *=n; n--; }// fim while return fat; } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 31, 2008 Na primeira passagem pelo loop o numerador é 99, então o i tem que começar com 1. for(int i = 1; i < 19; i++){ Compartilhar este post Link para o post Compartilhar em outros sites
jassak 0 Denunciar post Postado Julho 31, 2008 mas nesse caso de ve ser assim for{ int i = 1; i<=19;i++} senao ele vai contar apenas 18 termos e nao 19 certo? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 31, 2008 import java.util.HashMap; public class soma { public static HashMap<Integer, Double> lista = new HashMap<Integer,Double>(); public static double fatorial(int num) { if(lista.isEmpty()) { lista.put(1,1.0); return 1.0; } else { if (num > 1 && lista.containsKey(num-1)) { lista.put(num, num*lista.get(num-1)); return lista.get(num); } else return 1.0; } } public static void main(String[] args) { final Integer termos = 5; Double inicio = 100.0; Double soma = 0.0; for(int i=0;i<termos;i++) { soma+=inicio/fatorial(i); System.out.println(inicio+"/"+i+"!"); inicio--; } System.out.println(soma); } } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Agosto 1, 2008 Certo, é isso mesmo. Vou corrigir lá em cima. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif mas nesse caso de ve ser assim for{ int i = 1; i<=19;i++} senao ele vai contar apenas 18 termos e nao 19 certo? Compartilhar este post Link para o post Compartilhar em outros sites
Mortalzera 0 Denunciar post Postado Agosto 15, 2008 sim isso mesmo.. 100/0! + 99/1!+98/2!... isso com os 20 primeiros termos. Um jeito simples através da procedural em vez de usar POO : CODE #include <stdio.h> float fat(float a){ if (a==0) return 1; else return a*fat(a-1); } int main(){ float temp, soma =0; int i = 0; temp = 100; for (i=0;i<20;i++){ soma += temp/fat(i); temp--; } printf("A soma é : %.2f", soma); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites