Arrays e Listas II

5 respostas
C

Prezados Colegas,

Através da ajuda de vocês, consegui resolver o problema do vetor, agora, se vocês puderem gostaria de lhes pedir mais esse auxílio:

Tenho que condificar os mesmos métodos só que usando listas:

Os métodos: Saldo_Total e Num_Contas, eles estão dentro da classe BancoL.

Abaixo segue os códigos, agradeço muito.

Tenho uma classe chamada Listadecontas:

class Listadecontas

{

private ContaL contas;

private Listadecontas prox;
void inserir (ContaL c)

{

if (this.contas == null)

{

this.contas = c;

prox = new Listadecontas();

}

else

prox.inserir©;

}
void retirar (ContaL c)

{

if (contas != null)

{

if (contas == c)

{

this.contas = prox.contas;

this.prox = prox.prox;

}

else

prox.retirar©;

}

}
ContaL procurar (String num)

{

if (contas == null)

return null;

else

{

if (contas.numero().equals(num))

return contas;

else

return prox.procurar(num);

}

}

}

Outra chamada ContaL:

public class ContaL

{

private String numero;

private double saldo=0.0;

private String operacoes="";
public void credito(double valor)

{

this.saldo = this.saldo + valor;

}
public void debito(double valor)

{

this.saldo= this.saldo - valor;

}
public String numero()

{

return this.numero;

}
public double saldo()

{

return this.saldo;

}
public void inclui_operacao(String op){

operacoes+=op;

}
public String extrato(){

return this.operacoes;

}
public ContaL(String n)

{

this.numero=n;

this.saldo=0;

this.operacoes+="========================================\nE X T R A T O D A C O N T A - : +numero()+”\n========================================\nOperação-----------------------------------------------Valor";

}

}

E a classe Banco L que contém os métodos a serem implementados:
import javax.swing.*;

class BancoL implements QqBanco{

private Listadecontas contasm = new Listadecontas();
private double taxa_juros=0;

//cadastra conta

void cadastro(ContaL c)

{

ContaL aux=contasm.procurar(c.numero());

if (aux==null)

contasm.inserir©;

else

JOptionPane.showMessageDialog(null, existe conta com esse número!”);

}
//excluir conta

void excluir(String num)

{

ContaL c;

c=contasm.procurar(num);
// ContaL aux=contasm.procurar(c.numero());

// ContaL ultima;

if (c==null) {

JOptionPane.showMessageDialog(null,Conta inexistente!”); }

else {

// ultima=contasm;

// if (aux==ultima) {

contasm.retirar©;

JOptionPane.showMessageDialog(null,Conta excluída com sucesso!”);

}

//// else {

// aux=ultima;}

// indice–;

// }
}

//procura conta

ContaL procurar(String num) {

ContaL c;

c=contasm.procurar(num);

if (c==null)

return null;

else

return c;

}
//saque na conta

void saque(String num, double val) {

ContaL c;

c=contasm.procurar(num);

if (c!=null) {
if (c.saldo()>=val)

{

c.debito(val);

c.inclui_operacao("\nDebito…"+val);

if (c instanceof ImpostoL)

c.inclui_operacao("\nDebito de Imposto…"+ (val*0.01));

}

else JOptionPane.showMessageDialog(null,“Conta não tem saldo suficiente!);

}

else JOptionPane.showMessageDialog(null,“Conta inexistente!);

}
//deposito na conta

void deposito(String num, double val) {

ContaL c;

c=contasm.procurar(num);

if (c!=null)

{

c.credito(val); c.inclui_operacao("\nCredito…"+val);

}

else JOptionPane.showMessageDialog(null,Conta inexistente!”);

}
//saldo da conta

void saldo(String num) {

ContaL c;

c=contasm.procurar(num);

if (c!=null)

JOptionPane.showMessageDialog(null,"=========== S A L D O ==========="+

"\nNúmero da Conta…: "+c.numero()+

"\nSaldo da Conta…: "+c.saldo()+\n================================);

else JOptionPane.showMessageDialog(null,Conta inexistente!”);

}
//transferencia

void transfere(String origem, String destino, double val) {

ContaL cOrig, cDest;

boolean erro=false;
cOrig=contasm.procurar(origem);

if (cOrig==null) {

JOptionPane.showMessageDialog(null,Conta de origem inexistente!);

erro=true;

}

cDest=contasm.procurar(destino);

if (cDest==null) {

JOptionPane.showMessageDialog(null,Conta de destino inexistente!);

erro=true;

}

if(erro==false){

if (cOrig.saldo() >= val){

cOrig.debito(val);

cDest.credito(val);

cOrig.inclui_operacao("\nDebito de transferencia para Conta Nº “+cDest.numero()+”…"+val );

cDest.inclui_operacao("\nCredito de transferencia da Conta Nº “+cOrig.numero()+”…"+val );

}

else

JOptionPane.showMessageDialog(null,Conta de origem não tem saldo suficiente!);

}

}

//rende juros

void rende_juros(String num) {

ContaL c;

c=contasm.procurar(num);

if (c != null) {

if (c instanceof PoupancaL) {

c.inclui_operacao("\nJuros da Poupança…"+ (this.getJuros()));

((PoupancaL)c).rende_juros(this.getJuros());}

else JOptionPane.showMessageDialog(null,Essa Conta nao é Poupança!);

}

else JOptionPane.showMessageDialog(null,Conta inexistente!);

}

double getJuros() { return taxa_juros; }

void altera_juros(double juros) {

taxa_juros = juros;

}
//imprime extrato

public void imprime_extrato(String num)

{
ContaL c;

c=contasm.procurar(num);

String aux="";

if (c!=null){

aux=c.extrato();

aux+="\n\nSaldo atual…"+c.saldo()+"\n========================================";

JOptionPane.showMessageDialog(null,aux);

}

else

JOptionPane.showMessageDialog(null,“Conta inexistente);

}

//calculo do saldo de todas as contas
public double Saldo_Total() { return }

// conta a quantidade de contas cadastradas

public int Num_Contas() { return }

}

