Colocar frações dentro de loop

10 respostas
ThiagoRafael

Sendo H = 1 + ½ +1/3 + ¼ + ... + 1/N, faça um algoritmo para
calcular H, sendo que N é digitado pelo usuário

tipo consegui chegar ate a parte que faz o loop com o valor dado pelo usuário mas aii eu travei como poderia terminar;

import java.util.Scanner;
public class algoritmo{
	public static void main(String []args){
		
		Scanner x = new Scanner(System.in);
		System.out.println("informe o valor de N alogoritmos");
		String n = x.nextLine();
		
		double nn = Double.parseDouble(n);
		double f = 1;
		while(f<=nn){
		System.out.println(f);
		f++;
		}
	}
}

10 Respostas

E

Para facilitar seu raciocínio, veja que o seu problema é equivalente a este aqui:

H = 1/1 + 1/2 +1/3 + 1/4 + … + 1/N

Viu como fica mais fácil resolver?

ThiagoRafael

entanglement obrigado pela sua ajuda

era so eu criar mais uma doube com um resultado 1 e na hora de imprimir eu coloco esse valor do double sobre os valores de n,
mas como eu poderia fazer os resultados somarem

public class algoritmo{
	public static void main(String []args){
		
		Scanner x = new Scanner(System.in);
		System.out.println("informe o valor de N alogoritmos");
		String n = x.nextLine();
		
		double nn = Double.parseDouble(n);
		double y = 1;
		double f = 1;
		while(f<=nn){
		System.out.println(y/f);
		f++;
		}
	}
}
pmlm

Ha uma tecla aí no teclado, com o sinal de + :slight_smile:
Agora a sério, como farias se fosse para somar todos os números de 1 até n?

E

Não vou resolver seu problema, mas vou dar um exemplo de como se somam os números de 1 a 100. Lendo o meu código você pode entender o que deve ser feito

int soma = 0;
for (int i = 1; i <= 100; ++i) {
    soma = soma + i;
}
freakazoid

Tbm não vou resolver o seu problema, porem basicamente o mais complicado do seu problema é fazer a soma das frações
uma vez que temos denominadores diferentes. Isso me lembra um carinha chamado MMC…

Esse link pode te ajudar:

http://javafree.uol.com.br/topic-10324-Minimo-Multiplo-Comum.html

abs!

ThiagoRafael

Alguem pode me explicar porque não esta somando já tentei ate com o if e com o while mas acontece a mesma coisa :!::idea:

[code]import java.util.Scanner;

/**Sendo H = 1 + ½ +1/3 + ¼ + ... + 1/N, faça um algoritmo para
*calcular H, sendo que N é digitado pelo usuário;
*
*/

public class algoritmo{
public static void main(String []args){

Scanner x = new Scanner(System.in);
System.out.println("informe o valor de N alogoritmos");
String n = x.nextLine();

double nn = Double.parseDouble(n);

double y = 1;
double f = 2;

while(f<=nn){
double k = y/f;
for(double a=0; a<=k; a++){
double o = a+k;
System.out.println(o);
}
f++;
}
}
}

igor_ks

o seu problema está na lógica de programação…

Como vc faria para somar 1/2 + 1/3 no papel?

Passe isso para código

ThiagoRafael

igor_ks:
o seu problema está na lógica de programação…

Como vc faria para somar 1/2 + 1/3 no papel?

Passe isso para código

é tiraria o mmc mais ia dar muita volta então eu pensei em dividir primeiro e depois somar,
e assim eu fiz no código soque quando ta na hora de soma os valores de k num vai aparece so a divisao

freakazoid

ThiagoRafael:
igor_ks:
o seu problema está na lógica de programação…

Como vc faria para somar 1/2 + 1/3 no papel?

Passe isso para código

é tiraria o mmc mais ia dar muita volta então eu pensei em dividir primeiro e depois somar,
e assim eu fiz no código soque quando ta na hora de soma os valores de k num vai aparece so a divisao

Vou te dar uma luz. Segue um exemplo fazendo a divisão e depois a soma (solução preguiçosa):

Scanner x = new Scanner(System.in);
		System.out.println("informe o valor de N alogoritmos");
		String n = x.nextLine();

		double nn = Double.parseDouble(n);
		double aux= nn ;
		double soma= 1.0;
		
		while(aux > 1){
			soma= soma + (1/aux);
			aux--;
		}
		System.out.println("o valor de H é: "+soma);
	}

Como já falei no começo o mais complicado é o MMC. Tente implementá-lo e se não conseguir poste o código aqui para que possamos ajudá-lo. Faça um método apenas para calcular o MMC e depois integre as coisas.

ThiagoRafael

antes de começar a criar o código porque tenho que criar “public static int MinimoMultiplo(int a, int b)”
e criar o public static void main… sendo que pelo que entendi eles irão fazer a mesma coisa

Criado 5 de fevereiro de 2013
Ultima resposta 16 de fev. de 2013
Respostas 10
Participantes 5