File tree Expand file tree Collapse file tree 8 files changed +238
-0
lines changed
Expand file tree Collapse file tree 8 files changed +238
-0
lines changed Original file line number Diff line number Diff line change 1+ import Lista .*;
2+ import IR .*;
3+
4+ public class EX0702 {
5+
6+ public static void main (String [] args ) {
7+ Pilha x = new Lista ();
8+
9+ Contribuinte c ;
10+
11+ c = new PFisica ("Joao Santos" , 3000.00 , "11111" );
12+ x .insIni (c );
13+ c = new PJuridica ("Lojas AA" , 150000.00 , "10055" );
14+ x .insIni (c );
15+ c = new PFisica ("Maria Soares" , 5000.00 , "22222" );
16+ x .insIni (c );
17+ c = new PJuridica ("Supermercados B" , 2000000.00 , "10066" );
18+ x .insIni (c );
19+ c = new PFisica ("Carla Maia" , 1500.00 , "33333" );
20+ x .insIni (c );
21+ c = new PJuridica ("Posto XX" , 500000.00 , "10077" );
22+ x .insIni (c );
23+
24+ while (!x .vazio ())
25+ {
26+ c = (Contribuinte )x .retIni ();
27+ System .out .printf ("%s %9.2f\n " , c .getNome (), c .calcImposto ());
28+ }
29+ }
30+ }
Original file line number Diff line number Diff line change 1+ package IR ;
2+ import Lista .Lista ;
3+
4+ public abstract class Contribuinte {
5+ protected String nome ;
6+ protected double rendaBrt ;
7+
8+ public static Lista listaContr () {
9+ Lista lst = new Lista ();
10+
11+ Contribuinte c ;
12+
13+ c = new PFisica ("Joao Santos" , 3000.00 , "11111" );
14+ lst .insFin (c );
15+ c = new PJuridica ("Lojas AA" , 150000.00 , "10055" );
16+ lst .insFin (c );
17+ c = new PFisica ("Maria Soares" , 5000.00 , "22222" );
18+ lst .insFin (c );
19+ c = new PJuridica ("Supermercados B" , 2000000.00 , "10066" );
20+ lst .insFin (c );
21+ c = new PFisica ("Carla Maia" , 1500.00 , "33333" );
22+ lst .insFin (c );
23+ c = new PJuridica ("Posto XX" , 500000.00 , "10077" );
24+ lst .insFin (c );
25+
26+ return lst ;
27+ }
28+
29+ public String getNome () {
30+ return nome ;
31+ }
32+
33+ abstract public double calcImposto ();
34+ }
Original file line number Diff line number Diff line change 1+ package IR ;
2+
3+ public class PFisica extends Contribuinte {
4+ protected String cpf ;
5+
6+ public PFisica (String n , double r , String c ) {
7+ nome = n ;
8+ rendaBrt = r ;
9+ cpf = c ;
10+ }
11+
12+ public double calcImposto (){
13+ if (rendaBrt <= 1400.00 )
14+ return 0.0 ;
15+
16+ if (rendaBrt <= 2100.00 )
17+ return (rendaBrt * 0.1 ) - 100.00 ;
18+
19+ if (rendaBrt <= 2800.00 )
20+ return (rendaBrt * 0.15 ) - 270.00 ;
21+
22+ if (rendaBrt <= 3600.00 )
23+ return (rendaBrt * 0.25 ) - 500.00 ;
24+
25+ return (rendaBrt * 0.3 ) - 700.00 ;
26+ }
27+ }
Original file line number Diff line number Diff line change 1+ package IR ;
2+
3+ public class PJuridica extends Contribuinte {
4+ protected String cnpj ;
5+
6+ public PJuridica (String n , double r , String c ) {
7+ nome = n ;
8+ rendaBrt = r ;
9+ cnpj = c ;
10+ }
11+
12+ public double calcImposto () {
13+ return rendaBrt * 0.1 ;
14+ }
15+ }
Original file line number Diff line number Diff line change 1+ package Lista ;
2+
3+ public class Lista implements Pilha {
4+ private int tam = 0 ;
5+ private No ini = null ;
6+ private No fin = null ;
7+ private No corr = null ;
8+
9+ public boolean vazio () {
10+ return tam == 0 ;
11+ }
12+
13+ public boolean insIni (Object x ) {
14+ No novoNo = new No (x , null );
15+
16+ if (vazio ())
17+ fin = novoNo ;
18+
19+ novoNo .setProx (ini );
20+ ini = novoNo ;
21+ corr = novoNo ;
22+ tam ++;
23+
24+ return novoNo != null ;
25+ }
26+
27+ public boolean insFin (Object x ) {
28+ if (vazio ())
29+ return insIni (x );
30+
31+ No novoNo = new No (x , null );
32+
33+ fin .setProx (novoNo );
34+ fin = novoNo ;
35+ corr = novoNo ;
36+ tam ++;
37+
38+ return novoNo != null ;
39+ }
40+
41+ public Object retIni () {
42+ if (vazio ())
43+ return null ;
44+
45+ No noIni = ini ;
46+ No noAux = ini .getProx ();
47+
48+ if (ini .equals (corr ))
49+ corr = noAux ;
50+
51+ ini = noAux ;
52+
53+ tam --;
54+
55+ return noIni .getElem ();
56+ }
57+
58+ public Object retFin () {
59+ if (vazio ())
60+ return null ;
61+
62+ No noAux = ini ;
63+ if (noAux == null )
64+ return null ;
65+
66+ while (!noAux .equals (fin )) {
67+ noAux = noAux .getProx ();
68+ }
69+
70+ noAux .setProx (null );
71+
72+ if (fin .equals (corr ))
73+ corr = noAux ;
74+
75+ fin = noAux ;
76+
77+ tam --;
78+
79+ return noAux .getElem ();
80+ }
81+
82+ public void posIni () {
83+ if (vazio ()) {
84+ corr = null ;
85+ return ;
86+ }
87+
88+ corr = ini ;
89+ }
90+
91+ public Object prox () {
92+ if (corr == null )
93+ return null ;
94+
95+ No noRetorno = corr ;
96+
97+ corr = corr .getProx ();
98+
99+ return noRetorno .getElem ();
100+ }
101+ }
Original file line number Diff line number Diff line change 1+ package Lista ;
2+
3+ class No {
4+ private Object elem ;
5+ private No prox ;
6+
7+ public No (Object e , No p ) {
8+ elem = e ;
9+ prox = p ;
10+ }
11+
12+ public Object getElem () {
13+ return elem ;
14+ }
15+
16+ public No getProx () {
17+ return prox ;
18+ }
19+
20+ public void setProx (No o ) {
21+ prox = o ;
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ package Lista ;
2+
3+ public interface Pilha {
4+
5+ boolean insIni (Object x );
6+ Object retIni ();
7+ boolean vazio ();
8+ }
You can’t perform that action at this time.
0 commit comments