Numero romano a arábigo en Java.

1, 2
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
¿Hay alguna manera de recorrer el string con el número romano sin usar iteraciones?

Porque es lo único que necesitas. El resto es bien sencillo. Cada letra tiene su equivalente numérico. Si el que tiene a la derecha es mayor, le pones signo negativo. Si el que hay a la derecha es igual o menor, signo positivo. Sumas... hasta que a la derecha ya no hay nada. Y fin.
¿Hola?¿Me se lee? xD Yo lo he hecho aquí arriba sin iteraciones ni bucles en python, supongo que se podrá adaptar a javaxD

Evidork escribió:Yo he hecho esta pedazo de basura en python, como verás soy un genio de la optimización [qmparto] pero funciona. Mete el numero en romano que quieras al principio en la variable romano ya que lo he hecho ahora con un editor online y no tiene entradas, lo he hecho comparando cadenas. Supongo que esto no te servirá ya que buscarás/te pediran un algoritmo asi optimizado y bonico, pero oye aquí lo tienes [jaja]

import string

romano = "MXCIX"
numero = 0

if romano[0] == "M":
    numero = numero + 1000

if string.find(romano,"CM",0,len(romano)) != -1:
    numero = numero+ 900
else:
    if string.find(romano,"DCCC",0,len(romano)) != -1:
        numero = numero + 800
    else:
        if string.find(romano,"DCC",0,len(romano)) != -1:
            numero = numero + 700
        else:
            if string.find(romano,"DC",0,len(romano)) != -1:
               numero = numero + 600
            else:
                if string.find(romano,"CD",0,len(romano)) != -1:
                   numero = numero + 400
                else:
                    if string.find(romano,"D",0,len(romano)) != -1:
                        numero = numero + 500
                    else:
                        if string.find(romano,"CCC",0,len(romano)) != -1:
                            numero = numero + 300
                        else:
                            if string.find(romano,"CC",0,len(romano)) != -1:
                               numero = numero + 200
                            else:
                                aux = string.find(romano,"C",0,len(romano))
                                if aux != -1 and romano[aux-1] != "X":
                                    numero = numero + 100

if string.find(romano,"XC",0,len(romano)) != -1:
    numero = numero+ 90
else:
    if string.find(romano,"LXXX",0,len(romano)) != -1:
        numero = numero + 80
    else:
        if string.find(romano,"LXX",0,len(romano)) != -1:
            numero = numero + 70
        else:
            if string.find(romano,"LX",0,len(romano)) != -1:
               numero = numero + 60
            else:
                if string.find(romano,"XL",0,len(romano)) != -1:
                   numero = numero + 40
                else:
                    if string.find(romano,"L",0,len(romano)) != -1:
                        numero = numero + 50
                    else:
                        if string.find(romano,"XXX",0,len(romano)) != -1:
                            numero = numero + 30
                        else:
                            if string.find(romano,"XX",0,len(romano)) != -1:
                               numero = numero + 20
                            else:
                                aux = string.find(romano,"X",0,len(romano))
                                if aux != -1 and romano[aux-1] != "I":
                                    numero = numero + 10


if string.find(romano,"IX",0,len(romano)) != -1:
    numero = numero+ 9
else:
    if string.find(romano,"VIII",0,len(romano)) != -1:
        numero = numero + 8
    else:
        if string.find(romano,"VII",0,len(romano)) != -1:
            numero = numero + 7
        else:
            if string.find(romano,"VI",0,len(romano)) != -1:
               numero = numero + 6
            else:
                if string.find(romano,"IV",0,len(romano)) != -1:
                   numero = numero + 4
                else:
                    if string.find(romano,"V",0,len(romano)) != -1:
                        numero = numero + 5
                    else:
                        if string.find(romano,"III",0,len(romano)) != -1:
                            numero = numero + 3
                        else:
                            if string.find(romano,"II",0,len(romano)) != -1:
                               numero = numero + 2
                            else:
                                if string.find(romano,"I",0,len(romano)) != -1:
                                   numero = numero + 1

print numero


Aquí lo he hecho yo y lo puedes compilar http://codepad.org/UUGr21s1/fork

EDIT: Por lo que he visto, no puedes hacerlo con bucles, entonces es como yo te he dicho
Evidork escribió:¿Hola?¿Me se lee? xD Yo lo he hecho aquí arriba sin iteraciones ni bucles en python, supongo que se podrá adaptar a javaxD

