Gerar 3 números aleatórios cuja soma seja um determinado valor

0 respostas
celio.softway

O problema é o seguinte. Uma construtora recebe material (areia, brita) em toneladas, o caminhão já vem com o peso na nota fiscal. No antigo sistema um funcionário deveria aferir o material com 3 furos, achar a média para fazer o calculo de M³.

Acontece que os relatórios tem que ser preenchidos em M³, esta primeira parte é fácil, temos uma tabela de densidade por M³ de cada material, daí é só dividir. A parte chata é que tem que achar a média da altura porque tem que constar os dados utilizados para chegar ao resultado do calculo, sendo que temos a medida na largura e do comprimento.

No caso eu tenho o resultado , a largura e o comprimento, preciso desenvolver algo para calcular a altura (media de 3 furos divididos por 3). Bem isso já esta pronto

Média * 350 *230 = M³

double calculaMedia(){
		media = 1;
		while ((media * 2.3 * 3.5)/100 <= m3){
			media++;
		}

		return media;
	}

Tentei usar != ao invés de <= mas não funfou. Esta função me da uma média, não fica 100% como eu queria, pois os M³ é um doublé, foi zica tentar incremento, acabei deixando assim.

O que ainda preciso desenvolver:
A média da altura é calculada somando o valor das 3 aferições divididas por 3. Eu preciso gerar 3 números aleatórios cuja a soma seja o valor da média. Alem disso as 3 medidas tem que ter um valor aproximado, por exemplo se a média é 95 as medidas devem ser em torno de 90 a 100, pois nunca existe uma diferença muito grande entre as aferições.

Meu código até agora:

import javax.swing.JOptionPane;


public class Brita1 {
	
	 double tonelada;
	 double m3;
	 double media;
	 double f1;
	 double f2;
	 double f3;
	 

	public static void main(String[] args) {
		Brita1 b= new Brita1();
		b.recebeValor();
		b.converterTonelada();
		b.calculaMedia();
		b.calculaF();
		
		JOptionPane.showMessageDialog(null, "Tonelada: " + b.tonelada + "\nM³: " +b.m3 + "\nMédia: " + b.media 
				+"\nFuros:" + b.f1 +  " " + b.f2 +  " " + b.f3);
				
		System.exit(0);
	}
	
	double recebeValor(){
		tonelada = Double.parseDouble(JOptionPane.showInputDialog("Digite o peso:"));
		return tonelada;	
	}
	
	double converterTonelada(){
		m3 = (tonelada*1000)/1621;
		return m3;	
	}
	
	double calculaMedia(){
		media = 1;
		while ((media * 2.3 * 3.5)/100 <= m3){
			media++;
		}

		return media;
	}
	
	public void calculaF(){
		
		//aqui deu merda

	}

}
Criado 15 de junho de 2013
Respostas 0
Participantes 1