Você está na página 1de 11

UNIVERSIDADE FEDERAL DO PAR

Instituto de Cincias Exatas e Naturais


Alunos: Yvan Pereira dos Santos Brito
Thales Silva de Sousa
CDIGO JAVA DECIMAL PARA ROMANO
package decimalromano;
class Primitivas {
public static String s;
public static void le_fita() {
s = "304@";
}
public static int[] pe = {0};
public static boolean tok(String c, int[] i, int[] o) {
o[0] = i[0] + 1;
if (pe[0] < i[0]) {
pe = o;
}
return (s.substring(i[0], i[0] + 1).equals(c));
}
public static boolean attr(String[] v, String exp) {
v[0] = exp;
return (true);
}
}
public class DecimalRomano extends Primitivas {

public static boolean RS(String[] V, int[] i, int[] o){


return (dddd(V,i,o)||ddd(V,i,o)||dd(V,i,o)||d(V,i,o));
}
public static boolean d(String[] V, int[] i, int[] o){
return( tok("0",i,o) && attr(V,"") ||
tok("1",i,o) && attr(V,"I") ||
tok("2",i,o) && attr(V,"II") ||
tok("3",i,o) && attr(V,"III") ||
tok("4",i,o) && attr(V,"IV") ||
tok("5",i,o) && attr(V,"V") ||

tok("6",i,o) && attr(V,"VI") ||


tok("7",i,o) && attr(V,"VII") ||
tok("8",i,o) && attr(V,"VIII") ||
tok("9",i,o) && attr(V,"IX"));
}
public static boolean dd(String[] V, int[] i, int[] o){
int[] i1 = {0};
String[] D = {""};
return( tok("0",i,i1) && d(D,i1, o) && attr(V,"" +D[0]) ||
tok("1",i,i1) && d(D,i1, o) && attr(V,"X"+D[0]) ||
tok("2",i,i1) && d(D,i1, o) && attr(V,"XX"+D[0]) ||
tok("3",i,i1) && d(D,i1, o) && attr(V,"XXX"+D[0]) ||
tok("4",i,i1) && d(D,i1, o) && attr(V,"XL"+D[0]) ||
tok("5",i,i1) && d(D,i1, o) && attr(V,"L"+D[0]) ||
tok("6",i,i1) && d(D,i1, o) && attr(V,"LX"+D[0]) ||
tok("7",i,i1) && d(D,i1, o) && attr(V,"LXX"+D[0]) ||
tok("8",i,i1) && d(D,i1, o) && attr(V,"LXXX"+D[0]) ||
tok("9",i,i1) && d(D,i1, o) && attr(V,"XC"+D[0]));
}
public static boolean ddd(String[] V, int[] i, int[] o){
int[] i1 = {0}, i2 = {0};
String[] D = {""};
return( tok("0",i,i1) && dd(D,i1,o) && attr(V,""+D[0]) ||
tok("1",i,i1) && dd(D,i1,o) && attr(V,"C"+D[0]) ||
tok("2",i,i1) && dd(D,i1,o) && attr(V,"CC"+D[0]) ||
tok("3",i,i1) && dd(D,i1,o) && attr(V,"CCC"+D[0]) ||
tok("4",i,i1) && dd(D,i1,o) && attr(V,"CD"+D[0]) ||
tok("5",i,i1) && dd(D,i1,o) && attr(V,"D"+D[0]) ||
tok("6",i,i1) && dd(D,i1,o) && attr(V,"DC"+D[0]) ||
tok("7",i,i1) && dd(D,i1,o) && attr(V,"DCC"+D[0]) ||
tok("8",i,i1) && dd(D,i1,o) && attr(V,"DCCC"+D[0]) ||
tok("9",i,i1) && dd(D,i1,o) && attr(V,"CM"+D[0]) );
}
public static boolean dddd(String[] V, int[] i, int[] o){
int[] i1 = {0}, i2 = {0};
String[] D = {""};
return( tok("1",i,i1) && ddd(D,i1,o) && attr(V,"M"+D[0]) ||
tok("2",i,i1) && ddd(D,i1,o) && attr(V,"MM"+D[0]) ||
tok("3",i,i1) && ddd(D,i1,o) && attr(V,"MMM"+D[0]));
}
public static void main(String args[]) {
int[] i = {0};

int[] i1 = {0};
int[] o1 = {0};
String[] V = {""};
le_fita();
pe[0] = 0;
if (RS(V, i, i1) && tok("@", i1, o1)) {
System.out.println("Ok at: " + o1[0] + " Val romano= " + V[0]);
} else {
System.out.println("Erro na posicao: " + (pe[0] + 1));
}
}
}