Evidork escribió:Yo he hecho esta pedazo de basura en python, como verás soy un genio de la optimización [qmparto] pero funciona. Mete el numero en romano que quieras al principio en la variable romano ya que lo he hecho ahora con un editor online y no tiene entradas, lo he hecho comparando cadenas. Supongo que esto no te servirá ya que buscarás/te pediran un algoritmo asi optimizado y bonico, pero oye aquí lo tienes [jaja]

import string

romano = "MXCIX"
numero = 0

if romano[0] == "M":
    numero = numero + 1000

if string.find(romano,"CM",0,len(romano)) != -1:
    numero = numero+ 900
else:
    if string.find(romano,"DCCC",0,len(romano)) != -1:
        numero = numero + 800
    else:
        if string.find(romano,"DCC",0,len(romano)) != -1:
            numero = numero + 700
        else:
            if string.find(romano,"DC",0,len(romano)) != -1:
               numero = numero + 600
            else:
                if string.find(romano,"CD",0,len(romano)) != -1:
                   numero = numero + 400
                else:
                    if string.find(romano,"D",0,len(romano)) != -1:
                        numero = numero + 500
                    else:
                        if string.find(romano,"CCC",0,len(romano)) != -1:
                            numero = numero + 300
                        else:
                            if string.find(romano,"CC",0,len(romano)) != -1:
                               numero = numero + 200
                            else:
                                aux = string.find(romano,"C",0,len(romano))
                                if aux != -1 and romano[aux-1] != "X":
                                    numero = numero + 100

if string.find(romano,"XC",0,len(romano)) != -1:
    numero = numero+ 90
else:
    if string.find(romano,"LXXX",0,len(romano)) != -1:
        numero = numero + 80
    else:
        if string.find(romano,"LXX",0,len(romano)) != -1:
            numero = numero + 70
        else:
            if string.find(romano,"LX",0,len(romano)) != -1:
               numero = numero + 60
            else:
                if string.find(romano,"XL",0,len(romano)) != -1:
                   numero = numero + 40
                else:
                    if string.find(romano,"L",0,len(romano)) != -1:
                        numero = numero + 50
                    else:
                        if string.find(romano,"XXX",0,len(romano)) != -1:
                            numero = numero + 30
                        else:
                            if string.find(romano,"XX",0,len(romano)) != -1:
                               numero = numero + 20
                            else:
                                aux = string.find(romano,"X",0,len(romano))
                                if aux != -1 and romano[aux-1] != "I":
                                    numero = numero + 10


if string.find(romano,"IX",0,len(romano)) != -1:
    numero = numero+ 9
else:
    if string.find(romano,"VIII",0,len(romano)) != -1:
        numero = numero + 8
    else:
        if string.find(romano,"VII",0,len(romano)) != -1:
            numero = numero + 7
        else:
            if string.find(romano,"VI",0,len(romano)) != -1:
               numero = numero + 6
            else:
                if string.find(romano,"IV",0,len(romano)) != -1:
                   numero = numero + 4
                else:
                    if string.find(romano,"V",0,len(romano)) != -1:
                        numero = numero + 5
                    else:
                        if string.find(romano,"III",0,len(romano)) != -1:
                            numero = numero + 3
                        else:
                            if string.find(romano,"II",0,len(romano)) != -1:
                               numero = numero + 2
                            else:
                                if string.find(romano,"I",0,len(romano)) != -1:
                                   numero = numero + 1

print numero


Aquí lo he hecho yo y lo puedes compilar http://codepad.org/UUGr21s1/fork

EDIT: Por lo que he visto, no puedes hacerlo con bucles, entonces es como yo te he dicho

Ahora en cuanto pueda buscaré el equivalente a find y len en java y lo comprobaré, que no tengo ni idea de los metodos de python xD
Grender escribió:Ahora en cuanto pueda buscaré el equivalente a find y len en java y lo comprobaré, que no tengo ni idea de los metodos de python xD


Es el método indexof(subcadena), que te devuelve la posicion de la subcadena en la cadena y length().
import java.util.Scanner; 

public class RomanoAArabigo {
   
