import javax.swing.JOptionPane; public class Romanos {
public Romanos() {
}
public static void main(String[] args) { Romanos r= new Romanos(); r.pedirValores(); } public void pedirValores(){
String val1=JOptionPane.showInputDialog("Digite el primer número"); System.out.println("Dato1: "+val1); String val2=JOptionPane.showInputDialog("Digite el segundo número"); System.out.println("Dato2: "+val2); char []numero1=val1.toCharArray(); char []numero2=val2.toCharArray(); sumar(numero1, numero2);
} public int sumar(char[] num1, char[] num2){ int dato1=0,dato2=0,suma; for (int i = 0; i < num1.length; i++) { int sumo=0; char pos = num1[i]; char posi; boolean sigMayor=false; if(i<=num1.length-2){ posi=num1[i+1]; int y = this.validarDato(pos, posi); if(y==1){ sigMayor=true; } }
public int romanoNumero(String romanoA, String romanoB){
int multiplicador = 0,noArreglo = 0,posision = 0;// donde arreglo es el identificador de los arreglos unidades, decenas ycentenas String numeros[] = new String[romanoA.length()-1];
for (int i = 0; i < numeros.length; i++) {
numeros[i] = romanoA.charAt(i)+"";
} int l = romanoA.length()-1,sumaRomanoA = 0,sumaRomanoB = 0,d = 0; while(l >= 0){
for (int i = 0; i < unidades.length; i++) {//busca
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarimport javax.swing.JOptionPane;
ResponderEliminarpublic class Romanos {
public Romanos() {
}
public static void main(String[] args) {
Romanos r= new Romanos();
r.pedirValores();
}
public void pedirValores(){
String val1=JOptionPane.showInputDialog("Digite el primer número");
System.out.println("Dato1: "+val1);
String val2=JOptionPane.showInputDialog("Digite el segundo número");
System.out.println("Dato2: "+val2);
char []numero1=val1.toCharArray();
char []numero2=val2.toCharArray();
sumar(numero1, numero2);
}
public int sumar(char[] num1, char[] num2){
int dato1=0,dato2=0,suma;
for (int i = 0; i < num1.length; i++) {
int sumo=0;
char pos = num1[i];
char posi;
boolean sigMayor=false;
if(i<=num1.length-2){
posi=num1[i+1];
int y = this.validarDato(pos, posi);
if(y==1){
sigMayor=true;
}
}
if(sigMayor==false){
if(pos=='i'||pos=='I'){
sumo=1;
dato1=dato1+sumo;
}
if(pos=='x'||pos=='X'){
sumo=10;
dato1=dato1+sumo;
}
if(pos=='v'||pos=='V'){
sumo=5;
dato1=dato1+sumo;
}
if(pos=='l'||pos=='L'){
sumo=50;
dato1=dato1+sumo;
}
if(pos=='c'||pos=='C'){
sumo=100;
dato1=dato1+sumo;
}
if(pos=='d'||pos=='D'){
sumo=500;
dato1=dato1+sumo;
}
if(pos=='m'||pos=='M'){
sumo=1000;
dato1=dato1+sumo;
}
}else{
if(pos=='i'||pos=='I'){
sumo=1;
dato1=dato1-sumo;
}
if(pos=='x'||pos=='X'){
sumo=10;
dato1=dato1-sumo;
}
if(pos=='v'||pos=='V'){
sumo=5;
dato1=dato1-sumo;
}
if(pos=='l'||pos=='L'){
sumo=50;
dato1=dato1-sumo;
}
if(pos=='c'||pos=='C'){
sumo=100;
dato1=dato1-sumo;
}
if(pos=='d'||pos=='D'){
sumo=500;
dato1=dato1-sumo;
}
if(pos=='m'||pos=='M'){
sumo=1000;
dato1=dato1-sumo;
}
}
if(i3&&(num1[i]==num1[i+1])&&(num1[i+1]==num1[i+2])&&(num1[i+2]==num1[i+3])){
System.out.println("Hay Error En El Numero");
pedirValores();
}
}
}
System.out.println("El Equivalente del primer numero en enteros es: "+dato1);
for (int i = 0; i < num2.length; i++) {
int sumo=0;
char pos = num2[i];
char posi;
boolean sigMayor=false;
if(i<=num2.length-2){
posi=num2[i+1];
int y = this.validarDato(pos, posi);
if(y==1){
sigMayor=true;
}
}
if(sigMayor==false){
ResponderEliminarif(pos=='i'||pos=='I'){
sumo=1;
dato2=dato2+sumo;
}
if(pos=='x'||pos=='X'){
sumo=10;
dato2=dato2+sumo;
}
if(pos=='v'||pos=='V'){
sumo=5;
dato2=dato2+sumo;
}
if(pos=='l'||pos=='L'){
sumo=50;
dato2=dato2+sumo;
}
if(pos=='c'||pos=='C'){
sumo=100;
dato2=dato2+sumo;
}
if(pos=='d'||pos=='D'){
sumo=500;
dato2=dato2+sumo;
}
if(pos=='m'||pos=='M'){
sumo=1000;
dato2=dato2+sumo;
}
}else{
if(pos=='i'||pos=='I'){
sumo=1;
dato2=dato2-sumo;
}
if(pos=='x'||pos=='X'){
sumo=10;
dato2=dato2-sumo;
}
if(pos=='v'||pos=='V'){
sumo=5;
dato2=dato2-sumo;
}
if(pos=='l'||pos=='L'){
sumo=50;
dato2=dato2-sumo;
}
if(pos=='c'||pos=='C'){
sumo=100;
dato2=dato2-sumo;
}
if(pos=='d'||pos=='D'){
sumo=500;
dato2=dato2-sumo;
}
if(pos=='m'||pos=='M'){
sumo=1000;
dato2=dato2-sumo;
}
}
if(i3&&(num2[i]==num2[i+1])&&(num2[i+1]==num2[i+2])&&(num2[i+2]==num2[i+3])){
System.out.println("Hay Error En El Numero");
pedirValores();
}
}
}
System.out.println("El Equivalente del segundo numero en enteros es: "+dato2);
suma=dato1+dato2;
System.out.println("La suma es: "+ suma);
convertirSumaARomano(suma);
return suma;
}
public int validarDato(char a, char b){
int sig = 0;
int val1=0;
int val2 = 0;
if(a=='i'||a=='I'){
val1=1;
}
if(a=='v'||a=='V'){
val1=5;
}
if(a=='x'||a=='X'){
val1=10;
}
if(a=='l'||a=='L'){
val1=50;
}
if(a=='c'||a=='C'){
val1=100;
}
if(a=='d'||a=='D'){
val1=500;
}
if(a=='m'||a=='M'){
val1=1000;
}
//segundoValor
if(b=='i'||b=='I'){
val2=1;
}
if(b=='v'||b=='V'){
val2=5;
}
if(b=='x'||b=='X'){
val2=10;
}
if(b=='l'||b=='L'){
val2=50;
}
if(b=='c'||b=='C'){
val2=100;
}
if(b=='d'||b=='D'){
val2=500;
}
if(b=='m'||b=='M'){
val2=1000;
}
if(val1<val2){
sig=1;
}
return sig;
}
public void convertirSumaARomano(int c){
ResponderEliminarif(c>=4000){
System.out.println("La Suma Es Muy Grande Para La Capacidad De Los Numeros Romanos");
System.exit(0);
}
Integer val=(Integer)c;
String t= val.toString();
String numfinal="";
if(c>1000){
int y=(int)c/1000;
for (int i = 0; i =100){
int yi=(int)c/100;
if(yi<=3){
for (int i = 0; i =5&&yi!=9){
numfinal=numfinal+"D";
yi=yi-5;
for (int i = 0; i < yi; i++) {
numfinal=numfinal+"C";
}
yi=yi+5;
}
if(yi==9){
numfinal=numfinal+"CM";
}
c=c-100*yi;
}
if(c>=10){
int yo=(int)c/10;
if(yo<=3){
for (int i = 0; i < yo; i++) {
numfinal=numfinal+"X";
}
}
if(yo==4){
numfinal=numfinal+"XL";
}
if(yo>=5&&yo!=9){
numfinal=numfinal+"L";
yo=yo-5;
for (int i = 0; i < yo; i++) {
numfinal=numfinal+"X";
}
yo=yo+5;
}
if(yo==9){
numfinal=numfinal+"XC";
}
c=c-10*yo;
}
if(c>=1){
if(c==1){
numfinal=numfinal+"I";
}
if(c==2){
numfinal=numfinal+"II";
}
if(c==3){
numfinal=numfinal+"III";
}
if(c==4){
numfinal=numfinal+"IV";
}
if(c==5){
numfinal=numfinal+"V";
}
if(c==6){
numfinal=numfinal+"VI";
}
if(c==7){
numfinal=numfinal+"VII";
}
if(c==8){
numfinal=numfinal+"VIII";
}
if(c==9){
numfinal=numfinal+"IX";
}
}
System.out.println("Su Resultado Fue: " +numfinal);
}
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarPropongo un codigo mas generalizado que el anterior.
ResponderEliminarpackage Numeros_Romanos;
import javax.swing.JOptionPane;
public class NumerosRomanos {
String unidades[], decenas[],centenas[];
public NumerosRomanos(){
unidades = new String[9];
unidades[0] = "I";
unidades[1] = "II";
unidades[2] = "III";
unidades[3] = "IV";
unidades[4] = "V";
unidades[5] = "VI";
unidades[6] = "VII";
unidades[7] = "VIII";
unidades[8] = "IX";
decenas = new String[9];
decenas[0] = "X";
decenas[1] = "XX";
decenas[2] = "XXX";
decenas[3] = "XL";
decenas[4] = "L";
decenas[5] = "LX";
decenas[6] = "LXX";
decenas[7] = "LXXX";
decenas[8] = "XC";
centenas = new String[2];
centenas[0] = "C";
centenas[1] = "CC";
}
public void numeroARomano(int numero){
int numeroTemp = 0;
String numeroRomano = "";
if (numero < 10) {
numeroRomano = unidades[numero-1];
}else if (numero >= 10 && numero < 100){
numeroTemp =(int) numero/10;
numeroRomano = decenas[numeroTemp-1];
numeroTemp = (int)numero%10;
if (numeroTemp > 0) {
numeroRomano += unidades[numeroTemp-1];
}
}else if(numero >= 100 && numero <= 200){
numeroTemp = numero/100;
numeroRomano = centenas[numeroTemp-1];
numeroTemp = ((int)numero/10)%10;
if (numeroTemp > 0) {
numeroRomano += decenas[numeroTemp-1];
}
numeroTemp = numero%10;
if (numeroTemp > 0) {
numeroRomano += unidades[numeroTemp-1];
}
}
System.out.print(numeroRomano);
}
public int romanoNumero(String romanoA, String romanoB){
ResponderEliminarint multiplicador = 0,noArreglo = 0,posision = 0;// donde arreglo es el identificador de los arreglos unidades, decenas ycentenas
String numeros[] = new String[romanoA.length()-1];
for (int i = 0; i < numeros.length; i++) {
numeros[i] = romanoA.charAt(i)+"";
}
int l = romanoA.length()-1,sumaRomanoA = 0,sumaRomanoB = 0,d = 0;
while(l >= 0){
for (int i = 0; i < unidades.length; i++) {//busca
if (unidades[i].equals(romanoA.charAt(l)+"")) {
noArreglo = 0;
posision = i;
break;
}
if (decenas[i].equals(romanoA.charAt(l)+"")) {
noArreglo = 1;
posision = i;
break;
}
}
if (centenas[0].equals(romanoA.charAt(l)+"")) {
noArreglo = 2;
posision = 0;
}
if (noArreglo == 0) {
multiplicador = 1;
}else if(noArreglo == 1){
multiplicador = 10;
}else if(noArreglo == 2){
multiplicador = 100;
}
if (d > (posision+1)*multiplicador) {
sumaRomanoA -= (posision+1)*multiplicador;
}else{
sumaRomanoA += (posision+1)*multiplicador;
}
d = (posision+1)*multiplicador;
l--;
}
d = 0;
l = romanoB.length()-1;
while(l >= 0){
for (int i = 0; i < unidades.length; i++) {//busca
if (unidades[i].equals(romanoB.charAt(l)+"")) {
noArreglo = 0;
posision = i;
break;
}
if (decenas[i].equals(romanoB.charAt(l)+"")) {
noArreglo = 1;
posision = i;
break;
}
}
if (centenas[0].equals(romanoB.charAt(l)+"")) {
noArreglo = 2;
posision = 0;
}
if (noArreglo == 0) {
multiplicador = 1;
}else if(noArreglo == 1){
multiplicador = 10;
}else if(noArreglo == 2){
multiplicador = 100;
}
if (d > (posision+1)*multiplicador) {
sumaRomanoB -= (posision+1)*multiplicador;
}else{
sumaRomanoB += (posision+1)*multiplicador;
}
d = (posision+1)*multiplicador;
l--;
}
return sumaRomanoA+sumaRomanoB;
}
public static void main(String[] args){
NumerosRomanos a = new NumerosRomanos();
String numero1 = JOptionPane.showInputDialog("Ingrese un numero romano1");
String numero2 = JOptionPane.showInputDialog("Ingrese un numero romano2");
a.numeroARomano(a.romanoNumero(numero2, numero1));
}
}