CDIGO JAVA ROMANO PARA DECIMAL


package romanodecimal;
class Primitivas {
public static String s;
public static void le_fita() {
s = "CCXLIII@";
}
public static int[] pe = {0};
public static boolean tok(String c, int[] i, int[] o) {
o[0] = i[0] + 1;
if (pe[0] < i[0]) {
pe = o;
}
return (s.substring(i[0], i[0] + 1).equals(c));
}
public static boolean attr(int[] v, int exp) {
v[0] = exp;
return (true);
}
}

public class RomanoDecimal extends Primitivas {


private static boolean RS(int[] V, int[] i, int[] o) {
int[] i1 = {0};
int[] v1 = {0};
int[] v2 = {0};
return (Romam(v1, i, i1) && RS(v2, i1, o) && attr(V, v1[0] + v2[0])
|| attr(V, 0) && attr(o, i[0]));
}
private static boolean Romam(int[] V, int[] i, int[] o) {
int[] i1 = {0};
return (tok("M",i,o) && attr(V, 1000)
||tok("C", i, o) && attr(V, 100)
|| tok("X", i, i1) && tok("C", i1, o) && attr(V, 90)
|| tok("L", i, o) && attr(V, 50)
|| tok("X", i, i1) && tok("L", i1, o) && attr(V, 40)
|| tok("X", i, o) && attr(V, 10)
|| tok("I", i, i1) && tok("X", i1, o) && attr(V, 9)
|| tok("V", i, o) && attr(V, 5)
|| tok("I", i, i1) && tok("V", i1, o) && attr(V, 4)
|| tok("I", i, o) && attr(V, 1));
}
public static void main(String args[]) {
int[] i = {0};
int[] i1 = {0};
int[] o1 = {0};
int[] V = {0};
le_fita();
pe[0] = 0;
if (RS(V, i, i1) && tok("@", i1, o1)) {
System.out.println("Ok at: " + o1[0] + " Val decimal= " + V[0]);
} else {
System.out.println("Erro na posicao: " + (pe[0] + 1));
}
}
}

CDIGO JAVA DECIMAL PARA EXTENSO