      public static int NumRoman(String numeroRomano){
         int numero = 0, aux=0;
         
         



if (numeroRomano.charAt(0) == 'M')
    numero = numero + 1000;

if (numeroRomano.indexOf("CM") != -1){
    numero = numero+ 900;
}else
    if (numeroRomano.indexOf("DCCC") != -1){
        numero = numero + 800;
    }else
        if (numeroRomano.indexOf("DCC") != -1){
            numero = numero + 700;
        }else
            if (numeroRomano.indexOf("DC") != -1){
               numero = numero + 600;
            }else
                if (numeroRomano.indexOf("CD") != -1){
                   numero = numero + 400;
                }else
                    if (numeroRomano.indexOf("D") != -1){
                        numero = numero + 500;
                    }else
                        if (numeroRomano.indexOf("CCC") != -1){
                            numero = numero + 300;
                        }else
                            if (numeroRomano.indexOf("CC") != -1){
                               numero = numero + 200;
                            }else
                                aux = numeroRomano.indexOf("C");
                                if (aux != -1 && (numeroRomano.indexOf("I", aux-1)) == -1){
                                    numero = numero + 100;
                           }

if (numeroRomano.indexOf("XC") != -1){
    numero = numero+ 90;
}else
    if (numeroRomano.indexOf("LXXX") != -1){
        numero = numero + 80;
    }else
        if (numeroRomano.indexOf("LXX") != -1){
            numero = numero + 70;
        }else
            if (numeroRomano.indexOf("LX") != -1){
               numero = numero + 60;
            }else
                if (numeroRomano.indexOf("XL") != -1){
                   numero = numero + 40;
                }else
                    if (numeroRomano.indexOf("L") != -1){
                        numero = numero + 50;
                    }else
                        if (numeroRomano.indexOf("XXX") != -1){
                            numero = numero + 30;
                        }else
                            if (numeroRomano.indexOf("XX") != -1){
                               numero = numero + 20;
                            }else
                                aux = numeroRomano.indexOf("X");
                                if (aux != -1 && (numeroRomano.indexOf("I", aux-1)) == -1){
                                    numero = numero + 10;
                           }


if (numeroRomano.indexOf("IX") != -1){
    numero = numero+ 9;
}else
    if (numeroRomano.indexOf("VIII") != -1){
        numero = numero + 8;
    }else
        if (numeroRomano.indexOf("VII") != -1){
            numero = numero + 7;
        }else
            if (numeroRomano.indexOf("VI") != -1){
               numero = numero + 6;
            }else
                if (numeroRomano.indexOf("IV") != -1){
                   numero = numero + 4;
                }else
                    if (numeroRomano.indexOf("V") != -1){
                        numero = numero + 5;
                    }else
                        if (numeroRomano.indexOf("III") != -1){
                            numero = numero + 3;
                        }else
                            if (numeroRomano.indexOf("II") != -1){
                               numero = numero + 2;
                            }else
                                if (numeroRomano.indexOf("I") != -1){
                                   numero = numero + 1;
                           }
   return numero;
}
    public static void main(String args[]) {
      String numeroRomano="";
      Scanner teclado = new Scanner (System.in);
      
      System.out.print("Introduzca un número romano en mayusculas: ");
      numeroRomano = teclado.nextLine();
      
      System.out.println(NumRoman(numeroRomano));
         
   }
}


Vale funciona correctamente pero en algunos casos como CC o MCCC me devuelve 300 y 1400 respectivamente, es decir, 100 mas... ¿Alguna sugerencia?

EDITO:
EN PRINCIPIO ME FUNCIONA ASI

import java.util.Scanner; 

public class RomanoAArabigo {
   
