ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Помогите пожалуйста перевести на паскаль
  #1  
Старый 17.12.2009, 16:05
marcos
Участник форума
Регистрация: 08.11.2009
Сообщений: 114
Провел на форуме:
201148

Репутация: -4
По умолчанию Помогите пожалуйста перевести на паскаль

Всем привет. Нашел решение к задаче Где waldorf? но оно вроде на яве
помогите перевести. Заранее спасибо! Вот код
Код:
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.Scanner; 


public class Main { 

private static int numLetrasPosibles = 28; 
private static char[][] tabla; 
private static int m = 0; 
private static int n = 0; 
private static String[] palabras; 
private static ArrayList<Integer>[] posicionesPorLetra = new ArrayList[numLetrasPosibles]; 

/** 
* Método inicial. 
* 
* @param args 
*            argumentos. 
* @throws IOException 
*             si falla. 
*/ 
public static void main(String[] args) throws IOException { 

// Scanner para la entrada. 
Scanner in = new Scanner(new BufferedReader(new InputStreamReader( 
System.in))); 
int numCasos = leerNum(in); 

// Para cada caso 
for (int i = 0; i < numCasos; i++) { 
// linea en blanco 
in.nextLine().split(" "); 
// leo my x. 
int[] tamanyo = leer2Num(in); 
m = tamanyo[0]; 
n = tamanyo[1]; 
// inicializar la tabla 
tabla = new char[m][n]; 
// leo la tabla. 
leerTabla(); 
// inicializar array 
inicializarPoscionesPorLetra(); 
// Inicializo las posiciones en que aparece cada caracter. 
inicializarCuentas(); 

// leer num palabras 
int numPalabras = leerNum(in); 

// inicializo array de palabras. 
palabras = new String[numPalabras]; 

// leer las palabras 
for (int k = 0; k < numPalabras; k++) { 
String palabraKesima = readLine(); 
palabraKesima = palabraKesima.toLowerCase(); 
palabras[k] = palabraKesima; 
} 

// buscar 
// para cada palabra 

for (int k = 0; k < numPalabras; k++) { 
char[] palabra = palabras[k].toCharArray(); 
// para cada posicion que está laprimera letra 
Iterator<Integer> it = posicionesPorLetra[(int) palabra[0] - 97] 
.iterator(); 
// sobraría xk siempre está la palabra 
// tener k buskar.. 
while (it.hasNext()) { 
int fila = ((Integer) (it.next())).intValue(); 
int columna = ((Integer) (it.next())).intValue(); 
int[] valido = null; 
if (palabra.length > 1) { 
valido = buscar(palabra, fila, columna); 
}else{ 
valido[0]=fila; 
valido[1]=columna; 
} 
// si valido entonces salir 
if (valido[0] != -1 && valido[1] != -1) { 
valido[0]++; 
valido[1]++; 
System.out.println(valido[0] + " " + valido[1]); 
break; 
} 

} 
} 
if (numCasos > 1) { 
System.out.println(""); 
} 

} 

} 

private static int[] buscar(char[] palabra, int fila, int columna) { 
int[] num = { -1, -1 }; 

int i, j = 0; 
i = fila; 
j = columna; 
boolean encontrado = true; 

// buscar hacia la derecha 
encontrado = true; 
j = columna; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (j + 1 > n - 1) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[i][++j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 

// buscar diagonal bajando hacia derecha 
encontrado = true; 
j = columna; 
i = fila; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (i + 1 > m - 1 || j + 1 > n - 1) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[++i][++j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 

// buscar hacia abajo 
encontrado = true; 
j = columna; 
i = fila; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (i + 1 > m - 1) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[++i][j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 

// buscar diagonal bajando hacia izq 
encontrado = true; 
j = columna; 
i = fila; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (i + 1 > m - 1 || j - 1 < 0) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[++i][--j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 
// buscar hacia la izq 
encontrado = true; 
i = fila; 
j = columna; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (j - 1 < 0) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[i][--j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 
// buscar diagonal subiendo hacia izq 
encontrado = true; 
j = columna; 
i = fila; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (i - 1 < 0 || j - 1 < 0) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[--i][--j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 
// buscar hacia arriba 
encontrado = true; 
j = columna; 
i = fila; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (i - 1 < 0) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[--i][j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 
// buscar diagonal subiendo hacia derecha 
encontrado = true; 
j = columna; 
i = fila; 
for (int k = 1; k < palabra.length; k++) { 
// Para que no se salga buscando.. 
if (i - 1 < 0 || j + 1 > n - 1) { 
encontrado = false; 
break; 
} 
if (palabra[k] != tabla[--i][++j]) { 
encontrado = false; 
break; 
} 
} 
if (true == encontrado) { 
num[0] = fila; 
num[1] = columna; 
return num; 
} 

return num; 

} 

private static String readLine() { 
StringBuffer sb = new StringBuffer(""); 
int b = 0; 
while (b != '\n' && b >= 0) { 
try { 
b = System.in.read(); 
} catch (IOException e) { 
return null; 
} 
if (b != '\r' && b != '\n' && b >= 0) 
sb.append((char) b); 
} 
if (sb.length() == 0 && b < 0) 
return null; 
return sb.toString().trim(); 
} 

/** 
* Inicializa posicionesPorLetra. 
* 
* @param m 
*            filas de la tabla. 
* @param n 
*            columnas de la tabla. 
*/ 
private static void inicializarCuentas() { 

for (int i = 0; i < m; i++) { 
for (int j = 0; j < n; j++) { 

posicionesPorLetra[(int) tabla[i][j] - 97].add(i); 
posicionesPorLetra[(int) tabla[i][j] - 97].add(j); 
} 
} 

} 

/** 
* Lee de fila en fila la tabla. 
* 
* @param m 
*            filas. 
*/ 
private static void leerTabla() { 

// leer la matriz 
for (int k = 0; k < m; k++) { 
String filaKesima = readLine(); 
filaKesima = filaKesima.toLowerCase(); 
// guardarlo en un array... 
tabla[k] = filaKesima.toCharArray(); 

} 
} 

/** 
* Inicializa el array de posicionesPorLetra. 
*/ 
private static void inicializarPoscionesPorLetra() { 
for (int k = 0; k < numLetrasPosibles; k++) { 
posicionesPorLetra[k] = new ArrayList<Integer>(); 
} 
} 

private static int leerNum(Scanner in) { 
String[] numeros = in.nextLine().split(" "); 
int index = 0; 
int num = 0; 
for (; index < numeros.length; index++) { 
try { 
num = Integer.parseInt(numeros[index]); 
break; 
} catch (final NumberFormatException e) { 
// Si falla. 
} 

} 
return num; 
} 

private static int[] leer2Num(Scanner in) { 
int[] num = { 0, 0 }; 
String[] numeros; 
// leo myn 
numeros = in.nextLine().split(" "); 
int index = 0; 
int m = 0; 
for (; index < numeros.length; index++) { 
try { 
m = Integer.parseInt(numeros[index]); 
break; 
} catch (final NumberFormatException e) { 
// Si falla. 
} 

} 
index++; 
int n = 0; 
for (; index < numeros.length; index++) { 
try { 
n = Integer.parseInt(numeros[index]); 
break; 
} catch (final NumberFormatException e) { 
// Si falla. 
} 
} 
num[0] = m; 
num[1] = n; 
return num; 

} 
}
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста. RosomaXa PHP, PERL, MySQL, JavaScript 2 19.09.2009 16:03
Помогите пожалуйста RosomaXa Болталка 2 19.09.2009 15:39
помогите пожалуйста diepower Проверка на уязвимости 15 25.03.2009 00:03
Помогите пожалуйста... toross С/С++, C#, Delphi, .NET, Asm 12 13.03.2009 16:19
На сайте есть дырки. Помогите пожалуйста мне в дальнейшем Cnekmp Уязвимости 12 20.02.2006 16:58



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