|
41
|
Foros Generales / Dudas Generales / gramatica libre de contexto
|
en: 29 Septiembre 2014, 05:50 am
|
Saludos
Tengo que crear una gramatica libre de contexto que me genere lo que serían las librerias del lenguaje de programacion Ada. Por ejemplo:
With Ada.Comand,Ada.Text_IO;
o tambien podria ser:
With Ada.Characters.Handling;
y la gramatica que tengo va más o menos así:
<Libreria>:= With <P>; <P>:= Ada.identificador<paquetes> <paquetes>:=.identificador<paquetes> | (null)
el problema es que esta gramatica me genera with ada.X.y.Z; pero no me genera el primer ejemplo: with ada.comand,ada.Text_io;
y no se como agregarle esto, tambien tengo la restriccion de que si tengo una gramatica P, sus reglas no pueden iniciar con el mismo no terminal
gracias
|
|
|
42
|
Programación / Programación C/C++ / algoritmo de bresenham
|
en: 27 Septiembre 2014, 00:04 am
|
Saludos Tengo el siguiente codigo en C, que me tiene que dibujar algunas lineas mediante el algoritmo de bresenham. Para esto estoy utilizando GLUT, la cual ya le instale correctamente. El problema es que dentro del main donde tengo la llamada a funcion de init() y glutDisplayFunc(estrella); me aparece init y estrella not declared in this scope, por qué será esto?? #include <windows.h> #include <GL/glut.h> int main(int argc, char** argv) { glutInit(&argc, argv);//inicialización de GLUT glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//único búfer de refresco en la ventana de visualización y el modo de color RGB glutInitWindowPosition(50, 100); // posición inicial, esq sup izq glutInitWindowSize(400, 300); //alto y ancho de la ventana en pixeles glutCreateWindow("Primer Practica");// creación de ventana de visualización y título de la misma init(); glutDisplayFunc(estrella); // muestra la línea en la ventana de visualización glutMainLoop(); // bucle infinitoque comprueba entrada de disp return EXIT_SUCCESS; } void bresenham(int x0,int y0,int x1,int y1) { int dx,dy,p,x,y,s1,s2,e,i,intercambio; x = x1; y = y1; s1 = signo(x1-x0); s2 = signo(y1-y0); if(y > x) { p = dx; dx = dy; dy = p; } else intercambio = 1; e=2*dy-dx; for(i = 0;i <= dx;i++) { if(e >= 0) { if(intercambio == 1) x = x+s1; else y = y+s2; } e = e-(2*dx); } if(intercambio == 1) y = y+s2; else x = x+s1; e = e+2*dy; } int signo(int num) { int resultado; if(num < 0) resultado = -1; else if(num > 0) resultado = 1; else if(num == 0) resultado = 0; return resultado; } void init(void) { glClearColor(1.0, 1.0, 1.0, 0.0); // colorde la ventana, blanco glMatrixMode(GL_PROJECTION);// proyección de la imagen en la ventana devisualización gluOrtho2D(0.0, 400.0, 0.0, 300.0);// proyección en 2D } void estrella(void) { bresenham(0,0,0,130);/* bresenham(); bresenham(); bresenham();*/ }
de antemano gracias
|
|
|
43
|
Foros Generales / Dudas Generales / adjuntar archivos
|
en: 18 Septiembre 2014, 01:31 am
|
Saludos
Tengo una duda, no puedo adjuntar archivos desde mi cuenta de correo cuando estoy utilizando chrome, pero si estoy en explorer si se pueden adjuntar los archivos. Alguna idea de cuál puede ser el problema y cómo podría resolverlo???
de antemano gracias
|
|
|
44
|
Programación / Java / imprime basura
|
en: 15 Septiembre 2014, 01:27 am
|
Saludos Tengo el siguiente codigo, que utiliza la clase RandomAccessFile para abrir un archivo e imprimir caracter por caracter conforme lo va leyendo: public class AutomataFinito { public static void main (String[] args ) { char car; Scanner teclado = new Scanner (System. in); System. out. print("Dame nombre del archivo: "); nombreArchivo = teclado.nextLine(); teclado.close(); try { while((car = af.readChar()) != -1) { } af.close(); } { System. out. println("No se pudo abrir archivo"); } } }
El problema es que me imprime basura y despues imprime el mensaje de no se pudo abrir archivo de antemano gracias
|
|
|
45
|
Foros Generales / Dudas Generales / gramatica sin recursión a la izquierda
|
en: 5 Septiembre 2014, 03:52 am
|
Saludos
Estoy estudiando la siguiente gramática:
E:= E+E E:= i
y encontre un problema, esta gramatica tiene recursión a izquierdas, o sea que en alguna de sus reglas inicia con un no terminal, en vez de con un terminal. Le tengo que quitar la recursión a izquierdas, pero no estoy seguro de como
yo la habia hecho asi:
E := iE' E':= ε | +E
pero me dicen que la manera correcta es
E: = iE' E' := ε | +iE'
pero no entiendo por qué?? cual es la diferencia entre las dos
de antemano gracias
|
|
|
46
|
Foros Generales / Dudas Generales / activar occur check en prolog
|
en: 30 Agosto 2014, 04:12 am
|
Saludos
He estado buscando en diferentes partes información acerca de que es el la verificacion de ocurrencias en prolog y como activarla en mi version de prolog, que es la 6.6.1, solamente encontre cosas como la definicion y asi, pero no encontre nada de como realizar la activacion.
de antemano gracias
|
|
|
47
|
Programación / Java / crear funcion para expresion regular
|
en: 30 Agosto 2014, 00:39 am
|
Saludos Tengo las siguientes expresiones regulares: M -> (M) M -> n estas dos me pueden generar cadenas como: ((((n)))) ó n Tengo que diseñar una clase que se llame class Analizador Sintactico, para poder generar cualquier cadena que estas dos expresiones me permitan, ahorita ya hice una especie de pseudocodigo y creo que esta bien. Pero el problema es que yo sé que el analizador sintactico se asegura de que se tenga el mismo número de parentesis de abertura que de cierre, pero no estoy seguro de como lo hace class Sintactico{ Lexico lexico = new Lexico(); int parentesis = 0; void M(){ if(lexicoSimbolo == 'n') { if(parentesis != 0) checarParentesis(); else comprobar(); } else if(lexicoSimbolo == '(') { parentesis++; M(); } else error(); } void checarParentesis(){ int i = 1; while(i <= parentesis) { if(lexico.siguienteSimbolo() == ')' ) i++; else error(); } } }
que modificaciones le harian a este pseudocodigo para que sea más eficiente??? de antemano gracias
|
|
|
48
|
Foros Generales / Dudas Generales / gramatica bnf y expresiones regulares
|
en: 22 Agosto 2014, 03:09 am
|
Saludos
Estoy repasando algunos conceptos de Automatas, tengo que escribir la expresion regular que le corresponderia a un tipo entero, de cualquier lenguaje, en este caso C.
La duda que tengo es sobre si una gramatica tipo BNF es lo mismo que una expresion regular??, ambas son muy parecidas pero no se si sean lo mismo
BNF
<entero>:=<signo><decimal>|<decimal> <decimal>:= <decimal><digito>|<digito> <digito>:=0|1|2|3|4|5|6|7|8|9 <signo>:=+|-
expresion regular
entero:=[+/-][0...9]+|[0...9]+
gracias
|
|
|
49
|
Programación / Java / algoritmo de recuperacion de cadenas
|
en: 5 Agosto 2014, 22:16 pm
|
Saludos Tengo que diseñar un algoritmo para ir recuperando unas cadenas de caracteres de un archivo pedido por el usuario. Un ejemplo del archivo sería: char nombreVariable; el codigo que yo tengo lo que hace es que va recorriendo el archivo caracter por caracter y si se encuentra un espacio en blanco o un signo de coma ', ' o de punto y coma ';',quiere decir que ha encontrado una cadena. En el ejemplo que puse las cadenas serian char, nombreVariable y tambien el ; Pero para el algoritmo que tengo solo obtiene las cadenas char y nombreVariable. El punto y coma no lo puede imprimir, y no se como cambiar el algoritmo que tengo: este es el primer ciclo que me tiene que leer caracter por caracter hasta el final de archivo: while((car = af.read()) != -1) { componenteLexico = Clase.leerArchivo(nombreArchivo,af); System. out. print("[" + componenteLexico + "]"); }
y este es en el que me concatena los caracteres hasta que se encuentra con el caracter ' ' o ';'. { int car; char c; long posicion; StringBuilder sb = new StringBuilder(); try { posicion = r.getFilePointer(); r.seek(posicion-1); while((car = r.read()) != -1 && car != ' ') { if(!esSignoPuntuacion(car)) { c = (char)car; sb.append(c); } } cadena = sb.toString(); } { System. out. println("No se pudo abrir archivo"); } return cadena; } public static boolean esSignoPuntuacion(int car) { if(car == ',' || car == ';' || car == '.') return true; else return false; }
gracias
|
|
|
50
|
Programación / Java / FileNotFoundException
|
en: 30 Julio 2014, 07:20 am
|
Saludos Tengo el siguiente programa que usa RandomAccessFile para abrir un archivo, y que en caso de que no pueda hacerlo me lance una excepcion. El problema es que aun cuando el archivo se encuentra en la ruta que le indico con el String ruta, me sigue lanzando esa excepcion FileNotFoundException cuando no deberia import java.util.Scanner; import java.io.File; import java.io.RandomAccessFile; import java.io.FileNotFoundException; public class AutomataFinito { public static void main (String[] args ) { String nombreArchivo,nombre,ruta = "C:/Usuarios/MiNombre/workspace/Proyecto/"; Scanner teclado = new Scanner (System. in); System. out. print("Dame nombre del archivo: "); nombre = teclado.nextLine(); nombreArchivo = ruta + nombre; teclado.close(); try { } { System. out. println("No se pudo abrir archivo"); } } }
alguien me puede decir a qué se debe esto?? de antemano gracias
|
|
|
|
|
|
|