      public static int NumRoman(String numeroRomano){
         int numero = 0;
         
         



if (numeroRomano.charAt(0) == 'M')
    numero = numero + 1000;

if (numeroRomano.indexOf("CM") != -1){
    numero = numero+ 900;
}else
    if (numeroRomano.indexOf("DCCC") != -1){
        numero = numero + 800;
    }else
        if (numeroRomano.indexOf("DCC") != -1){
            numero = numero + 700;
        }else
            if (numeroRomano.indexOf("DC") != -1){
               numero = numero + 600;
            }else
                if (numeroRomano.indexOf("CD") != -1){
                   numero = numero + 400;
                }else
                    if (numeroRomano.indexOf("D") != -1){
                        numero = numero + 500;
                    }else
                        if (numeroRomano.indexOf("CCC") != -1){
                            numero = numero + 300;
                        }else
                            if (numeroRomano.indexOf("CC") != -1){
                               numero = numero + 200;
                            }else
                                if (numeroRomano.indexOf("C") != -1){
                                    numero = numero + 100;
                              if (numeroRomano.indexOf("IC") != -1){
                                 numero = numero - 100;
                              }
                           }

if (numeroRomano.indexOf("XC") != -1){
    numero = numero+ 90;
}else
    if (numeroRomano.indexOf("LXXX") != -1){
        numero = numero + 80;
    }else
        if (numeroRomano.indexOf("LXX") != -1){
            numero = numero + 70;
        }else
            if (numeroRomano.indexOf("LX") != -1){
               numero = numero + 60;
            }else
                if (numeroRomano.indexOf("XL") != -1){
                   numero = numero + 40;
                }else
                    if (numeroRomano.indexOf("L") != -1){
                        numero = numero + 50;
                    }else
                        if (numeroRomano.indexOf("XXX") != -1){
                            numero = numero + 30;
                        }else
                            if (numeroRomano.indexOf("XX") != -1){
                               numero = numero + 20;
                            }else
                                if (numeroRomano.indexOf("X") != -1){
                                    numero = numero + 10;
                              if (numeroRomano.indexOf("IX") != -1){
                                 numero = numero - 10;
                              }
                           }


if (numeroRomano.indexOf("IX") != -1){
    numero = numero+ 9;
}else
    if (numeroRomano.indexOf("VIII") != -1){
        numero = numero + 8;
    }else
        if (numeroRomano.indexOf("VII") != -1){
            numero = numero + 7;
        }else
            if (numeroRomano.indexOf("VI") != -1){
               numero = numero + 6;
            }else
                if (numeroRomano.indexOf("IV") != -1){
                   numero = numero + 4;
                }else
                    if (numeroRomano.indexOf("V") != -1){
                        numero = numero + 5;
                    }else
                        if (numeroRomano.indexOf("III") != -1){
                            numero = numero + 3;
                        }else
                            if (numeroRomano.indexOf("II") != -1){
                               numero = numero + 2;
                            }else
                                if (numeroRomano.indexOf("I") != -1){
                                   numero = numero + 1;
                           }
   return numero;
}
    public static void main(String args[]) {
      String numeroRomano="";
      Scanner teclado = new Scanner (System.in);
      
      System.out.print("Introduzca un número romano en mayusculas: ");
      numeroRomano = teclado.nextLine();
      
      System.out.println(NumRoman(numeroRomano));
         
   }
}


Estoy probando varios casos, necesito alguien que mire a ver si tiene algun fallo, yo no los encuentro, gracias!
En los últimos casos te faltan los paréntesis en el else, ya que son dos operaciones :p

Quedaría así

import java.util.Scanner; 

public class RomanoAArabigo {
   
      public static int NumRoman(String numeroRomano){
         int numero = 0, aux=0;
         
         



if (numeroRomano.charAt(0) == 'M')
    numero = numero + 1000;

if (numeroRomano.indexOf("CM") != -1){
    numero = numero+ 900;
}else
    if (numeroRomano.indexOf("DCCC") != -1){
        numero = numero + 800;
    }else
        if (numeroRomano.indexOf("DCC") != -1){
            numero = numero + 700;
        }else
            if (numeroRomano.indexOf("DC") != -1){
               numero = numero + 600;
            }else
                if (numeroRomano.indexOf("CD") != -1){
                   numero = numero + 400;
                }else
                    if (numeroRomano.indexOf("D") != -1){
                        numero = numero + 500;
                    }else
                        if (numeroRomano.indexOf("CCC") != -1){
                            numero = numero + 300;
                        }else
                            if (numeroRomano.indexOf("CC") != -1){
                               numero = numero + 200;
                            }else{
                                aux = numeroRomano.indexOf("C");
                                if (aux != -1 && (numeroRomano.indexOf("X", aux-1)) == -1){
                                    numero = numero + 100;
                           }}

if (numeroRomano.indexOf("XC") != -1){
    numero = numero+ 90;
}else
    if (numeroRomano.indexOf("LXXX") != -1){
        numero = numero + 80;
    }else
        if (numeroRomano.indexOf("LXX") != -1){
            numero = numero + 70;
        }else
            if (numeroRomano.indexOf("LX") != -1){
               numero = numero + 60;
            }else
                if (numeroRomano.indexOf("XL") != -1){
                   numero = numero + 40;
                }else
                    if (numeroRomano.indexOf("L") != -1){
                        numero = numero + 50;
                    }else
                        if (numeroRomano.indexOf("XXX") != -1){
                            numero = numero + 30;
                        }else
                            if (numeroRomano.indexOf("XX") != -1){
                               numero = numero + 20;
                            }else{
                                aux = numeroRomano.indexOf("X");
                                if (aux != -1 && (numeroRomano.indexOf("I", aux-1)) == -1){
                                    numero = numero + 10;
                           }}


if (numeroRomano.indexOf("IX") != -1){
    numero = numero+ 9;
}else
    if (numeroRomano.indexOf("VIII") != -1){
        numero = numero + 8;
    }else
        if (numeroRomano.indexOf("VII") != -1){
            numero = numero + 7;
        }else
            if (numeroRomano.indexOf("VI") != -1){
               numero = numero + 6;
            }else
                if (numeroRomano.indexOf("IV") != -1){
                   numero = numero + 4;
                }else
                    if (numeroRomano.indexOf("V") != -1){
                        numero = numero + 5;
                    }else
                        if (numeroRomano.indexOf("III") != -1){
                            numero = numero + 3;
                        }else
                            if (numeroRomano.indexOf("II") != -1){
                               numero = numero + 2;
                            }else{
                                if (numeroRomano.indexOf("I") != -1){
                                   numero = numero + 1;
                                }
                             }
                                   
   return numero;
}
    public static void main(String args[]) {
      String numeroRomano="";
      Scanner teclado = new Scanner (System.in);
     
      System.out.print("Introduzca un número romano en mayusculas: ");
      numeroRomano = teclado.nextLine();
     
      System.out.println(NumRoman(numeroRomano));
         
   }
}


