Ir para conteúdo
Fórum Script Brasil

Zkizo

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Zkizo

Zkizo's Achievements

0

Reputação

  1. Eu estou mandando um vetor para a função realoqueDispositivo. Lá dentro está tido ok, mas quando eu volto para getRamo dá erro de memória nesse peque teste que eu fiz pedido para imprimir a corrente "ramo.getCorrente". Lembrando que ramo está declarado como Dispositivo *ramo[4]; void Malha::realoqueDispositivo(Dispositivo *p, int tipo){ //pegar modelo de realoque em documentos recebidos switch (tipo) { case 1: p = new Diodo; p->setCorrente(1); p->setCorrente(1); break; case 2: p = new Resistor; p->setCorrente(2); break; case 3: p = new Indutor; p->setCorrente(3); break; case 4: p = new Capacitor; p->setCorrente(4); break; case 5: p = new FonteDeCorrente; p->setCorrente(5); break; case 6: p = new FonteDeTensao; p->setCorrente(6); break; } } void Malha::getRamo(int a, int b, int cont){ int aux; cout<<endl<<"Dispositivos do ponto "<<a<<" ao ponto "<<b<<endl; for ( int i = 0; i < 4; i++){ cout<<endl<<"\tDigite o numero referente ao dispositivo desejado:"<<endl; cin>>aux; realoqueDispositivo(ramo[i], aux); ramo[i]->setCorrente(1); ramo[i]->setCorrente(1); } }
  2. 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(); } }
×
×
  • Criar Novo...