elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Programación C/C++ / AFD en: 18 Marzo 2009, 23:16 pm
hola saben casi nunca pido ayuda, solo que esta vez me veo en la necesidad je je veran llevo la materia de matematicas discretas nos han dejado un proyecto que consiste en programar un automata finito determinista (sin transiciones  epsilon(como se escriba))
no pido que me lo hagan pues ya comenze a programarlo de hecho ya tengo todo solo en una funcion que llamo analizar_transiciones(etc); la verdad no logro acomodar mis ideas, el problema que tengo en si es que los estados cambien de acuerdo a la cadena ingresada por el usuario, el programa debe pedir toda la quintupla es decir:

conjunto de estados
estado inicial
estado(s) final(es)
lenguaje del automata
y la tabla de transiciones, por ejemplo estado q0 con respecto a una "a" pasa al estado q1

les pongo mi codigo a continuacion si gustan primero corranlo para que vean lo que hace, donde tengo problemas o mas bien no se que diablos hacer para "seguir" la cadena ingresada por el usuario, si mi codigo esta algo confuso diganme y os explicare que es, lo estaba intentando hacer con arreglos de estructuras cada estructura es un estado pero creo que ese no es el camino je je saludos y disculpen las molestias, espero no me insulten ja ja ja o me traten de lammer, creo que con mi codigo demuestro algun conocimiento  :rolleyes:

PD: esta hecho en C, utilizo el compilador en modo DOS, TC, BC como lo conozcan jeje, bajo win xp(valga la redundancia XD)


si esta muy abstracto espero compartan sus ideas o el "así lo haria yo" digo para que no gasten valioso tiempo tratando de parchar mi program je je

Código:

//importante: los estados se almacenan como enteros es decir el estado q0 en realidad solo es 0, no se guardan como cadena "q0"
//le pongo la "q" cuando muestro los estados para que se vea mejor o se entienda, bueno ya me revolvi


#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <dos.h>

struct estado
{
int numero, destino[10];
char lenguaje[10];
};
typedef struct estado Estado;

void pedir_estados(int *estados,int *inicial,int final[10],int *aux);
void pedir_lenguaje(char lenguaje[10]);
int mostrar(char cadena[10]);
void transicion(int *estados,int *tam,char lenguaje[10],int transiciones[10][10]);
void mostrar_transiciones(int *estados,int *tam,char lenguaje[10],int transiciones[10][10]);
void asignar_estructura(int *estados,char lenguaje[10],int *tam,int transiciones[10][10],Estado Estructura[10]);
int analizar_transiciones(int *inicial,int *tam,int *tam2,int *aux,int *final,Estado Estructura[10],char cadena[10]);
void pedir_cadena(char cadena[10],int *tam2);

void main()
{
Estado Estructura[10];
char lenguaje[10];
char cadena[10];
int final[10];
int inicial;
int estados;
int transiciones[10][10]; //guarda los estados "destino" en la tabla de transiciones
int cont;
int tam; //tama¤o del lenguaje
int tam2;
int aux;   //total de estados finales
int aceptar;  //bandera que nos auxila a saber si la cadena fue aceptada o no
pedir_estados(&estados,&inicial,final,&aux);
pedir_lenguaje(lenguaje);
tam=mostrar(lenguaje);
transicion(&estados,&tam,lenguaje,transiciones);
mostrar_transiciones(&estados,&tam,lenguaje,transiciones);
asignar_estructura(&estados,lenguaje,&tam,transiciones,Estructura);
mostrar_transiciones(&estados,&tam,lenguaje,transiciones);


//este ciclo no es importante solo recuerda al usuario cuales son los estados finales
printf("\n\n\tEstados finales: ");
for(cont=0;cont<aux;cont++)
{
printf(" q%d ",final[cont]);
}
////////////////////////////////////////////////////////////////////////////////////

pedir_cadena(cadena,&tam);
aceptar=analizar_transiciones(&inicial,&tam,&tam2,&aux,final,Estructura,cadena);


if(aceptar>0)
{
printf("\n\n\tLa cadena es aceptada");
}
else
{
printf("\n\n\tLa cadena no es aceptada");
}
getch();
}

