Вы находитесь на странице: 1из 5

UNIVERSIDADE FEDERAL DO PAR

INSTITUTO DE CINCIAS EXATAS E NATURAIS


FACULDADE DE COMPUTAO
CUSRO DE BACHARELADO EM CINCIA DA COMPUTAO
DISCIPLINA: PROGRAMAO EM LGICA

Traduzindo decimais por extenso

Aluno: Derick Eduardo Dias Rosa Mat: 10088000101


Aluno: Renato Renison Moreira Oliveira Mat: 10088001101
Professor: Eloi Favero

Belm PA
Novembro 2011

Classe Primitiva
1 package Trabalho;
2
3 public class Primitivas {
4
5 public static String s;
6 public static int n;
7
8 public static void le_fita(String[] V) {
9
10
s = V[0]+"@";
11
n=s.length()+1;
12 }
13 public static int[] pe = {0};
14
15 public static boolean tok(String c, int[] i, int[] o) {
16
o[0] = i[0] + 1;
17
if (pe[0] < i[0]) {
18
pe = o;
19
}
20
return (s.substring(i[0], i[0] + 1).equals(c));
21 }
22
23 public static boolean isDigit(String x) {
24
if ("0123456789".indexOf(x) > -1) {
25
return true;
26
} else {
27
return false;
28
}
29 }
30
31 public static boolean digit(String c, int[] i, int[] o) {
32
o[0] = i[0] + 1;
33
if (pe[0] < i[0]) {
34
pe = o;
35
}
36
c = s.substring(i[0], i[0] + 1);
37
return (isDigit(c));
38 }
39
40 public static boolean attr(int[] v, int exp) {
41
v[0] = exp;
42
return (true);
43 }
44
45 public static boolean attrs(String[] V, String exp) {
46
V[0] = exp;
47
return true;
48 }
49 }

Classe RomanoDecimal

1 package Trabalho;
2
3 import java.util.Scanner;
4 import prolog.*;
5
6 public class RomanoDecimal extends Primitivas {
7
8 private static boolean RS(String[] V, int[] i, int[] o) {
9
int[] i1 = {0};
10
String[] v1 = {""};
11
String[] v2 = {""};
12
n--;
13
return (Romam(v1, i, i1) && RS(v2, i1, o) && attrs(V, v1[0] + v2[0])
14
|| attrs(V, "") && attr(o, i[0]));
15
16 }
17
18 private static boolean Romam(String[] V, int[] i, int[] o) {
19
int[] i1 = {0};
20
21
return (tok("9", i, o) && (n-1==4) && attrs(V, "Nove mil e ")||
22
tok("8", i, o) && (n-1==4) && attrs(V, "Oito mil e ")||
23
tok("7", i, o) && (n-1==4) && attrs(V, "Sete mil e ")||
24
tok("6", i, o) && (n-1==4) && attrs(V, "Seis mil e ")||
25
tok("5", i, o) && (n-1==4) && attrs(V, "Cinco mil e ")||
26
tok("4", i, o) && (n-1==4) && attrs(V, "Quatro mil e ")||
27
tok("3", i, o) && (n-1==4) && attrs(V, "Trs mil e ")||
28
tok("2", i, o) && (n-1==4) && attrs(V, "Dois mil e ")||
29
tok("1", i, o) && (n-1==4) && attrs(V, "Um mil e ")||
30
tok("0", i, o) && (n-1==4) && attrs(V, "")||
31
tok("9", i, o) && (n-1==3) && attrs(V, "novecentos e ")||
32
tok("8", i, o) && (n-1==3) && attrs(V, "oitocentos e ")||
33
tok("7", i, o) && (n-1==3) && attrs(V, "setecentos e ")||
34
tok("6", i, o) && (n-1==3) && attrs(V, "seiscentos e ")||
35
tok("5", i, o) && (n-1==3) && attrs(V, "quinhentos e ")||
36
tok("4", i, o) && (n-1==3) && attrs(V, "quatrocentos e ")||
37
tok("3", i, o) && (n-1==3) && attrs(V, "trezentos e ")||
38
tok("2", i, o) && (n-1==3) && attrs(V, "duzentos e ")||
39
tok("1", i, o) && (n-1==3) && attrs(V, "cento e ")||
40
tok("0", i, o) && (n-1==3) && attrs(V, "")||
41
tok("9", i, o) && (n-1==2) && attrs(V, "noventa e ")||

42
tok("8", i, o) && (n-1==2) && attrs(V, "oitenta e ")||
43
tok("7", i, o) && (n-1==2) && attrs(V, "setenta e ")||
44
tok("6", i, o) && (n-1==2) && attrs(V, "sessenta e ")||
45
tok("5", i, o) && (n-1==2) && attrs(V, "cinquenta e ")||
46
tok("4", i, o) && (n-1==2) && attrs(V, "quarenta e ")||
47
tok("3", i, o) && (n-1==2) && attrs(V, "trinta e ")||
48
tok("2", i, o) && (n-1==2) && attrs(V, "vinte e ")||
49
tok("1", i, i1) && (n-1==2) && tok("9",i1,o) && attrs(V, "dezenove
")||
50
tok("1", i, i1) && (n-1==2) && tok("8",i1,o) && attrs(V, "dezoito ")||
51
tok("1", i, i1) && (n-1==2) && tok("7",i1,o) && attrs(V, "dezessete
")||
52
tok("1", i, i1) && (n-1==2) && tok("6",i1,o) && attrs(V, "dezesseis
")||
53
tok("1", i, i1) && (n-1==2) && tok("5",i1,o) && attrs(V, "quinze ")||
54
tok("1", i, i1) && (n-1==2) && tok("4",i1,o) && attrs(V, "quatorze ")||
55
tok("1", i, i1) && (n-1==2) && tok("3",i1,o) && attrs(V, "treze ")||
56
tok("1", i, i1) && (n-1==2) && tok("2",i1,o) && attrs(V, "doze ")||
57
tok("1", i, i1) && (n-1==2) && tok("1",i1,o) && attrs(V, "onze ")||
58
tok("0", i, o) && (n-1==2) && attrs(V, "")||
59
tok("9", i, o) && (n-1==1) && attrs(V, "nove ")||
60
tok("8", i, o) && (n-1==1) && attrs(V, "oito ")||
61
tok("7", i, o) && (n-1==1) && attrs(V, "sete ")||
62
tok("6", i, o) && (n-1==1) && attrs(V, "seis ")||
63
tok("5", i, o) && (n-1==1) && attrs(V, "cinco ")||
64
tok("4", i, o) && (n-1==1) && attrs(V, "quatro ")||
65
tok("3", i, o) && (n-1==1) && attrs(V, "trs ")||
66
tok("2", i, o) && (n-1==1) && attrs(V, "dois ")||
67
tok("1", i, o) && (n-1==1) && attrs(V, "um ")||
68
tok("0", i, o) && (n-1==1) && attrs(V, V.toString().substring(0, n-2)));
69 }
70 public static void main( String args[] ){
71 int[] i = {0};
72
int[] i1 = {0};
73
int[] o1 = {0};
74
String[] V = {""};
75
Scanner input = new Scanner(System.in);
76
System.out.println("Digite o nmero que voc deseja escrever por extenso:
");
77
V[0]= input.nextLine();
78
le_fita(V);
79
pe[0] = 0;
80
if (RS(V, i, i1) && tok("@", i1, o1)) {
81
System.out.println("Ok at: " + o1[0] + "\nVal decimal= " + V[0]);
82
} else {
83
System.out.println("Erro na posicao: " + (pe[0] + 1));
84
}
85

Вам также может понравиться