import javax.swing.JOptionPane; class Prestacao { double C,I,N,P=0,M,CT,K; public double ValorPresta(double P) { C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da texa mensal de juros")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); I = I / 100; P = (C * I) / (1 - (1 / Math.pow((1 + I),N))); return(P); } public double ValorTaxa(double I) { C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); P = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da prestacao mensal a ser paga")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); K = P / C; I = 0.00001; if (K>CT) { while (K > CT) { I = I + 0.00001; CT = (I * Math.pow((1 + I),N)) / (Math.pow((1 + I),N)-1); } } else { while (CT > K) { I = I + 0.00001; CT = (I * Math.pow((1 + I),N)) / (Math.pow((1 + I),N)-1); } } I = I * 100; return (I); } public double ValorTempo() { C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); P = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da prestacao mensal a ser paga")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da taxa mensal de juros")); I = I / 100; K = 1 - ((C * I) / P); N = Math.log(K) / -Math.log(1 + I); return(N); } public double ValorCapital(double C) { P = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da prestacao mensal a ser paga")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da texa mensal de juros")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); I = I / 100; C = (P / I) * (Math.pow((1 + I),N) - 1) / (Math.pow((1 + I),N)); return(C); } public double ValorMontante(double P,double M) { C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da texa mensal de juros")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); I = I / 100; P = (C * I) / (1 - (1 / Math.pow((1 + I),N))); M = P * N; return(M); } } class PrestaSAC { double C,I,J,K1,K2,N,NT,P=0,PP,PS,M,CT,NP,K; public double ValorPresta(double P) { C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da texa mensal de juros")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); NP=Double.parseDouble(JOptionPane.showInputDialog("Digite o numero da prestacao")); I = I / 100; P = C / N; C = C * ((N - (NP - 1)) / N); J = C * I; P = P + J; return(P); } public double ValorTaxa(double I) { C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); P = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da prestacao mensal a ser paga")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); NP=Double.parseDouble(JOptionPane.showInputDialog("Digite o numero da prestacao")); I = (N * P - C) / (C * (N - NP + 1)); I = I * 100; return (I); } public double ValorTempo() { double PV=1.00,DIF; C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); P = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da prestacao mensal a ser paga")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da taxa mensal de juros")); NP=Double.parseDouble(JOptionPane.showInputDialog("Digite o numero da prestacao")); N = 500; I=I/100; DIF=P-PV; while(DIF>0.01) { PV=(C/N) * (1 + I * (N - NP + 1)); DIF=P-PV; if(DIF>0.01) { N=N-1; } } return(N); } public double ValorCapital(double C) { I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da taxa mensal de juros")); I=I/100; N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); NP=Double.parseDouble(JOptionPane.showInputDialog("Digite o numero da prestacao")); P = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da prestacao mensal a ser paga")); C = (P * N) / (1 + I * (N -NP + 1)); return(C); } public double ValorMontante(double P,double M) { C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da texa mensal de juros")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); I = I / 100; M=(C*(1/N+I) + (C/N)*(1+I))*(N/2); return(M); } public void IgualaPresta() { String Msg1="",Msg2=""; double CT; C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da texa mensal de juros")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); NP=1.0; I = I / 100; PP=(C * I) / (1 - (1 / Math.pow((1 + I),N))); PS=999999.99; P=C/N; CT=C/N; NT=N; NP=1; while(PS>PP) { C=CT*NT; J=C*I; PS=P+J; NT=NT-1; NP=NP+1; } Msg1="Na prestacao numero: " + String.format("%.0f",NP-1) + " " + "as prestacoes Price e SAC se igualam ou Price passa a ser maior"; Msg2="Nessa ocasiao, as prestacoes Price e SAC sao: " + String.format("%.2f",PP) + " " + "e" + " " + String.format("%.2f",PS) + " " + "respectivamente"; JOptionPane.showMessageDialog(null,Msg1); JOptionPane.showMessageDialog(null,Msg2); } public void Historico() { double PS[]=new double[500]; int i,PC; double CT,ACP=0.00,ACS=0.00,IP,DF; String Msg1="",Msg2="",Msg3="",Msg4="",Msg5=""; C = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do capital tomado")); I = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da texa mensal de juros")); N = Double.parseDouble(JOptionPane.showInputDialog("Digite o tempo para amortização")); PC=Integer.parseInt(JOptionPane.showInputDialog("Digite a parcela SAC a ser mostrada")); IP=Double.parseDouble(JOptionPane.showInputDialog("Digite a taxs para atualizacao de valores"))/100; I=I/100; PP=(C * I) / (1 - (1 / Math.pow((1 + I),N))); P=C/N; CT=C/N; NT=N; for(i=0;i0 && OP<6); } public void MenuSac() { String Msg=""; int OP=1; double P=0,I=0,N,C=0,M=0; PrestaSAC PS = new PrestaSAC(); do { OP=Integer.parseInt(JOptionPane.showInputDialog("Digite uma opcao:" + "\n\n" + "1- Prestacao SAC" + "\n\n" + "2- Taxa SAC" + "\n\n" + "3- Tempo SAC" + "\n\n" + "4- Capital SAC" + "\n\n" + "5- Montante SAC")); switch(OP) { case 1: P = PS.ValorPresta(P); Msg="O valor da prestacao e:" + " " + String.format("%.2f",P); JOptionPane.showMessageDialog(null,Msg); break; case 2: I = PS.ValorTaxa(I); Msg = "O valor da taxa e:" + " " + String.format("%.2f", I); JOptionPane.showMessageDialog(null,Msg); break; case 3: N = PS.ValorTempo(); Msg="O tempo de amortizacao e:" + " " + String.format("%.0f",N); JOptionPane.showMessageDialog(null,Msg); break; case 4: C = PS.ValorCapital(C); Msg="O valor do capital tomado e:" + " " + String.format("%.2f",C); JOptionPane.showMessageDialog(null,Msg); break; case 5: M = PS.ValorMontante(P,M); Msg = "O montante a ser pago e:" + " " + String.format("%.2f",M); JOptionPane.showMessageDialog(null,Msg); break; } } while (OP>0 && OP<6); } } public class Price { public static void main(String[] args) { String Msg=""; int OP=1; MenuEntra EV = new MenuEntra(); PrestaSAC BC = new PrestaSAC(); do { OP=Integer.parseInt(JOptionPane.showInputDialog("Digite uma opcao:" + "\n\n" + "1- Calculos em Price" + "\n\n" + "2-Calculos em SAC" + "\n\n" + "3- Iguala Price/SAC" + "\n\n" + "4- Histórico Price/SAC")); switch(OP) { case 1: EV.MenuPrice(); break; case 2: EV.MenuSac(); break; case 3: BC.IgualaPresta(); break; case 4: BC.Historico(); break; } } while (OP>0 && OP<5); } }