Skip to content

Commit 065fee2

Browse files
committed
- Commit do Exercício 3 (enunciado na pasta 'exercise') do Capítulo 7
1 parent 0dc7386 commit 065fee2

File tree

9 files changed

+250
-0
lines changed

9 files changed

+250
-0
lines changed
23.1 KB
Binary file not shown.

EX-CAP-07-03/src/EX0703.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import IR.*;
2+
import Lista.*;
3+
4+
public class EX0703 {
5+
6+
public static void main(String[] args) {
7+
Pilha x = new Pilha();
8+
9+
Contribuinte c;
10+
11+
c = new PFisica("Joao Santos", 3000.00, "11111");
12+
x.push(c);
13+
c = new PJuridica("Lojas AA", 150000.00, "10055");
14+
x.push(c);
15+
c = new PFisica("Maria Soares", 5000.00, "22222");
16+
x.push(c);
17+
c = new PJuridica("Supermercados B", 2000000.00, "10066");
18+
x.push(c);
19+
c = new PFisica("Carla Maia", 1500.00, "33333");
20+
x.push(c);
21+
c = new PJuridica("Posto XX", 500000.00, "10077");
22+
x.push(c);
23+
24+
while (!x.vazio())
25+
{
26+
c = (Contribuinte)x.pop();
27+
System.out.printf("%s %9.2f\n", c.getNome(), c.calcImposto());
28+
}
29+
}
30+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}

EX-CAP-07-03/src/IR/PFisica.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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+
}

EX-CAP-07-03/src/IR/PJuridica.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
}

EX-CAP-07-03/src/Lista/IPilha.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package Lista;
2+
3+
public interface IPilha {
4+
5+
Object pop();
6+
void push(Object o);
7+
boolean vazio();
8+
}

EX-CAP-07-03/src/Lista/Lista.java

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package Lista;
2+
3+
public class Lista {
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+
}

EX-CAP-07-03/src/Lista/No.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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+
}

EX-CAP-07-03/src/Lista/Pilha.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package Lista;
2+
3+
public class Pilha extends Lista implements IPilha {
4+
5+
public void push(Object x) {
6+
insIni(x);
7+
}
8+
9+
public Object pop() {
10+
return retIni();
11+
}
12+
}

0 commit comments

Comments
 (0)