package decimalextenso;
class Primitivas {
public static String s;
public static void le_fita() {
s = "805@";
}
public static int[] pe = {0};
public static boolean tok(String c, int[] i, int[] o) {
o[0] = i[0] + 1;
if (pe[0] < i[0]) {
pe = o;
}
return (s.substring(i[0], i[0] + 1).equals(c));
}
public static boolean attr(String[] v, String exp) {
v[0] = exp;
return (true);
}
}
public class DecimalExtenso extends Primitivas {

public static boolean RS(String[] V, int[] i, int[] o){


return (ddd(V,i,o)||dd(V,i,o)||d(V,i,o));
}
public static boolean d(String[] V, int[] i, int[] o){
return( tok("0",i,o) && attr(V,"ZERO") ||

tok("1",i,o) && attr(V,"UM") ||


tok("2",i,o) && attr(V,"DOIS") ||
tok("3",i,o) && attr(V,"TRES") ||
tok("4",i,o) && attr(V,"QUATRO") ||
tok("5",i,o) && attr(V,"CINCO") ||
tok("6",i,o) && attr(V,"SEIS") ||
tok("7",i,o) && attr(V,"SETE") ||
tok("8",i,o) && attr(V,"OITO") ||
tok("9",i,o) && attr(V,"NOVE"));
}
public static boolean dd(String[] V, int[] i, int[] o){
int[] i1 = {0};
String[] D = {""};
return( tok("0",i,i1) && d(D,i1, o) && attr(V,"" +D[0]) ||
tok("1",i,i1) && tok("0",i1,o) && attr(V,"DEZ") ||
tok("1",i,i1) && tok("1",i1,o) && attr(V,"ONZE") ||
tok("1",i,i1) && tok("2",i1,o) && attr(V,"DOZE") ||
tok("1",i,i1) && tok("3",i1,o) && attr(V,"TREZE") ||
tok("1",i,i1) && tok("4",i1,o) && attr(V,"QUATORZE") ||
tok("1",i,i1) && tok("5",i1,o) && attr(V,"QUINZE") ||
tok("1",i,i1) && tok("6",i1,o) && attr(V,"DEZESSEIS") ||
tok("1",i,i1) && tok("7",i1,o) && attr(V,"DEZESSETE") ||
tok("1",i,i1) && tok("8",i1,o) && attr(V,"DEZOITO") ||
tok("1",i,i1) && tok("9",i1,o) && attr(V,"DEZENOVE") ||
tok("2",i,i1) && tok("0",i1,o) && attr(V,"VINTE") ||
tok("2",i,i1) && d(D,i1, o) && attr(V,"VINTE E "+D[0]) ||
tok("3",i,i1) && tok("0",i1,o) && attr(V,"TRINTA") ||
tok("3",i,i1) && d(D,i1, o) && attr(V,"TRINTA E "+D[0]) ||
tok("4",i,i1) && tok("0",i1,o) && attr(V,"QUARENTA") ||
tok("4",i,i1) && d(D,i1, o) && attr(V,"QUARENTA E "+D[0]) ||
tok("5",i,i1) && tok("0",i1,o) && attr(V,"CINQUENTA") ||
tok("5",i,i1) && d(D,i1, o) && attr(V,"CINQUENTA E "+D[0]) ||
tok("6",i,i1) && tok("0",i1,o) && attr(V,"SESSENTA") ||
tok("6",i,i1) && d(D,i1, o) && attr(V,"SESSENTA E "+D[0]) ||
tok("7",i,i1) && tok("0",i1,o) && attr(V,"SETENTA") ||
tok("7",i,i1) && d(D,i1, o) && attr(V,"SETENTA E "+D[0]) ||
tok("8",i,i1) && tok("0",i1,o) && attr(V,"OITENTA") ||
tok("8",i,i1) && d(D,i1, o) && attr(V,"OITENTA E "+D[0]) ||
tok("9",i,i1) && tok("0",i1,o) && attr(V,"NOVENTA") ||
tok("9",i,i1) && d(D,i1, o) && attr(V,"NOVENTA E "+D[0]));
}
public static boolean ddd(String[] V, int[] i, int[] o){
int[] i1 = {0}, i2 = {0};
String[] D = {""};

return( tok("1",i,i1) && tok("0",i1,o) && tok("0",i2,o) && attr(V,"CEM") ||


tok("1",i,i1) && dd(D,i1, o) && attr(V,"CENTO E "+D[0]) ||
tok("2",i,i1) && tok("0",i1,o) && tok("0",i2,o) && attr(V,"DUZENTOS") ||
tok("2",i,i1) && dd(D,i1, o) && attr(V,"DUZENTOS E "+D[0]) ||
tok("3",i,i1) && tok("0",i1,o) && tok("0",i2,o) && attr(V,"TREZENTOS") ||
tok("3",i,i1) && dd(D,i1, o) && attr(V,"TREZENTOS E "+D[0]) ||
tok("4",i,i1) && tok("0",i1,o) && tok("0",i2,o) &&
attr(V,"QUATROCENTOS") ||
tok("4",i,i1) && dd(D,i1, o) && attr(V,"QUATROCENTOS E "+D[0]) ||
tok("5",i,i1) && tok("0",i1,o) && tok("0",i2,o) && attr(V,"QUINHENTOS")
||
tok("5",i,i1) && dd(D,i1, o) && attr(V,"QUINHENTOS E "+D[0]) ||
tok("6",i,i1) && tok("0",i1,o) && tok("0",i2,o) && attr(V,"SEISCENTOS")
||
tok("6",i,i1) && dd(D,i1, o) && attr(V,"SEISCENTOS E "+D[0]) ||
tok("7",i,i1) && tok("0",i1,o) && tok("0",i2,o) && attr(V,"SETECENTOS")
||
tok("7",i,i1) && dd(D,i1, o) && attr(V,"SETECENTOS E "+D[0]) ||
tok("8",i,i1) && tok("0",i1,o) && tok("0",i2,o) && attr(V,"OITOCENTOS")
||
tok("8",i,i1) && dd(D,i1, o) && attr(V,"OITOCENTOS E "+D[0]) ||
tok("9",i,i1) && tok("0",i1,o) && tok("0",i2,o) &&
attr(V,"NOVECENTOS") ||
tok("9",i,i1) && dd(D,i1, o) && attr(V,"NOVECENTOS E "+D[0]));
}
public static void main(String args[]) {
int[] i = {0};
int[] i1 = {0};
int[] o1 = {0};
String[] V = {""};
le_fita();
pe[0] = 0;
if (RS(V, i, i1) && tok("@", i1, o1)) {
System.out.println("Ok at: " + o1[0] + " Val extenso= " + V[0]);
} else {
System.out.println("Erro na posicao: " + (pe[0] + 1));
}
}
}

