Realizar uma divisão sem usar o simbolo ( / ou % ) da divisão

Pessoas.
Preciso entregar um trabalho na faculdade em substituição a prova final.

O problema é o seguinte :
Criar um sistema que faça a divisão e apresente o resultado com 4 casas decimais.
Obs: Não deve ser usado o simbolo da Divisão ( / ou % ).

Bom, até aqui meus neuronios funcionaram perfeitamente, mas agora preciso de ajuda.
Se alguem souber como, agradeço

Falta:
1 - atribuir as 4 casas decimais ao resultado;

public class Calculo {

    double dividendo, divisor, x;
    float quociente;

    public void setDividendo(String div) {
        dividendo = Double.parseDouble(div);
    }

    public void setDivisor(String divi) {
        divisor = Double.parseDouble(divi);
    }

    public void setX(String xs) {
        x = Double.parseDouble(xs);
    }

    public float getX() {
        return (float) x;
    }

    public float getQuociente() {
        return quociente;
    }

    public void dividir() {
        while (x > 0) {
            x = x - divisor;
            x = dividendo;
            quociente = quociente + 1;
        }

        if (x < 0) {
            quociente = quociente - 1;
        }
        
    }
}

2 - fazer com que o resultado apareça na Label

[private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        Calculo cal = new Calculo ();
        cal.setDividendo(txtDividendo.getText());
        cal.setDivisor(txtDivisor.getText());
        cal.dividir();

       txtResultado.setText(cal.getX());

Não entendi…Qual é sua duvida… :roll:

Tenho duas duvidas:
A primeira, referente ao primeiro código é implementar para que o resultado de uma divisão qq apareça com 4 casas decimais.
A segunda, referente ao segundo código é fazer com que o resultado apareça na Label.

Mostrar no label,é o mesmo procedimento para mostrar em um jtextfield…


GregorianCalendar thisday = new GregorianCalendar();
      Date d = thisday.getTime();
      DateFormat df = DateFormat.getDateInstance();
      String s = df.format(d);
      //System.out.println("Hoje é " + s);
        lb_datave.setText(s);

É só um exemplo onde mostro a data.

Para as casas decimais,atribua o resultado a uma variavel e faça assim:


suaVariavell=Math.ceil(suaVariavel*100+0.5)/100;//corrige ai estava errado

Existe várias formas de fazer isso,pode pesquisar aq no GUJ mesmo…

http://www.guj.com.br/posts/list/70980.java

Você tem de fazer uma divisão sem usar o operador de divisão. Então você precisa usar um outro algoritmo.

Por exemplo:

http://www.doubledivision.org/

Para a história das 4 casas:
a) Multiplique o número por 10000
b) Ache o valor inteiro
c) Faça a divisão de acordo com o algoritmo dado nesse site.
d) Multiplique o resultado da divisão por 0.0001

Não lembrava mesmo e fiz o teste…


valcomp=(Math.ceil(valcomp*10+0.5)/10 // uma casa decimal

valcomp=(Math.ceil(valcomp*100+0.5)/100 // duas casas decimais

valcomp=(Math.ceil(valcomp*1000+0.5)/1000 // três casas decimais e assim por diante...

Deve ser o sono… :oops:

Ah, desculpe que não tinha visto que está sendo usada a divisão pelo método da força bruta (ou seja, ir descontando o valor do quociente até que o dividendo vá para zero ou negativo).

Desculpe,se vc acha que está errado,fique a vontade para corrigir,sou novata também e foi o unico geito que aprendi…

Obs:Nunca duvidei das professoras que me passou esse conhecimento,mas respeito vc também… :wink:

Pessoas, antes de mais nada quero agradecer pela ajuda de todos.

O exercicio, ou o professor melhor dizendo, quer o resultado com 4 casas decimas, ou seja 12/3 = 0,004.
Vale lembrar que é expressamente proibido usar em qq ponto do exercicio utilizar o divisão, somente a subtração ou a soma.

[quote=ads.alexander]Pessoas, antes de mais nada quero agradecer pela ajuda de todos.

O exercicio, ou o professor melhor dizendo, quer o resultado com 4 casas decimas, ou seja 12/3 = 0,004.
Vale lembrar que é expressamente proibido usar em qq ponto do exercicio utilizar o divisão, somente a subtração ou a soma.

[/quote]

Não entendi 12/3 = 0,004,quatro casas decimais são casas após a virgula,não é… :roll:

[quote=ads.alexander]O exercicio, ou o professor melhor dizendo, quer o resultado com 4 casas decimas, ou seja 12/3 = 0,004.

Vale lembrar que é expressamente proibido usar em qq ponto do exercicio utilizar o divisão, somente a subtração ou a soma.[/quote]

Correção:
12/3 = 4,0000

Não é pq vc tem que usar casas decimais que você tem que apresentar resultados errados, heheheh.

O que você tem que fazer é o seguinte.

Por exemplo 15/12:

Pelo seu algoritmo:
15 - 12 = 1, resto 3.

Agora, pra calcular as casas decimais, multiplique o resto por 10 e refaça o processo.
Isso calculará a primeira casa decimal.

Continue multiplicando por 10 pra cada casa adicional que queira calcular:
3x10 / 12 = 30 / 12 = 2, resto 6
5x10 = 50 / 12 = 5, resto 0
0x10 = 0 / 12 = 0, resto 0
0x10 = 0 / 12 = 0, resto 0

Resposta: 15/12 = 1,2500

O sinal de / estou usando aqui, mas representa o seu algoritmo de divisão atual.