Eu tenho uma classe Circuito, que possui duas malhas. Eu tenho o método getCircuito que chama getMalha que chama getRamo. E é nesse getRamo que eu pergunto qual dispositivo a pessoa quer inserir de um ponto a ou b. Nesse esquema:
0----1----2
|---- |--- |
|---- |--- |
| ----|--- |
3----4----5
Note que ai em cima eu tenho duas malhas, cada uma formada por 4 ramos. Eu limitei no programa que cada malha teria só 1 dispositivo, por isso declarei ramo como ramo[1][4]. Na mein eu só chamo setCircuito que inicializa o circuito preenchendo devidamente a malha, que por sua vez inicializa o vetor ramo. E é nesse ramo que há problema, pois ramo é Dipositivo que insere as subclasses de Dispositivo. Pra fazer a função leiDasMalhas eu precisa saber qual dispositivo está em ramo[j], porque é a partir dessa informação que eu preencherei eqLinear e por sua vez sistemaLinear.
Muitos métodos não estão implementados, pois estou fazendo por partes.
class Circuito {
private char[][] circuito;
private Malha[] malha;
private int[][] sistemaLinear;
private int qntMalha;
public Circuito(){
qntMalha = 2; // impede que o usuário aumente o número de malhas
malha = new Malha[2]; // aloca espaço para as malhas;
malha[0] = new Malha();
malha[1] = new Malha();
sistemaLinear = new int[2][3];
circuito = new char[5][11];
int cont = 0; // variável de ajuda
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 11; j++) {
if (( i==0) || (i==4)) {
if ((j == 0)||(j == 5)||(j == 10)){
circuito[i][j] = (char) (cont+48); // tabela ascii
cont++;
}
else
circuito[i][j] = '-';
}
else
if ((j == 0)||(j == 5)||(j == 10))
circuito[i][j] = '|';
else
circuito[i][j] = ' ';
}
}
}
public void setCircuito(){
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 11; j++)
System.out.printf ("%c", circuito[i][j]);
System.out.printf ("\n");
}
}
public void getCircuito(){
System.out.print ("Preenchendo Malhas: \n\n");
System.out.print ("Fim - 0\n");
System.out.print ("Diodo - 1\n");
System.out.print ("Indutor - 2\n");
System.out.print ("Resistor - 3\n");
System.out.print ("Capacitor - 4\n");
System.out.print ("Fonte de Tensao - 5\n");
System.out.print ("Fonte de Corrente - 6\n");
System.out.print ("Malha 1\n");
malha[0].getMalha(1,2,5,4);
System.out.print ("Malha 2\n");
malha[1].getMalha(2,3,6,5);
}
public void determinantes(int sistemaLinear[][], int corrente1[], int corrente2[]){
}
public void resolverSistemaLinear(){
int[] corrente1, corrente2;
corrente1 = new int[1];
corrente2 = new int[1];
malha[0].leiDasMalhas();
malha[1].leiDasMalhas();
determinantes(sistemaLinear, corrente1, corrente2);
}
}
class Malha {
Scanner input = new Scanner(System.in);
private int corrente;
private Dispositivo[][] ramo;
private int[] eqLinear;
public Malha(){
corrente = 0;
eqLinear = new int[3];
ramo = new Dispositivo[1][4];
}
public void getMalha(int a, int b, int c, int d){
getRamo(a,b,0);
getRamo(b,c,1);
getRamo(c,d,2);
getRamo(d,a,3);
}
void realoqueDispositivo(Dispositivo p, int tipo){
int util;
switch (tipo) {
case 1:
System.out.println("Declarei um DIODO\n");
p = new Diodo();
break;
case 2:
System.out.println("Digite o valor da resistencia:");
util = input.nextInt();
p = new Resistor(util);
break;
case 3:
p = new Indutor();
break;
case 4:
p = new Capacitor();
break;
case 5:
p = new FonteDeCorrente();
break;
case 6:
p = new FonteDeTensao();
break;
}
}
public void getRamo(int a, int b, int cont){
int aux;
int tam;
System.out.printf("Dispositivos do ponto %d ao ponto %d\n", a, B);
System.out.printf("\tDigite o numero referente ao dispositivo desejado: \n");
aux = input.nextInt();
realoqueDispositivo(ramo[0][cont], aux);
}
public void leiDasMalhas(){
System.out.println("VAMOS TESTAR");
for(int j=0; j<4; j++){
if(ramo[0][j] instanceof Resistor)
System.out.println("resistor");
if (ramo[0][j] instanceof Diodo)
System.out.println("diodo");
}
}
}
abstract class Dispositivo {
protected int corrente;
protected int tensao;
protected int malha;
public Dispositivo() {
corrente = 0;
tensao = 0;
malha = 0;
}
public void setDispositivo(){
}
public void getTensao(){
}
public void getCorrente(){
}
public void setMalha(){
}
public void getMalha(){
}
}
public class Main {
public static void main(String[] args) {
Circuito circuito = new Circuito();
circuito.setCircuito();
circuito.getCircuito();
}
}
Pergunta
Zkizo
Eu tenho uma classe Circuito, que possui duas malhas. Eu tenho o método getCircuito que chama getMalha que chama getRamo. E é nesse getRamo que eu pergunto qual dispositivo a pessoa quer inserir de um ponto a ou b. Nesse esquema:
0----1----2
|---- |--- |
|---- |--- |
| ----|--- |
3----4----5
Note que ai em cima eu tenho duas malhas, cada uma formada por 4 ramos. Eu limitei no programa que cada malha teria só 1 dispositivo, por isso declarei ramo como ramo[1][4]. Na mein eu só chamo setCircuito que inicializa o circuito preenchendo devidamente a malha, que por sua vez inicializa o vetor ramo. E é nesse ramo que há problema, pois ramo é Dipositivo que insere as subclasses de Dispositivo. Pra fazer a função leiDasMalhas eu precisa saber qual dispositivo está em ramo[j], porque é a partir dessa informação que eu preencherei eqLinear e por sua vez sistemaLinear.
Muitos métodos não estão implementados, pois estou fazendo por partes.
class Circuito { private char[][] circuito; private Malha[] malha; private int[][] sistemaLinear; private int qntMalha; public Circuito(){ qntMalha = 2; // impede que o usuário aumente o número de malhas malha = new Malha[2]; // aloca espaço para as malhas; malha[0] = new Malha(); malha[1] = new Malha(); sistemaLinear = new int[2][3]; circuito = new char[5][11]; int cont = 0; // variável de ajuda for (int i = 0; i < 5; i++) { for (int j = 0; j < 11; j++) { if (( i==0) || (i==4)) { if ((j == 0)||(j == 5)||(j == 10)){ circuito[i][j] = (char) (cont+48); // tabela ascii cont++; } else circuito[i][j] = '-'; } else if ((j == 0)||(j == 5)||(j == 10)) circuito[i][j] = '|'; else circuito[i][j] = ' '; } } } public void setCircuito(){ for (int i = 0; i < 5; i++) { for (int j = 0; j < 11; j++) System.out.printf ("%c", circuito[i][j]); System.out.printf ("\n"); } } public void getCircuito(){ System.out.print ("Preenchendo Malhas: \n\n"); System.out.print ("Fim - 0\n"); System.out.print ("Diodo - 1\n"); System.out.print ("Indutor - 2\n"); System.out.print ("Resistor - 3\n"); System.out.print ("Capacitor - 4\n"); System.out.print ("Fonte de Tensao - 5\n"); System.out.print ("Fonte de Corrente - 6\n"); System.out.print ("Malha 1\n"); malha[0].getMalha(1,2,5,4); System.out.print ("Malha 2\n"); malha[1].getMalha(2,3,6,5); } public void determinantes(int sistemaLinear[][], int corrente1[], int corrente2[]){ } public void resolverSistemaLinear(){ int[] corrente1, corrente2; corrente1 = new int[1]; corrente2 = new int[1]; malha[0].leiDasMalhas(); malha[1].leiDasMalhas(); determinantes(sistemaLinear, corrente1, corrente2); } } class Malha { Scanner input = new Scanner(System.in); private int corrente; private Dispositivo[][] ramo; private int[] eqLinear; public Malha(){ corrente = 0; eqLinear = new int[3]; ramo = new Dispositivo[1][4]; } public void getMalha(int a, int b, int c, int d){ getRamo(a,b,0); getRamo(b,c,1); getRamo(c,d,2); getRamo(d,a,3); } void realoqueDispositivo(Dispositivo p, int tipo){ int util; switch (tipo) { case 1: System.out.println("Declarei um DIODO\n"); p = new Diodo(); break; case 2: System.out.println("Digite o valor da resistencia:"); util = input.nextInt(); p = new Resistor(util); break; case 3: p = new Indutor(); break; case 4: p = new Capacitor(); break; case 5: p = new FonteDeCorrente(); break; case 6: p = new FonteDeTensao(); break; } } public void getRamo(int a, int b, int cont){ int aux; int tam; System.out.printf("Dispositivos do ponto %d ao ponto %d\n", a, B); System.out.printf("\tDigite o numero referente ao dispositivo desejado: \n"); aux = input.nextInt(); realoqueDispositivo(ramo[0][cont], aux); } public void leiDasMalhas(){ System.out.println("VAMOS TESTAR"); for(int j=0; j<4; j++){ if(ramo[0][j] instanceof Resistor) System.out.println("resistor"); if (ramo[0][j] instanceof Diodo) System.out.println("diodo"); } } } abstract class Dispositivo { protected int corrente; protected int tensao; protected int malha; public Dispositivo() { corrente = 0; tensao = 0; malha = 0; } public void setDispositivo(){ } public void getTensao(){ } public void getCorrente(){ } public void setMalha(){ } public void getMalha(){ } } public class Main { public static void main(String[] args) { Circuito circuito = new Circuito(); circuito.setCircuito(); circuito.getCircuito(); } }Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.