Как я использую div и mod отделяя число в билетах?

Я нуждаюсь в формулах в java, что, в момент цифры вводят число в компьютер "n", отделил их мне в билетах 500 200 100 50 и 20 используя div и mod (я сознательный, что div "/" и mod - "%").

0
задан 12.04.2016, 17:31
2 ответа

UtilizarГ© простой алгоритм, чтобы помогать тебе понимать проблему.

Способ это решать состоит в том, чтобы начинать делить nГєmero между билетами большего denominaciГіn и с остатком продолжать dividiГ©ndolo последовательно с теми несовершеннолетнего denominaciГіn до тех пор, пока уже он совсем не останется. Я прохожу по шагу:

DГ-Ланей, что nГєmero инициал - 2790

Вїcuantos билеты 500, мы можем использовать?

2790 div 500: 5

Вїcuanto остается, чтобы разделять?

2790 mod 500: 290

и мы продолжаем с остатком, что

290 div 200: 1
290 mod 200: 90

90 div 100: 0
90 mod 100: 90

90 div 50: 1
90 mod 50: 40

40 div 20: 2
40 mod 20: 0

Тогда конечного результата

  • 5 из 500
  • 1 из 200
  • 0 из 100
  • 1 из 50
  • , 2 из 20

Сейчас он пробует писать cГіdigo с этой идеей.

4
ответ дан 24.11.2019, 14:37

Я перемещаю одну тебя implementaciГіn используя алгоритм, показанный из-за @Equiso:

public class ContadorDeBilletes {

  private static int[] BILLETES;

  public static final int QUINIENTOS = 500;
  public static final int DOSCIENTOS = 200;
  public static final int CIEN = 100;
  public static final int CINCUENTA = 50;
  public static final int VEINTE = 20;
  public static final int DIEZ = 10;
  public static final int CINCO = 5;

  static {
    BILLETES = new int[] { QUINIENTOS, DOSCIENTOS, CIEN, CINCUENTA, VEINTE, DIEZ, CINCO };
  }

  public static Map<Integer, Integer> procesa(double importe) {
    Map<Integer, Integer> contador = init();
    if (importe <= 0) {
      throw new IllegalArgumentException("Importe no valido....");
    }
    for (int index = 0; index < contador.size(); index++) {
      double resultado = importe / BILLETES[index];
      if (resultado > 0) {
        contador.put(BILLETES[index], (int) resultado);
      }
      importe = importe - ((int) resultado * BILLETES[index]);
    }
    return contador;
  }

  private static Map<Integer, Integer> init() {
    Map<Integer, Integer> contador = new HashMap<Integer, Integer>();
    contador.put(QUINIENTOS, 0);
    contador.put(DOSCIENTOS, 0);
    contador.put(CIEN, 0);
    contador.put(CINCUENTA, 0);
    contador.put(VEINTE, 0);
    contador.put(DIEZ, 0);
    contador.put(CINCO, 0);
    return contador;
  }

}

Ваш тесты:

public class ContadorDeBilletesTest {

  @Test
  public void test() {
    Map<Integer, Integer> contador = ContadorDeBilletes.procesa(5324.234);

    assertThat(contador.get(ContadorDeBilletes.QUINIENTOS), is(10));
    assertThat(contador.get(ContadorDeBilletes.DOSCIENTOS), is(1));
    assertThat(contador.get(ContadorDeBilletes.CIEN), is(1));
    assertThat(contador.get(ContadorDeBilletes.CINCUENTA), is(0));
    assertThat(contador.get(ContadorDeBilletes.VEINTE), is(1));
    assertThat(contador.get(ContadorDeBilletes.DIEZ), is(0));
    assertThat(contador.get(ContadorDeBilletes.CINCO), is(0));
  }

  @Test(expected = IllegalArgumentException.class)
  public void testZero() {
    ContadorDeBilletes.procesa(0);
  }

  @Test
  public void testSinResto() {
    Map<Integer, Integer> contador = ContadorDeBilletes.procesa(500);

    assertThat(contador.get(ContadorDeBilletes.QUINIENTOS), is(1));
    assertThat(contador.get(ContadorDeBilletes.DOSCIENTOS), is(0));
    assertThat(contador.get(ContadorDeBilletes.CIEN), is(0));
    assertThat(contador.get(ContadorDeBilletes.CINCUENTA), is(0));
    assertThat(contador.get(ContadorDeBilletes.VEINTE), is(0));
    assertThat(contador.get(ContadorDeBilletes.DIEZ), is(0));
    assertThat(contador.get(ContadorDeBilletes.CINCO), is(0));
  }

}
3
ответ дан 24.11.2019, 14:37
  • 1
    Благодарен за тест. – dddenis 07.04.2016, 11:47
  • 2
    if (importe <= 0) importe = importe*-1; boolean deboPasta = true; XD – Jordi Castilla 07.04.2016, 17:39
  • 3
    Умышленно omit и # 237; implementaci и # 243; n, так как очевидно, что проблема - задание / предмет. Но хороший... – Diego Torres 07.04.2016, 17:43