Ir ao conteúdo
  • Cadastre-se

Programa soma S Duvida


Ir à solução Resolvido por cassinhodabahia,

Posts recomendados


public class Teste {

public static void main(String[] args) {

// cria o vetor aqui

// somaS(numero);

}

public float fatorial(float x) {

// ...

}

public float somaS(int x) {

// ...

// cria o laço for aqui percorrendo o vetor e chamando a função fatorial quando necessário

// fat = fatorial(n);

}

}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olha como esta o meu
 
package Lp1;import java.util.Scanner;public class Menu {private static Scanner ler;public static void main(String[] args) {int opcao = 1;double fat;int num ;ler = new Scanner(System.in);while (opcao != 0){System.out.println("******* Escolha uma Opção*******");System.out.println("0- sair");System.out.println("1- Soma S");System.out.println("2- Fatorial");    opcao = ler.nextInt();switch (opcao){case 0:  System.out.println("Fim Programa");break;  case 1:  System.out.println("Digite um número:  ");   num = ler.nextInt(); // soma = SomaS(num); // System.out.println("A somaS de" + num + "é" + soma);    break;case 2:   System.out.println("Digite um número:  ");num = ler.nextInt();fat = fatorial(num);System.out.println("O Fatorial de " + num + " é " + fat);break;default:System.out.println("Opção Invalida");break;}} } private static double fatorial(int num) {if(num <= 1){return 1;}else{return num*fatorial (num-1);}}     }

 

Link para o comentário
Compartilhar em outros sites

Ah, entendi... pensei que não estava conseguindo chamar o método somaS de outro arquivo.

Então... o método soma nesse problema vai receber um valor N (que vai ser o tamanho da equação) e vai retornar a soma dos elementos da equação.

Se N for igual a 3:

soma = 1/fatorial(1) + 1/fatorial(2) + 1/fatorial(3)

Se N for igual a 5:

soma = 1/fatorial(1) + 1/fatorial(2) + 1/fatorial(3) + 1/fatorial(4) + 1/fatorial(5)

É só fazer um loop simples contando de 1 até N:

 

    public float somaS(int num) {        float soma = 1; // pra não precisar somar aquele "1" solitário na equação, a gente já inicializa soma em "1".        for (int x=num; x > 0; --x)            soma = soma + 1/fatorial(x);        return soma;    }
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Ah, entendi... pensei que não estava conseguindo chamar o método somaS de outro arquivo.

Então... o método soma nesse problema vai receber um valor N (que vai ser o tamanho da equação) e vai retornar a soma dos elementos da equação.

Se N for igual a 3:

soma = 1/fatorial(1) + 1/fatorial(2) + 1/fatorial(3)

Se N for igual a 5:

soma = 1/fatorial(1) + 1/fatorial(2) + 1/fatorial(3) + 1/fatorial(4) + 1/fatorial(5)

É só fazer um loop simples contando de 1 até N:

 

    public float somaS(int num) {        float soma = 1; // pra não precisar somar aquele "1" solitário na equação, a gente já inicializa soma em "1".        for (int x=num; x > 0; --x)            soma = soma + 1/fatorial(x);    }

olha como ficou

 

package Lp1;import java.util.Scanner;public class Menu {private static Scanner ler;public static void main(String[] args) {int opcao = 1;float fat,soma;int num ;ler = new Scanner(System.in);while (opcao != 0){System.out.println("******* Escolha uma Opção*******");System.out.println("0- sair");System.out.println("1- Soma S");System.out.println("2- Fatorial");    opcao = ler.nextInt();switch (opcao){case 0:  System.out.println("Fim Programa");break;  case 1:  System.out.println("Digite um número:  ");   num = ler.nextInt();  soma = (float) somaS(num);  System.out.println("A somaS de" + num + "é" + soma);    break;case 2:   System.out.println("Digite um número:  ");num = ler.nextInt();fat = fatorial(num);System.out.println("O Fatorial de " + num + " é " + fat);break;default:System.out.println("Opção Invalida");break;}} }private static  float fatorial(int num) {if(num <= 1){return 1;}else{return num*fatorial (num-1);}}public static float somaS(int num) {        float soma = 1; // pra não precisar somar aquele "1" solitário na equação, a gente já inicializa soma em "1".        for (int x=num; num > 0; --num)            soma = soma + 1/fatorial(num);return soma;    }             }

 

olha como ficou

 

package Lp1;
 
import java.util.Scanner;
 
public class Menu {
 
private static Scanner ler;
 
public static void main(String[] args) {
int opcao = 1;
float fat,soma;
int num ;
ler = new Scanner(System.in);
while (opcao != 0){
System.out.println("******* Escolha uma Opção*******");
System.out.println("0- sair");
System.out.println("1- Soma S");
System.out.println("2- Fatorial");
 
    opcao = ler.nextInt();
 
switch (opcao){
 
case 0:
  System.out.println("Fim Programa");
break;
 
  case 1:
  System.out.println("Digite um número:  ");
  num = ler.nextInt();
  soma = (float) somaS(num);
  System.out.println("A somaS de" + num + "é" + soma);
  
  
break;
 
 
case 2:
   System.out.println("Digite um número:  ");
num = ler.nextInt();
fat = fatorial(num);
System.out.println("O Fatorial de " + num + " é " + fat);
 
 
break;
 
default:
 
System.out.println("Opção Invalida");
break;
}
}
}
private static  float fatorial(int num) {
 
if(num <= 1){
return 1;
}else{
return num*fatorial (num-1);
}
}
 
 
public static float somaS(int num) {
        float soma = 1; // pra não precisar somar aquele "1" solitário na equação, a gente já inicializa soma em "1".
        for (int x=num; num > 0; --num)
            soma = soma + 1/fatorial(num);
return soma;
    }
     
    
 
    }

 

ta rodando beleza amigo apenas o resultado esta dando 1.0 a mais..

ex: soma S de 2 dar 1.5   no meu programa ta dando 2.5

olha como ficou

 

package Lp1;
 
import java.util.Scanner;
 
public class Menu {
 
private static Scanner ler;
 
public static void main(String[] args) {
int opcao = 1;
float fat,soma;
int num ;
ler = new Scanner(System.in);
while (opcao != 0){
System.out.println("******* Escolha uma Opção*******");
System.out.println("0- sair");
System.out.println("1- Soma S");
System.out.println("2- Fatorial");
 
    opcao = ler.nextInt();
 
switch (opcao){
 
case 0:
  System.out.println("Fim Programa");
break;
 
  case 1:
  System.out.println("Digite um número:  ");
  num = ler.nextInt();
  soma = (float) somaS(num);
  System.out.println("A somaS de" + num + "é" + soma);
  
  
break;
 
 
case 2:
   System.out.println("Digite um número:  ");
num = ler.nextInt();
fat = fatorial(num);
System.out.println("O Fatorial de " + num + " é " + fat);
 
 
break;
 
default:
 
System.out.println("Opção Invalida");
break;
}
}
}
private static  float fatorial(int num) {
 
if(num <= 1){
return 1;
}else{
return num*fatorial (num-1);
}
}
 
 
public static float somaS(int num) {
        float soma = 1; // pra não precisar somar aquele "1" solitário na equação, a gente já inicializa soma em "1".
        for (int x=num; num > 0; --num)
            soma = soma + 1/fatorial(num);
return soma;
    }
     
    
 
    }

ta rodando beleza amigo apenas o resultado esta dando 1.0 a mais..

ex: soma S de 2 dar 1.5   no meu programa ta dando 2.5

deve ser a soma desse 1

olha como ficou

 

package Lp1;
 
import java.util.Scanner;
 
public class Menu {
 
private static Scanner ler;
 
public static void main(String[] args) {
int opcao = 1;
float fat,soma;
int num ;
ler = new Scanner(System.in);
while (opcao != 0){
System.out.println("******* Escolha uma Opção*******");
System.out.println("0- sair");
System.out.println("1- Soma S");
System.out.println("2- Fatorial");
 
    opcao = ler.nextInt();
 
switch (opcao){
 
case 0:
  System.out.println("Fim Programa");
break;
 
  case 1:
  System.out.println("Digite um número:  ");
  num = ler.nextInt();
  soma = (float) somaS(num);
  System.out.println("A somaS de" + num + "é" + soma);
  
  
break;
 
 
case 2:
   System.out.println("Digite um número:  ");
num = ler.nextInt();
fat = fatorial(num);
System.out.println("O Fatorial de " + num + " é " + fat);
 
 
break;
 
default:
 
System.out.println("Opção Invalida");
break;
}
}
}
private static  float fatorial(int num) {
 
if(num <= 1){
return 1;
}else{
return num*fatorial (num-1);
}
}
 
 
public static float somaS(int num) {
        float soma = 1; // pra não precisar somar aquele "1" solitário na equação, a gente já inicializa soma em "1".
        for (int x=num; num > 0; --num)
            soma = soma + 1/fatorial(num);
return soma;
    }
     
    
 
    }

ta rodando beleza amigo apenas o resultado esta dando 1.0 a mais..

ex: soma S de 2 dar 1.5   no meu programa ta dando 2.5

deve ser a soma desse 1

for (int x=num; num > 0; --num)  esse int  x o programa também esta mostrando que n esta sendo usado

Link para o comentário
Compartilhar em outros sites

Ah, foi mal... normalmente essa equação é 1/0! + 1/1! + 1/2!...etc.

Notei que no teu primeiro post não tem o "1/0!". Basta retirar então aquele "soma = 1" do começo e deixar em zero mesmo.

    public static float somaS(int num) {        float soma = 0;         for (int x=num; x > 0; --x)            soma = soma + (1/fatorial(x));        return soma;    }
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Ah, foi mal... normalmente essa equação é 1/0! + 1/1! + 1/2!...etc.

Notei que no teu primeiro post não tem o "1/0!". Basta retirar então aquele "soma = 1" do começo e deixar em zero mesmo.

 

    public static float somaS(int num) {        float soma = 0;         for (int x=num; x > 0; --x)            soma = soma + (1/fatorial(x));        return soma;    }

valeu cara você é fera ... deu certo

e sobre esse int x que o programa diz que n precisa, triei ele e deu o mesmo resultado, acha melhor deixar sem?

Link para o comentário
Compartilhar em outros sites

@dontpanic fui mudando algumas coisas que o propio eclipse pediu ai ficou desse jeito

public static double somaS(int num) {        double soma = 0;         for (; num > 0; --num)            soma = soma + 1 /fatorial(num);return soma;
Só que agora fiquei sem saber explicar quando for apresentar,
tipo: porque esse ponto e virgula ficou ai antes do num e onde soma o mais o +1 já que esse 1 ai é da divisão?
Link para o comentário
Compartilhar em outros sites

A sintaxe do FOR é:

for (<inicio>; <condição>; <incremento>) { ... }

A parte do <inicio> é opcional, mas você ainda precisa colocar o ponto e vírgula pro compilador saber o que é <inicio> e o que é <condição>.
Se quiser você pode substituir aquilo por um while pra ficar mais fácil de explicar.

while (num > 0) {  soma = soma + (1 / fatorial(num));  --num;}

Quanto a segunda pergunta, aquele +1 da equação é o mesmo que (1 / fatorial(1)). Fatorial de 1 é 1... e (1 / 1) = 1 também.
Então isso: 1/3! + 1/2! + 1
É o mesmo que isso: 1/3! + 1/2! + 1/1!

Como o seu laço de repetição vai de (1 / NUM!) até (1 / 1!), então você já tá somando tudo.

Link para o comentário
Compartilhar em outros sites

Ué... é o somatório da função.

Soma = 0;

Soma = Soma + 1/1! --> 0 + 1/1!

Soma = Soma + 1/2! --> 0 + 1/1! + 1/2!

Soma = Soma + 1/3! --> 0 + 1/1! + 1/2! + 1/3!

...etc.

O zero no começo é só pra inicializar a variável.

Em algumas linguagens de programação, se você usar uma variável sem inicializar ela antes, pode dar alguns problemas pois o valor fica indefinido.

Não lembro se no Java precisa fazer isso... mas não faz mal nenhum garantir.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...