EDITO: Leyendo el código has tenido otro error
else{
                                aux = numeroRomano.indexOf("C");
                                if (aux != -1 && (numeroRomano.indexOf("I", aux-1)) == -1){
                                    numero = numero + 100;
                           }}


Aquí sería "X" no "I", por lo que quedaría esa parte

else{
                                aux = numeroRomano.indexOf("C");
                                if (aux != -1 && (numeroRomano.indexOf("X", aux-1)) == -1){
                                    numero = numero + 100;
                           }}
Vale en el anterior programa que he subido he encontrado un error con "DIC", me devuelve 501,
Grender escribió:Vale en el anterior programa que he subido he encontrado un error con "DIC", me devuelve 501,


Corrige lo que te he dicho de los else's, que te faltan paréntesis, y lo que te he indicado arriba. Por cierto, DIC no existe, será en todo caso DIX.
Evidork escribió:
Grender escribió:Vale en el anterior programa que he subido he encontrado un error con "DIC", me devuelve 501,


Corrige lo que te he dicho de los else's, que te faltan paréntesis, y lo que te he indicado arriba. Por cierto, DIC no existe, será en todo caso DIX.

Cierto gracias xD

EDITO:

En principio creo que ya he contemplado todos los casos y funciona correctamente, alguien tiene algo para mejorarlo, o encuentra algún fallo?

import java.util.Scanner; 

public class RomanoAArabigo {
   