CDIGO PROLOG EXTENSO PARA DECIMAL E DECIMAL PARA EXTENSO

dx(X)-->dddd(X);ddd(X);dd(X);d(X).
d([zero])-->[0].
d([um])-->[1].
d([dois])-->[2].
d([tres])-->[3].
d([quatro])-->[4].
d([cinco])-->[5].
d([seis])-->[6].
d([sete])-->[7].
d([oito])-->[8].
d([nove])-->[9].

dd([dez])-->[1,0].
dd([onze])-->[1,1].
dd([doze])-->[1,2].
dd([treze])-->[1,3].
dd([quartoze])-->[1,4].
dd([quinze])-->[1,5].
dd([dezesseis])-->[1,6].
dd([dezessete])-->[1,7].
dd([dezoito])-->[1,8].
dd([dezenove])-->[1,9].
dd([vinte])-->[2,0].
dd([vinte,e|D])-->[2],d(D).
dd([trinta])-->[3,0].
dd([trinta,e|D] )-->[3],d(D).
dd([quarenta])-->[4,0].
dd([quarenta,e|D])-->[4],d(D).
dd([cinquenta])-->[5,0].
dd([cinquenta,e|D])-->[5],d(D).
dd([sessenta])-->[6,0].
dd([sessenta,e|D])-->[6],d(D).
dd([setenta])-->[7,0].
dd([setenta,e|D])-->[7],d(D).

dd([oitenta])-->[8,0].
dd([oitenta,e|D])-->[8],d(D).
dd([noventa])-->[9,0].
dd([noventa,e|D])-->[9],d(D).

ddd([cem])-->[1,0,0].
ddd([cento,e|DD])-->[1],dd(DD).
ddd([cento,e|D])-->[1],[0],d(D).
ddd([duzentos])-->[2,0,0].
ddd([duzentos,e|DD])-->[2],dd(DD).
ddd([duzentos,e|D])-->[2],[0],d(D).
ddd([trezentos])-->[3,0,0].
ddd([trezentos,e|DD])-->[3],dd(DD).
ddd([trezentos,e|D])-->[3],[0],d(D).
ddd([quatrocentos])-->[4,0,0].
ddd([quatrocentos,e|DD])-->[4],dd(DD).
ddd([quatrocentos,e|D])-->[4],[0],d(D).
ddd([quinhentos])-->[5,0,0].
ddd([quinhentos,e|DD])-->[5],dd(DD).
ddd([quinhentos,e|D])-->[5],[0],d(D).
ddd([seiscentos])-->[6,0,0].
ddd([seiscentos,e|DD])-->[6],dd(DD).
ddd([seiscentos,e|D])-->[6],[0],d(D).
ddd([setecentos])-->[7,0,0].
ddd([setecentos,e|DD])-->[7],dd(DD).
ddd([setecentos,e|D])-->[7],[0],d(D).
ddd([oitocentos])-->[8,0,0].
ddd([oitocentos,e|DD])-->[8],dd(DD).
ddd([oitocentos,e|D])-->[8],[0],d(D).
ddd([novecentos])-->[9,0,0].
ddd([novecentos,e|DD])-->[9],dd(DD).
ddd([novecentos,e|D])-->[9],[0],d(D).

