miércoles, 6 de abril de 2011

Siguiente Palindromo

El palíndromo Siguiente

Un entero positivo se llama un palíndromo si su representación en el sistema decimal es el mismo cuando se lee de izquierda a derecha y de derecha a izquierda. Para un entero positivo k dado de no más de 1000000 dígitos, escribir el valor de los más pequeños palíndromo más grande que K a la salida. Los números son siempre aparecen sin ceros a la izquierda.

De entrada

La primera línea contiene t entero, el número de casos de prueba. Enteros de K se dan en las líneas t siguiente.
Salida

Para cada salida de K, la más pequeña palíndromo más grande que K.
Ejemplo

Entrada:
2
808
2133
Salida:
818
2222

Como nos enseñaron en INF-111
import java.util.Scanner;
class palindromo {
 public static void main(String[] args) {
  Scanner sc2 = new Scanner(System.in);
  int lim = sc2.nextInt();
  for (int i = 1; i <= lim; i++) {
   int print = Integer.parseInt(SigPalin(Integer.toString(sc2.nextInt())));
   System.out.print(print + "\n");
  }
 }

 // Integer.toString() combierte un entero a cadena
 // Integer.parseInt() combierte una cadena a entero
 public static String SigPalin(String cad) {
  boolean j = true;
  String cas = cad;
  int aux = Integer.parseInt(cas);
  String invert = "";
  while (j) {
   aux++;
   cas = Integer.toString(aux);
   invert = "";
   cas = cas.trim();
   for (int i = cas.length() - 1; i >= 0; i--) {
    invert = invert + cas.charAt(i);
   }
   if (invert.equals(cas)) {
    j = false;
   }
  }
  return invert;
 }
}
COMO NOS ESTÁN ENSEÑANDO EN INF-121
import java.util.Scanner;

public class Palindrome {
 private int lim;
 private String vec[] = new String[20];

 public Palindrome() {
  lim = 2;
  vec[1] = "808";
  vec[2] = "2133";
 }

 public void leer() {
  Scanner sc = new Scanner(System.in);
  Scanner sc2 = new Scanner(System.in);
  System.out.println("Cuantos ciclos tendra ?");
  lim = sc.nextInt();
  for (int i = 1; i <= lim; i++) {
   System.out.println("Numero " + i + " :");
   String lec = sc2.nextLine();
   vec[i] = SigPalin(lec);
  }
 }

 public void mostrar() {
  System.out.println("Num de ciclos " + lim);

  for (int i = 1; i <= lim; i++) {
   System.out.println("El siguiente Palindromo es :");
   System.out.println(vec[i]);
  }
 }

 public static String SigPalin(String cad) {
  boolean j = true;
  String cas = cad;
  int aux = Integer.parseInt(cas);
  String invert = "";
  while (j) {
   aux++;
   cas = Integer.toString(aux);
   invert = "";
   cas = cas.trim();
   for (int i = cas.length() - 1; i >= 0; i--) {
    invert = invert + cas.charAt(i);
   }
   if (invert.equals(cas)) {
    j = false;
   }
  }
  return invert;
 }
}

MAIN O PRINCIPAL
public class Main {

 public static void main(String[] args) {
  Palindrome a = new Palindrome();
  Palindrome b = new Palindrome();

  System.out.println("CONSTRUCTOR POR DEFECTO");
  b.mostrar();
  System.out.println("---------->");
  System.out.println();
  a.leer();
  System.out.println();
  a.mostrar();

 }

}

No hay comentarios:

Publicar un comentario