class Banco {
  int		indice = 0;
  Conta[]	contas;

  void cadastro(Conta c) {
    contas[indice] = c;
    indice = indice + 1;
  }  

  Conta procura(long num) {
// Variáveis locais ao método.
    int		i = 0;
    boolean	achou = false;
    
    while ((! achou) & (i < indice)) {
      if (contas[i].num_conta() == num) achou = true;
      else i = i + 1;
    }
    if (achou == true) return contas[i];
    else return null;
  }

  void print_saldo(long num) {
    Conta	c;

    c = procura(num); 
    if (c == null) System.out.println("A conta " + num + " nao existe!");
    else c.print_saldo();
  }

  void debito(long num, double val) {
    Conta	c;

    c = this.procura(num); 
    if (c == null) System.out.println("A conta " + num + " nao existe!");
    else c.debito(val);    
  }

  void transfere(long num_de, long num_para, double val) {
    Conta	c_de, c_para;

    c_de = this.procura(num_de);
    c_para = this.procura(num_para); 
    if ((c_de == null) | (c_para == null)) System.out.println("Um das contas nao existe!");
    else {c_de.debito(val);
          c_para.credito(val);
         }
  }

  Banco (int tamanho) {
    if (tamanho > 0) {contas = new Conta[tamanho];
                      indice = 0;
                     }
    else System.out.println("Tamanho invalido!");
  }

  void print_saldo() {
    int 	i;
 
    for (i = 0; i < indice; i = i + 1) { 
      contas[i].print_saldo();
    }
  }
}

class Programa {
  public static void main(String argv[]) {
    Banco	b1;
    Conta	c1, c2, c3;
 
    c1 = new Conta(100.00,12345);
    c1.print_saldo();
    c1.credito(7.34);
    c1.debito(1.00);;
    c1.print_saldo();
    c1.credito(5.66);
    c1.print_saldo();

    c2 = c1;
    c2.credito(55.00);
    c2.print_saldo();
    c1.print_saldo();

    b1 = new Banco(30);
    b1.cadastro(c2);
    b1.print_saldo(123);
    b1.print_saldo(12345);
    b1.debito(12345,77);
    b1.print_saldo(12345);
    b1.debito(1234,99);

    b1.print_saldo();

    c3  = new Conta(85.00,10);
    b1.cadastro(c3);
    b1.print_saldo(10);
    b1.print_saldo(12345);
    b1.transfere(12345,10,50);
    b1.print_saldo(10);
    b1.print_saldo(12345);
    
  }
}