dddd([mil])-->[1,0,0,0].
dddd([mil, DDD])-->[1],ddd(DDD).
dddd([mil,e|DD])-->[1],[0],dd(DD).
dddd([mil,e|D])-->[1],[0],[0],d(D).
dddd([D1, mil,e|D])-->d([D1]),[0],[0],d(D).
dddd([D, mil,e|DD])-->d([D]),[0],dd(DD).
dddd([D, mil,DDD])-->d([D]),ddd(DDD).

CDIGO PROLOG ROMANO PARA DECIMAL E DECIMAL PARA ROMANO

dx(X)-->dddd(X);ddd(X);dd(X);d(X).
d([])-->[0].
d([i])-->[1].
d([i,i])-->[2].
d([i,i,i])-->[3].
d([i,v])-->[4].
d([v])-->[5].
d([v,i])-->[6].
d([v,i,i])-->[7].
d([v,i,i,i])-->[8].
d([i,x])-->[9].

dd([x])-->[1,0].
dd([x|D])-->[1],d(D).
dd([x,x])-->[2,0].
dd([x,x|D])-->[2],d(D).
dd([x,x,x])-->[3,0].
dd([x,x,x|D] )-->[3],d(D).
dd([x,l])-->[4,0].
dd([x,l|D])-->[4],d(D).
dd([l])-->[5,0].
dd([l|D])-->[5],d(D).
dd([l,x])-->[6,0].
dd([l,x|D])-->[6],d(D).
dd([l,x,x])-->[7,0].
dd([l,x,x|D])-->[7],d(D).
dd([l,x,x,x])-->[8,0].
dd([l,x,x,x|D])-->[8],d(D).
dd([x,c])-->[9,0].
dd([x,c|D])-->[9],d(D).

ddd([c])-->[1,0,0].
ddd([c|DD])-->[1],dd(DD).
ddd([c|D])-->[1],[0],d(D).

ddd([c,c])-->[2,0,0].
ddd([c,c|DD])-->[2],dd(DD).
ddd([c,c|D])-->[2],[0],d(D).
ddd([c,c,c])-->[3,0,0].
ddd([c,c,c|DD])-->[3],dd(DD).
ddd([c,c,c|D])-->[3],[0],d(D).
ddd([c,d])-->[4,0,0].
ddd([c,d|DD])-->[4],dd(DD).
ddd([c,d|D])-->[4],[0],d(D).
ddd([d])-->[5,0,0].
ddd([d|DD])-->[5],dd(DD).
ddd([d|D])-->[5],[0],d(D).
ddd([d,c])-->[6,0,0].
ddd([d,c|DD])-->[6],dd(DD).
ddd([d,c|D])-->[6],[0],d(D).
ddd([d,c,c])-->[7,0,0].
ddd([d,c,c|DD])-->[7],dd(DD).
ddd([d,c,c|D])-->[7],[0],d(D).
ddd([d,c,c,c])-->[8,0,0].
ddd([d,c,c,c|DD])-->[8],dd(DD).
ddd([d,c,c,c|D])-->[8],[0],d(D).
ddd([c,m])-->[9,0,0].
ddd([c,m|DD])-->[9],dd(DD).
ddd([c,m|D])-->[9],[0],d(D).

dddd([m])-->[1,0,0,0].
dddd([m|DDD])-->[1],ddd(DDD).
dddd([m|DD])-->[1],[0],dd(DD).
dddd([m|D])-->[1],[0],[0],d(D).
dddd([m,m])-->[2,0,0,0].
dddd([m,m|DDD])-->[2],ddd(DDD).
dddd([m,m|DD])-->[2],[0],dd(DD).
dddd([m,m|D])-->[2],[0],[0],d(D).
dddd([m,m,m])-->[3,0,0,0].
dddd([m,m,m|DDD])-->[3],ddd(DDD).
dddd([m,m,m|DD])-->[3],[0],dd(DD).
dddd([m,m,m|D])-->[3],[0],[0],d(D).

Você também pode gostar