Obs.: Esses dois últimos métodos terão que ser implementados.

5 Respostas

N

Que mal lhe pergunte, pra que??? trabalho de facul? se for, eu não ajudo mais! hehehe…

Vc precisa usar a classe List ou implementar uma lista?

C

Prezado amigo,

Independente de para que seja, se coloquei é porque estou precisando de ajuda, assim como em muitas vezes posso também ajudar, ois também sou programador. Tenho certeza de que esse forum é usado por pessoas adultas e que sabem o que quer é por isso que eu participo dele.

Obrigado por sua contribuição, se alguém poder me ajudar eu agradeço.

Francisco Gerson (creipi)

N

“creipi”:
Prezado amigo,

Independente de para que seja, se coloquei é porque estou precisando de ajuda, assim como em muitas vezes posso também ajudar, ois também sou programador. Tenho certeza de que esse forum é usado por pessoas adultas e que sabem o que quer é por isso que eu participo dele.

Obrigado por sua contribuição, se alguém poder me ajudar eu agradeço.

Francisco Gerson (creipi)

calma…

se vc não percebeu, eu estava brincando…

se vc quer mesmo ajuda, responda à minha pergunda:

vc precisa imprementar a Lista, tipo uma classe de lista encadeada etc, ou vc pode usar uma coleção da API???

No pacote java.util tem AbstractList, AbstractSequentialList, ArrayList e LinkedList… além das demais coleções (Vector, Array, Hashtable, etc.) por isso eu perguntei se era pra faculdade… se for para uma aplicação comercial, vc vai ter q analisar como q é o acesso à esta lista. Como ela é consultada, se tem q ser ordenada, etc.

Não me leve a mal…

Neto

C

Amigo Neto,

Desculpa pela minha precipitação, infelizmente ainda não temos a possibilidade de analizar à distância a intensão das pessoas. Se não fosse por você eu não tinha resolvido o problema do vetor.

O programa é sim para faculdade (Especialização em Análise de Sistemas), tive lendo alguma coisa sobre (Vector, Array, Hashtable, etc.), mas não consegui resolver o problema.

Se puder contar com o seu apoio mais uma vez obrigado, se não, só pelo fato de aceitar minhas desculpas é o suficiente pra mim.

Francisco Gerson (creipi)

N

blz… dá nada…

agora analisei o teu código direito e vi que vc tem uma lista com contiguidade encadeada implementada… só lembro o nome pq eu tb tô vendo isso na faculdade :lol: , só que em C. como eu não consegui me achar no teu código dei peguei as tuas classes e implementei o seguinte:

class Listadecontas  { 
	private ContaL contas; 
	Listadecontas prox; 

	void inserir (ContaL c) { 
		if (this.contas == null) { 
			this.contas = c; 
			prox = new Listadecontas(); 
		} else 
			prox.inserir(c); 
	} 

	void retirar (ContaL c) { 
		if (contas != null) { 
			if (contas == c) { 
				this.contas = prox.contas; 
				this.prox = prox.prox; 
			} else 
				prox.retirar(c); 
		} 
	} 

	ContaL procurar (String num) { 
		if (contas == null) 
			return null; 
		else { 
			if (contas.numero().equals(num)) 
				return contas; 
			else 
				return prox.procurar(num); 
		} 
	} 
} 


class ContaL { 
	private String numero; 
	private double saldo=0.0; 
	private String operacoes=""; 

	public void credito(double valor) { 
		this.saldo = this.saldo + valor; 
	} 

	public void debito(double valor) { 
		this.saldo= this.saldo - valor; 
	} 

	public String numero() { 
		return this.numero; 
	} 

	public double saldo() { 
		return this.saldo; 
	} 

	public void inclui_operacao(String op){ 
		operacoes+=op; 
	} 

	public String extrato(){ 
		return this.operacoes; 
	} 

	public ContaL(String n) { 
		this.numero=n; 
		this.saldo=0; 
		this.operacoes+="========================================\nE X T R A T O D A C O N T A - Nº: 	"+numero()+"\n========================================\nOperação-----------------------------------------------Valor"; 
	} 
} 

public class TestaListaContas {

	int Num_Contas(Listadecontas lContas) { 
		if (lContas == null) 
			return 0; 
		else 
			return(Num_Contas(lContas.prox)+1);
		
	}
		
	public TestaListaContas() {
		ContaL c1 = new ContaL("1");
		ContaL c2 = new ContaL("2");
		ContaL c3 = new ContaL("3");
		ContaL c4 = new ContaL("4");
		ContaL c5 = new ContaL("5");
		
		Listadecontas listaContas = new Listadecontas();
		listaContas.inserir(c1);
		listaContas.inserir(c2);
		listaContas.inserir(c3);
		listaContas.inserir(c4);
		listaContas.inserir(c5);
		
		System.out.println(Num_Contas(listaContas)-1);
	}
	
	public static void main(String args[]) {
		new TestaListaContas();
	}
}

Pra ver rodando é só salvar td em um arquivo chamado TestaListaContas.java, compilar e executar… veja que eu tirei o modificador de acesso ao campo prox da lista pra poder fazer o método Num_Contas(Listadecontas lContas) recursivo…

pra fazer o de saldo total, é por aí tb…

ok? falow…

Criado 6 de novembro de 2003
Ultima resposta 9 de nov. de 2003
Respostas 5
Participantes 2