void pedir_estados(int *estados,int *inicial,int final[10],int *aux)
{

//int final[10];
//int inicial;
int cont;
//int aux;//numero de estados finales
//int estados;
clrscr();
printf("\n\tInserta el numero de estados: ");
fflush(stdin);
scanf("%d",&*estados);
printf("\n\n");
for(cont=0;cont<*estados;cont++)
{
delay(400);
printf("\n\n\tq%d",cont);
}
printf("\n\n\tEstado inicial: q");
fflush(stdin);
scanf("%d",&*inicial);
printf("\n\n\tCuantos estados finales tiene el automata?: ");
fflush(stdin);
scanf("%d",&*aux);
for(cont=0;cont<*aux;cont++)
{
printf("\n\n\tingresa el estado final %d: q",cont+1);
fflush(stdin);
scanf("%d",&final[cont]);
}
}
void pedir_lenguaje(char lenguaje[10])
{
printf("\n\n\tIngresa el lenguaje del automata,junto, ejemplo: abc\n\t: ");
fflush(stdin);
gets(lenguaje);
}
int mostrar(char cadena[10])
{
int cont;
int tam;
tam=strlen(cadena);
printf("\n\n\t");
for(cont=0;cont<tam;cont++)
{
printf(" -%c- ",cadena[cont]);
}
return tam;
}
void transicion(int *estados,int *tam,char lenguaje[10],int transiciones[10][10])
{
int cont;
int cont2;
printf("\n\n\tIngrese la tabla de transiciones\n");
for(cont=0;cont<*estados;cont++)
{
for(cont2=0;cont2<*tam;cont2++)
{
printf("\n\tq%d con respecto a una -> %c: q",cont,lenguaje[cont2]);
scanf("%d",&transiciones[cont][cont2]);
}
}
printf("\n\n\tCarga de transiciones completada con exito");
}
void mostrar_transiciones(int *estados,int *tam,char lenguaje[10],int transiciones[10][10])
{
int cont;
int cont2;
printf("\n\n\tTabla de transiciones\n");
for(cont=0;cont<*estados;cont++)
{
for(cont2=0;cont2<*tam;cont2++)
{
printf("\n\n\tq%d con respecto a una -> %c: q%d",cont,lenguaje[cont2],transiciones[cont][cont2]);
}
}
printf("\n\n\tCarga de transiciones completada con exito");
}
void asignar_estructura(int *estados,char lenguaje[10],int *tam,int transiciones[10][10],Estado Estructura[10])
{
int cont,cont2;
for(cont=0;cont<*estados;cont++)
{
Estructura[cont].numero=cont;   //asigna el numero del estado
for(cont2=0;cont2<*tam;cont2++)
{
Estructura[cont].lenguaje[cont2]=lenguaje[cont2];    //asigna el lenguaje
Estructura[cont].destino[cont2]=transiciones[cont][cont2];   //asigna el estado al que llevara el lenguaje
}
}
}
//pendiente, implementacion de escructura "Estado"
int analizar_transiciones(int *inicial,int *tam,int *tam2,int *aux,int *final,Estado Estructura[10],char cadena[10])
{
int cont,cont2;
int estado_activo;
int bandera=0;
estado_activo=*inicial;
for(cont=0;cont<*tam2;cont++)
{

for(cont2=0;cont2<*tam;cont2++)
{
if(cadena[cont]==Estructura[cont].lenguaje[cont2])
{
estado_activo=Estructura[cont].destino[cont2];
}
/*else
{
cont2++;
}*/
}
}
for(cont=0;cont<*aux;cont++)
{
if(estado_activo==final[cont])
{
bandera++;
}
}
return bandera;
}
void pedir_cadena(char cadena[10],int *tam2)
{
printf("\n\n\tIngresa la cadena a evaluar, maximo 10 caracteres: ");
fflush(stdin);
gets(cadena);
*tam2=strlen(cadena);
}



EI: juntando mensajes.

¬¬ gracias
ja ja aja ja ja jaaj ja ja ja

ya termine el program estoy por la version 3.5 hoy pienso hacer la 4
el codigo que meti al principio corresponde a la version 1 ja ja ja ja estructuras que risa me dan, resolvi mi problema con arreglos bidimensionales tal vez lo ideal en este problem, saludos, creo k nadie ha entrado aparte de yo XD
2  Programación / Ejercicios / Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos.... en: 9 Marzo 2009, 22:49 pm
en muchos lenguajes de programacion es necesario inicializar las variables con algun valor aunque este sea cero, si dudas intenta practicarlo en C cuando declaras las variables toman el valor del espacio en memoria que les asigna el sistema
si el siguiente codigo t da algun cero digo publicamente que soy gay  :xD (y aclaro no lo soy)