      public static int NumRoman(String numeroRomano){
         int numero = 0;
                  

if (numeroRomano.charAt(0) == 'M')
    numero = numero + 1000;
   
   //indexOf, te devuelve la posición en la que se encuentra la cadena de texto que has introducido a buscar dentro de un string.
   //charAt te devuelve el char que está en la posición indicada (primera letra = 0, etc)

if (numeroRomano.indexOf("CM") != -1){
    numero = numero+ 900;
}else if (numeroRomano.indexOf("DCCC") != -1){
        numero = numero + 800;
    }else if (numeroRomano.indexOf("DCC") != -1){
            numero = numero + 700;
        }else if (numeroRomano.indexOf("DC") != -1){
               numero = numero + 600;
            }else if (numeroRomano.indexOf("CD") != -1){
                   numero = numero + 400;
                }else if (numeroRomano.indexOf("D") != -1){
                        numero = numero + 500;
                    }else if (numeroRomano.indexOf("CCC") != -1){
                            numero = numero + 300;
                        }else if (numeroRomano.indexOf("CC") != -1){
                               numero = numero + 200;
                            }else if (numeroRomano.indexOf("C") != -1 && numeroRomano.charAt(0) != 'X' ){ //esto lo hago por que si por ejemplo la primera es X, si no lo restringiera entraria en los dos y seria 100+90
                                    numero = numero + 100;                                       //al estar restringido, solo entraria si el primer char no es una X, en caso de que lo sea, pasa al de abajo.
                           }

if (numeroRomano.indexOf("XC") != -1){
    numero = numero+ 90;
}else if (numeroRomano.indexOf("LXXX") != -1){
        numero = numero + 80;
    }else if (numeroRomano.indexOf("LXX") != -1){
            numero = numero + 70;
        }else if (numeroRomano.indexOf("LX") != -1){
               numero = numero + 60;
            }else if (numeroRomano.indexOf("XL") != -1){
                   numero = numero + 40;
                }else if (numeroRomano.indexOf("L") != -1){
                        numero = numero + 50;
                    }else if (numeroRomano.indexOf("XXX") != -1){
                            numero = numero + 30;
                        }else if (numeroRomano.indexOf("XX") != -1){
                               numero = numero + 20;
                            }else if (numeroRomano.indexOf("X") != -1 && numeroRomano.charAt(0) != 'I'){ //esto lo hago por que si por ejemplo la primera es I, si no lo restringiera entraria en los dos y seria 10+9
                                    numero = numero + 10;                                       //al estar restringido, solo entraria si el primer char no es un I, en caso de que lo sea, pasa al de abajo.
                           }


if (numeroRomano.indexOf("IX") != -1){
    numero = numero + 9;
}else if (numeroRomano.indexOf("VIII") != -1){
        numero = numero + 8;
    }else if (numeroRomano.indexOf("VII") != -1){
            numero = numero + 7;
        }else if (numeroRomano.indexOf("VI") != -1){
               numero = numero + 6;
            }else if (numeroRomano.indexOf("IV") != -1){
                   numero = numero + 4;
                }else if (numeroRomano.indexOf("V") != -1){
                        numero = numero + 5;
                    }else if (numeroRomano.indexOf("III") != -1){
                            numero = numero + 3;
                        }else if (numeroRomano.indexOf("II") != -1){
                               numero = numero + 2;
                            }else if (numeroRomano.indexOf("I") != -1){
                                   numero = numero + 1;
                           }
   return numero;
}
    public static void main(String args[]) {
      String numeroRomano="";
      Scanner teclado = new Scanner (System.in);
      
      System.out.print("Introduzca un numero romano en mayusculas: ");
      numeroRomano = teclado.nextLine();
      
      System.out.println("\n["+NumRoman(numeroRomano)+"]");
         
   }
}
Grender escribió:
Abokys escribió:Podrías hacer lo siguiente: memoriza el número romano como String, luego haces un recorrido(con un for) del String de manera que compruebe cada posición del String, si encuentra un "I" sume a un contador +1, si es una "X", +10; ¿Qué pasa con los números 4, 9, etc...)? pues con otro contador miras si el número anterior es un "I" y le restas uno. No sé si me he explicado bien.... hace un tiempo hice un programa similar. El código seria algo así:

int contador=o;

for(int i=0;StringRomano.length();i++){ //Este recorrido es el principal
for(int j=1;StringRomano.lenght();j++){//este recorrido empieza en una posición mas y sirve para comprobar el número posterior, por si tiene que restar
if StringRomano.charAt(i)=='I'{
contador++;
}else if(StringRomano.charAt(i)=='I' && StringRomano.charAt(j)=='V'){
contador=contador+4;
(Y ya solo es ir jugando con las posibilidades, de esta manera se simplifica mas el código)
.........

Algo así, perdona que no pueda darte una solución mas pulida, estoy liado con otro trabajo y no tengo mucho tiempo; espero que entiendas el concepto y si puedo mañana te pulo un poco mas la solución, pero la idea es jugar con dos bucles for, de manera que compruebes la posición que quieres avaluar y la siguiente (para comprobar si se trata de un 4,9, etc...) y luego dependiendo del resultado sumas un valor u otro al contador (que será el resultado obtenido).

El problema es que no nos dejan usar los bucles, son asi de cabrones para que nos comamos la cabeza xD


Es cierto, no lo había leído. Pues vaya putada monumental, nunca entenderé esta manía de restringir el uso de ciertos recursos, ¡como si en la vida laboral no pudieses usarlos! por cierto yo también estoy estudiando DAM [risita] , seguiré el hilo y si se me ocurre algo posteo, así yo también practico.
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
(mensaje borrado)
50 respuestas
1, 2