el programa solo muestra el valor de algunos espacios de la memoria, o dicho de otra forma muestra lo que guarda cada elemento del arreglo sin una asignacion o inicializacion previa.

#include<stdio.h>
#include<conio.h>
#define x 10
void main()
{
   int num
  • ;
   int i;
   clrscr();
   for(i=0;i<=x;i++)
   {
      printf("%d, ",i);
   }
}
   
3  Media / Battle Arts / Re: Alquien se aputa a un Battle??? en: 19 Noviembre 2008, 16:08 pm
yo me apunto man, aunque ya seria un death match XD
propongo k sea un logo acerca de alguna carrera, por ejemplo ISC(Ingenieria en Sistemas Cmputacionales) :DDDDDDDDDDDDDDDD

bueno es una sugerencia tambien podria ser de musica naturalexa sexo XD esta ultima tal vez no, nos estan vigilando :-X
4  Media / Battle Arts / Re: [Propuesta] Reto a cualquier persona. en: 29 Septiembre 2008, 20:28 pm
...XD
5  Media / Juegos y Consolas / Re: segundo torneo de age of conquerors en: 7 Julio 2008, 23:50 pm
no entender Lord, si fue por lo de la otra vez que te dije marica por que no recuerdo que mas pude hacer y creo k ya pedi disculpas o fue un sueño??
bueno de todos modos no fue enserio fue de cariño we, y pido disculpas otra vex y nevao acuerdate que despues de esa partida no quisiste volver a jugar, espero que no haya sido por temor a perder o algo asi bueno era todo, a ver si enseñas a tu harman@ a jugar mejor  :-X bueno saludos a todos. ::)
6  Media / Juegos y Consolas / Re: segundo torneo de age of conquerors en: 2 Julio 2008, 20:54 pm
jajajajajajajajajajajajajajajajajaja x10`6
Oigan, me conecto el sábado de 16.00 a/o 18.30 argentina, para cualquier enfrentamiento con Lord William, a los siguientes creo que puedo ganarles en un mano a mano:

11.   caballero-maldito &&
(los que tienen dos "&" con dos aliados)

y asi me dicen que no insulte?? je je bueno espero encontrarme contigo en el torneo para eliminarte   :xD como puedes decir que me ganas con dos aliados x favor amigo nunca me has visto jugar ni yo a ti asi que creo que no hay que apresurarse a decir si eres mejor o PEOR JUGADOR QUE YO, asi que con el respeto que merecemos todos aqui te pido por favor que retires "&&" eso de mi hermoso sobrenombre, saludos  :P
7  Media / Juegos y Consolas / Re: segundo torneo de age of conquerors en: 2 Julio 2008, 01:57 am
y dime adito digo nevadito je je, cuando te aliaste con carlos tu explorabas y el atacaba o como? y pues creo k 2 contra 1 es desventaja bueno esto depende de los jugadores claro y pues cuando gusten tu y tu hermano contra mi, un saludo a carlos je je je  a ver cuando terminamos nuestro asunto, ya que en la primer partida ps te madree gacho y en la segunda ps igual tu a mi por culpa de mi aliado lammer ¬¬ jajaja bueno un saludo compa y ps a ver cuando el desempate espero esto sea en el torneo je je
8  Media / Juegos y Consolas / Re: segundo torneo de age of conquerors en: 1 Julio 2008, 22:47 pm
jojojo tu y yo nevao cuando gustes
o quien sea cuando me vean en hamachi me contactan y jugemos
calculando segun el nivel de todos contra los que he jugado voy en tercer lugar XD, eso por que no he jugado con 3 si no quien sabe saludos
9  Media / Juegos y Consolas / Re: segundo torneo de age of conquerors en: 28 Junio 2008, 08:16 am
di de frente lo k tienes k decir y dejate de rodeos
perdon??? a que te refieres
yo soy el presidente  ;D

ademas creo que nadie esta subordinado a tu autorizacion...
je je me recuerdas a kimbley no se si alguien lo conosca
10  Media / Juegos y Consolas / Re: segundo torneo de age of conquerors en: 28 Junio 2008, 07:04 am
que decias del multipost ???
 :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines