ANEXO I. Implementación en C++ del algoritmo del árbol de búsqueda de estados

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ANEXO I. Implementación en C++ del algoritmo del árbol de búsqueda de estados"

Transcripción

1 ANEXO I. Implementación en C++ del algoritmo del árbol de búsqueda de estados Programa principal: Main.cpp #include <stdio.h> #include <stdlib.h> #include "ident.h" #include <time.h> #include<conio.h> #include<string.h> #pragma once #pragma warning(disable : 4996) void main() FILE *fichero1; FILE *fichero2; FILE *fichero3; FILE *fichero4; FILE *fichero5; Ident one; char c[20]; fichero1 = fopen("secuencia_ceros.txt","r"); if(fichero1 == NULL) printf("ha habido un error al acceder al fichero\n"); exit(-1); fichero2 = fopen("secuencia_unos.txt","r"); if(fichero2 == NULL) printf("ha habido un error al acceder al fichero\n"); exit(-1); printf("introduzca el nombre del fichero de salida1(entradas)\n*por defecto salida.dao (pulse 1)*\n"); scanf("%s",c); if (c[0]=='1'&&c[2]==-52) fichero3 = fopen("salida.dao","w"); fichero3 = fopen(c,"w"); if(fichero3 == NULL) printf("ha habido un error al acceder al fichero\n"); exit(-1); printf("introduzca el nombre del fichero de salida2(transiciones)\n*por defecto salida.dao (pulse 1)*\n"); scanf("%s",c); 235

2 if (c[0]=='1'&&c[2]==-52) fichero4 = fopen("salida.dao","w"); fichero4 = fopen(c,"w"); if(fichero4 == NULL) printf("ha habido un error al acceder al fichero\n"); exit(-1); printf("introduzca el nombre del fichero de salida3(estados)\n*por defecto salida.dao (pulse 1)*\n"); scanf("%s",c); if (c[0]=='1'&&c[2]==-52) fichero5 = fopen("salida.dao","w"); fichero5 = fopen(c,"w"); if(fichero5 == NULL) printf("ha habido un error al acceder al fichero\n"); exit(-1); printf("ficheros abiertos\n"); one.leersecuencia(fichero1,fichero2); printf("secuencias obtenidas\n"); one.escribirmatriz1(fichero3); one.escribirtran(); one.escribirmatriz(fichero4); one.buscarest_nivel1(); one.completar_nivel1(); one.buscarest_nivel2(); one.completar_nivel2(); one.buscarest_nivel3(); one.completar_nivel3(); one.buscarest_nivel4(); one.completar_nivel4(); one.completar_nivel5(); one.escribir(fichero5); printf("identificacion terminada\n\n"); 236

3 Fichero que contiene la clase: Ident.h #pragma once #include <stdio.h> #include <conio.h> #include <stdlib.h> #ifndef IDENT #define IDENT #define N 129 #define M 14 //número de filas de la matriz de transiciones //número de columnas de la matriz de transiciones extern int** matran; //MATRIZ DE TRANSICIONES POR NIVELES extern int** mat; //MATRIZ QUE CONTIENE LOS FICHEROS DE ENTRADA extern int** estados; extern int vec1[4]; extern int vec2[4]; extern bool igual; extern int est0,est1,est2,est3; extern int nivel; extern int indice; extern bool coincide; extern int desplaza; class Ident public: Ident(void); void leersecuencia(file *fin,file *fout); void escribirmatriz1(file *fsal); void escribirtran(); void escribirmatriz(file *fconf); void buscarest_nivel1(); void completar_nivel1(); void buscarest_nivel2(); void completar_nivel2(); void buscarest_nivel3(); void completar_nivel3(); void buscarest_nivel4(); void completar_nivel4(); void completar_nivel5(); void escribevectores(int nivel,int indice); void escribevectores2(int nivel,int indice void escribevectores3(int nivel,int indice bool comprobar_arbol0(bool coinc,int indic bool comprobar_arbol1(bool coinc,int indic bool comprobar_arbol2(bool coinc,int indic); bool comprobar_arbol03(bool coinc,int indic); bool comprobar_arbol13(bool coinc,int indic); bool comprobar_arbol23(bool coinc,int indic); bool comprobar_arbol33(bool coinc,int indic); bool comprobar_arbol43(bool coinc,int indic); bool comprobar_arbol53(bool coinc,int indic); 237

4 bool comprobar_arbol63(bool coinc,int indic); bool comprobar_arbol04(bool coinc,int indic); bool comprobar_arbol14(bool coinc,int indic); bool comprobar_arbol24(bool coinc,int indic); bool comprobar_arbol34(bool coinc,int indic); bool comprobar_arbol44(bool coinc,int indic); bool comprobar_arbol54(bool coinc,int indic); bool comprobar_arbol64(bool coinc,int indic); bool comprobar_arbol74(bool coinc,int indic); bool comprobar_arbol84(bool coinc,int indic); bool comprobar_arbol94(bool coinc,int indic); bool comprobar_arbol104(bool coinc,int indic); bool comprobar_arbol114(bool coinc,int indic); bool comprobar_arbol124(bool coinc,int indic); bool comprobar_arbol134(bool coinc,int indic); bool comprobar_arbol144(bool coinc,int indic); bool iguales (bool igual); void escribir(file *fsalida); ~Ident(void); ; #endif 238

5 Fichero que contiene los subprogramas: Ident.cpp #include "Ident.h" #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #pragma once int** matran; //MATRIZ DE TRANSICIONES POR NIVELES int** mat; //MATRIZ QUE CONTIENE LOS FICHEROS DE ENTRADA int** estados; int vec1[4]; int vec2[4]; bool igual; int est0,est1,est2,est3; int nivel; int indice; bool coincide; int desplaza; Ident::Ident(void) void Ident::leersecuencia(FILE *fin,file *fout) int i; int j; mat = new int*[129];//asignacion espacio para matriz entradas for (int s=0; s<129; s++) mat[s]= new int[14]; j=0; i= -1; while (!feof(fin))//escritura de los primeros 64 datos j=0; i++; while (j<14) fscanf(fin,"%d",&mat[i][j]); j++; j=0; i=63; while (!feof(fout))//escritura de datos en la matriz (64-128) j=0; i++; while (j<14) 239

6 fscanf(fout,"%d",&mat[i][j]); j++; for (j=0; j<14; j++) //Escritura de la última fila de la matriz mat[128][j] = 0; void Ident::escribirmatriz1(FILE *fsal) int i,j; for(i<n;i++) for(j=0;j<m;j++) fprintf(fsal,"%d ",mat[i][j]); fprintf(fsal,"\n"); void Ident::escribirtran() int i,j,m,n; matran = new int*[7]; for (i<7;i++) matran[i]= new int [4*pow(2.0,i)]; //creo una matriz de 7 filas(niveles) y tantas columnas como transiciones for(i<7;i++) for(j=0;j<4*pow(2.0,i);j++) matran[i][j]= -1; m=0; n=0; j=0; while (j<7) n=0; while (i<128) if (mat[i][j]!= mat[i+1][j]) matran[m][n]= mat[i][j]; n=n+1; matran[m][n] = mat[i][j+7]; n=n+1; i++; 240

7 m=m+1; j=j+1; void Ident::escribirmatriz(FILE *fconf) int i,j; for(i<7;i++) for(j=0;j<4*pow(2.0,i);j++) fprintf(fconf,"%d ",matran[i][j]); fprintf(fconf,"\n"); void Ident::buscarest_nivel1() int i,j; int k; bool igu; bool mismo; est0=0; est1=1; est2=2; est3=3; estados = new int*[7]; for (i<7;i++) estados[i]= new int [pow(2.0,i)]; //creo una matriz de 7 filas(niveles) y tantas columnas como estados for(i<7;i++) //inicializo la matriz a -1 for(j=0;j<pow(2.0,i);j++) estados[i][j]= -1; estados[0][0]=est0; //relleno primer estado for (i<1;i++) for(j=0;j<4;j++) vec1[j]= matran[i][j]; vec2[j]= matran[i+1][j]; igu =iguales(igual); //creo dos vectores para comparar estados 241

8 mismo=true; if (igu ==false) //si no son iguales es otro estado estados[1][0]= est1; //si son iguales comparo arboles generados a partir de cada estado while (mismo==true && i<5) for (i=1;i<5;i++) for(j=0;j<4*pow(2.0,i);j++) if (matran[i][j]!= matran[i+1][j]) mismo=false; estados[1][0]=estados[0][0]; if (mismo==false) //si el árbol generado no es el mismo es otro estado estados[1][0]=est1; for (i<1;i++) for(j=0;j<4;j++) vec1[j]= matran[i][j]; vec2[j]= matran[i+1][j+4]; igu=iguales (igual); mismo=true; if (igu==false) estados[1][1]= est1; while (mismo==true && i<5) for (i=1;i<5;i++) for(j=0;j<4*pow(2.0,i);j++) k=4*pow(2.0,i); if (matran[i][j]!= matran[i+1][j+k]) mismo=false; estados[1][1]=estados[0][0]; 242

9 if (mismo==false && estados[1][0]==est0) estados[1][1]=est1; if (mismo==false && estados[1][0]==est1) estados[1][1]=est2; void Ident::completar_nivel1() int m,n; if (estados[1][0]== estados[0][0]) for(m=2; m<7;m++) for(n=0; n<1; n++) estados[m][n]= estados[1][0]; estados[m][n+1]= estados[1][1]; if (estados[1][1]==estados[0][0]) for(m=2;m<7;m++) for(n=2;n<3;n++) estados[m][n]=estados[1][0]; estados[m][n+1]= estados[1][1]; void Ident::buscarest_nivel2() int i,j; bool igu0,igu1,igu2,mismo; int cont; int est_nuevo; int contador,salir; bool coincide0,coincide1,coincide2; contador=0; while (contador<5) igu1=true; igu2=true; coincide0=true; coincide1=true; coincide2=true; 243

10 while (estados[2][i]!= -1 && i<4) //busco primer nodo sin asignar estado i++; indice=i; contador=i; if (i==4) completar_nivel2(); //si todos los estados estan completos desplaza=0; nivel=0; escribevectores(nivel,indice); igu0 =iguales(igual); if (igu0==true) // si coincide con estados[0][0] coincide0=comprobar_arbol0(coincide,indice); if (coincide0==true) estados[2][indice]=estados[0][0]; igu0=false; if (igu0==false coincide0==false) //si no coincide con estados[0][0] nivel=nivel+1; escribevectores(nivel,indice); igu1=iguales(igual); if (igu1==true) coincide1=comprobar_arbol1(coincide,indice); if (coincide1==true) estados[2][indice]=estados[1][0]; if (igu1==false coincide1==false) //si no coincide con estados[1][0] desplaza=4; escribevectores(nivel,indice); igu2=iguales(igual); if (igu2==true) coincide2=comprobar_arbol2(coincide,indice); if (coincide2==true) estados[2][indice]=estados[1][1]; if (igu2==false coincide2==false) //si tampoco coincide con estados[1][1] est_nuevo=est1; 244

11 if ((est_nuevo=estados[1][0] && estados[1][1]==est2) (est_nuevo==estados[1][1] && estados[1][0]==est2)) estados[2][indice]= est3; estados[2][indice]=est2; i=indice; contador=contador+1; void Ident:: completar_nivel2() int i,k; k=0; while(i<4) if (estados[2][i]==estados[0][0]) estados[3][k]=estados[1][0]; estados[3][k+1]=estados[1][1]; if (estados[2][i]==estados[1][0]) estados[3][k]=estados[2][0]; estados[3][k+1]=estados[2][1]; if (estados[2][i]==estados[1][1]) estados[3][k]=estados[2][2]; estados[3][k+1]=estados[2][3]; k=k+2; i=i+1; void Ident::buscarest_nivel3() int i,j; bool igu0,igu1,igu2,igu3,igu4,igu5,igu6; int cont; int est_nuevo; int contador,salir; bool coincide0,coincide1,coincide2,coincide3,coincide4,coincide5,coincide6; contador=0; while (contador<9) igu1=true; igu2=true; 245

12 igu3=true; igu4=true, igu5=true; igu6=true; coincide0=true; coincide1=true; coincide2=true; coincide3=true; coincide4=true; coincide5=true; coincide6=true; while (estados[3][i]!= -1 && i<8)//busco primer nodo sin asignar estado i++; indice=i; contador=i; if (i==8) completar_nivel3();//si todos los estados estan completos desplaza=0; nivel=0; escribevectores2(nivel,indice); igu0 =iguales(igual); if (igu0==true) // si coincide con estados[0][0] coincide0=comprobar_arbol03(coincide,indice); if (coincide0==true) estados[3][indice]=estados[0][0]; igu0=false; if (igu0==false coincide0==false) //si no coincide con estados[0][0] nivel=nivel+1; escribevectores2(nivel,indice); igu1=iguales(igual); if (igu1==true) coincide1=comprobar_arbol13(coincide,indice); if (coincide1==true) estados[3][indice]=estados[1][0]; if (igu1==false coincide1==false) //si no coincide con estados[1][0] desplaza=4; escribevectores2(nivel,indice); igu2=iguales(igual); if (igu2==true) coincide2=comprobar_arbol23(coincide,indice); 246

13 if (coincide2==true) estados[3][indice]=estados[1][1]; if(igu2==false coincide2==false) desplaza=0; nivel=nivel+1; escribevectores2(nivel,indice); igu3=iguales(igual); if (igu3==true) coincide3=comprobar_arbol33(coincide,indice); if (coincide3==true) estados[3][indice]=estados[2][0]; if(igu3==false coincide3==false) desplaza=4;; escribevectores2(nivel,indice); igu4=iguales(igual); if (igu4==true) coincide4=comprobar_arbol43(coincide,indice); if (coincide4==true) estados[3][indice]=estados[2][1]; if(igu4==false coincide4==false) desplaza=8; escribevectores2(nivel,indice); igu5=iguales(igual); if (igu5==true) coincide5=comprobar_arbol53(coincide,indice); if (coincide5==true) estados[3][indice]=estados[2][2]; if(igu5==false coincide5==false) desplaza=12; escribevectores2(nivel,indice); igu6=iguales(igual); if (igu6==true) coincide6=comprobar_arbol63(coincide,indice); if (coincide6==true) estados[3][indice]=estados[2][3]; if (igu6==false coincide6==false) //si tampoco coincide con estados[2][3] estados[3][indice]=est3; i=indice; contador=contador+1; 247

14 void Ident::completar_nivel3() int i,k; k=0; while(i<8) if (estados[3][i]==estados[0][0]) estados[4][k]=estados[1][0]; estados[4][k+1]=estados[1][1]; if (estados[3][i]==estados[1][0]) estados[4][k]=estados[2][0]; estados[4][k+1]=estados[2][1]; if (estados[3][i]==estados[1][1]) estados[4][k]=estados[2][2]; estados[4][k+1]=estados[2][3]; if (estados[3][i]==estados[2][0]) estados[4][k]=estados[3][0]; estados[4][k+1]=estados[3][1]; if (estados[3][i]==estados[2][1]) estados[4][k]=estados[3][2]; estados[4][k+1]=estados[3][3]; if (estados[3][i]==estados[2][2]) estados[4][k]=estados[3][4]; estados[4][k+1]=estados[3][5]; if (estados[3][i]==estados[2][3]) estados[4][k]=estados[3][6]; estados[4][k+1]=estados[3][7]; k=k+2; i=i+1; void Ident::buscarest_nivel4() int i,j; bool igu0,igu1,igu2,igu3,igu4,igu5,igu6; bool igu7,igu8,igu9,igu10,igu11,igu12,igu13,igu14; int cont; int est_nuevo; 248

15 int contador,salir; boolcoincide0,coincide1,coincide2,coincide3,coincide4,coincide5, coincide6; boolcoincide7,coincide8,coincide9,coincide10,coincide11, coincide12,coincide13,coincide14; contador=0; while (contador<16) igu1=true; igu2=true; igu3=true; igu4=true, igu5=true; igu6=true; igu7=true; igu8=true; igu9=true; igu10=true; igu11=true, igu12=true; igu13=true; igu14=true; coincide0=true; coincide1=true; coincide2=true; coincide3=true; coincide4=true; coincide5=true; coincide6=true; coincide7=true; coincide8=true; coincide9=true; coincide10=true; coincide11=true; coincide12=true; coincide13=true; coincide14=true; while (estados[4][i]!= -1 && i<16) //busco primer nodo sin asignar estado i++; indice=i; contador=i; if (i==16) completar_nivel4();//si todos los estados estan completos desplaza=0; nivel=0; escribevectores3(nivel,indice); igu0 =iguales(igual); 249

16 if (igu0==true) // si coincide con estados[0][0] coincide0=comprobar_arbol04(coincide,indice); if (coincide0==true) estados[4][indice]=estados[0][0]; igu0=false; if (igu0==false coincide0==false) //si no coincide con estados[0][0] nivel=nivel+1; escribevectores3(nivel,indice); igu1=iguales(igual); if (igu1==true) coincide1=comprobar_arbol14(coincide,indice); if (coincide1==true) estados[4][indice]=estados[1][0]; if (igu1==false coincide1==false) //si no coincide con estados[1][0] desplaza=4; escribevectores3(nivel,indice); igu2=iguales(igual); if (igu2==true) coincide2=comprobar_arbol24(coincide,indice); if (coincide2==true) estados[4][indice]=estados[1][1]; if(igu2==false coincide2==false) desplaza=0; nivel=nivel+1; escribevectores3(nivel,indice); igu3=iguales(igual); if (igu3==true) coincide3=comprobar_arbol34(coincide,indice); if (coincide3==true) estados[4][indice]=estados[2][0]; if(igu3==false coincide3==false) desplaza=4;; escribevectores3(nivel,indice); igu4=iguales(igual); if (igu4==true) coincide4=comprobar_arbol44(coincide,indice); if (coincide4==true) estados[4][indice]=estados[2][1]; 250

17 if(igu4==false coincide4==false) desplaza=8; escribevectores3(nivel,indice); igu5=iguales(igual); if (igu5==true) coincide5=comprobar_arbol54(coincide,indice); if (coincide5==true) estados[4][indice]=estados[2][2]; if(igu5==false coincide5==false) desplaza=12; escribevectores3(nivel,indice); igu6=iguales(igual); if (igu6==true) coincide6=comprobar_arbol64(coincide,indice); if (coincide6==true) estados[4][indice]=estados[2][3]; if (igu6==false coincide6==false) //si tampoco coincide con estados[2][3] desplaza=0; nivel=nivel+1; escribevectores3(nivel,indice); igu7=iguales(igual); if (igu7==true) coincide7=comprobar_arbol74(coincide,indice); if (coincide7==true) estados[4][indice]=estados[3][0]; if (igu7==false coincide7==false) //si tampoco coincide con estados[2][3] desplaza=4; escribevectores3(nivel,indice); igu8=iguales(igual); if (igu8==true) coincide8=comprobar_arbol84(coincide,indice); if (coincide8==true) estados[4][indice]=estados[3][1]; if (igu8==false coincide8==false) //si tampoco coincide con estados[2][3] desplaza=8; escribevectores3(nivel,indice); igu9=iguales(igual); if (igu9==true) coincide9=comprobar_arbol94(coincide,indice); if (coincide9==true) 251

18 252 estados[4][indice]=estados[3][2]; if (igu9==false coincide9==false) //si tampoco coincide con estados[2][3] desplaza=12; escribevectores3(nivel,indice); igu10=iguales(igual); if (igu10==true) coincide10=comprobar_arbol104(coincide,indice); if (coincide10==true) estados[4][indice]=estados[3][3]; if (igu10==false coincide10==false) //si tampoco coincide con estados[2][3] desplaza=16; escribevectores3(nivel,indice); igu11=iguales(igual); if (igu11==true) coincide11=comprobar_arbol114(coincide,indice); if (coincide11==true) estados[4][indice]=estados[3][4]; if (igu11==false coincide11==false) //si tampoco coincide con estados[2][3] desplaza=20; escribevectores3(nivel,indice); igu12=iguales(igual); if (igu12==true) coincide12=comprobar_arbol124(coincide,indice); if (coincide12==true) estados[4][indice]=estados[3][5]; if (igu12==false coincide12==false) //si tampoco coincide con estados[2][3] desplaza=24; escribevectores3(nivel,indice); igu13=iguales(igual); if (igu13==true) coincide13=comprobar_arbol134(coincide,indice); if (coincide13==true) estados[4][indice]=estados[3][6]; if (igu13==false coincide13==false) //si tampoco coincide con estados[2][3] desplaza=28; escribevectores3(nivel,indice); igu14=iguales(igual);

19 Anexo I if (igu14==true) coincide14=comprobar_arbol144(coincide,indice); if (coincide14==true) estados[4][indice]=estados[3][7]; i=indice; contador=contador+1; void Ident::completar_nivel4() int i,k; k=0; while(i<16) if (estados[4][i]==estados[0][0]) estados[5][k]=estados[1][0]; estados[5][k+1]=estados[1][1]; if (estados[4][i]==estados[1][0]) estados[5][k]=estados[2][0]; estados[5][k+1]=estados[2][1]; if (estados[4][i]==estados[1][1]) estados[5][k]=estados[2][2]; estados[5][k+1]=estados[2][3]; if (estados[4][i]==estados[2][0]) estados[5][k]=estados[3][0]; estados[5][k+1]=estados[3][1]; if (estados[4][i]==estados[2][1]) estados[5][k]=estados[3][2]; estados[5][k+1]=estados[3][3]; if (estados[4][i]==estados[2][2]) estados[5][k]=estados[3][4]; estados[5][k+1]=estados[3][5]; if (estados[4][i]==estados[2][3]) estados[5][k]=estados[3][6]; estados[5][k+1]=estados[3][7]; if (estados[4][i]==estados[3][0]) 253

20 estados[5][k]=estados[4][0]; estados[5][k+1]=estados[4][1]; if (estados[4][i]==estados[3][1]) estados[5][k]=estados[4][2]; estados[5][k+1]=estados[4][3]; if (estados[4][i]==estados[3][2]) estados[5][k]=estados[4][4]; estados[5][k+1]=estados[4][5]; if (estados[4][i]==estados[3][3]) estados[5][k]=estados[4][6]; estados[5][k+1]=estados[4][7]; if (estados[4][i]==estados[3][4]) estados[5][k]=estados[4][8]; estados[5][k+1]=estados[4][9]; if (estados[4][i]==estados[3][5]) estados[5][k]=estados[4][10]; estados[5][k+1]=estados[4][11]; if (estados[4][i]==estados[3][6]) estados[5][k]=estados[4][12]; estados[5][k+1]=estados[4][13]; if (estados[4][i]==estados[3][7]) estados[5][k]=estados[4][14]; estados[5][k+1]=estados[4][15]; k=k+2; i=i+1; void Ident::completar_nivel5() int i,k; k=0; while(i<32) if (estados[5][i]==estados[0][0]) estados[6][k]=estados[1][0]; estados[6][k+1]=estados[1][1]; if (estados[5][i]==estados[1][0]) estados[6][k]=estados[2][0]; estados[6][k+1]=estados[2][1]; 254

21 if (estados[5][i]==estados[1][1]) estados[6][k]=estados[2][2]; estados[6][k+1]=estados[2][3]; if (estados[5][i]==estados[2][0]) estados[6][k]=estados[3][0]; estados[6][k+1]=estados[3][1]; if (estados[5][i]==estados[2][1]) estados[6][k]=estados[3][2]; estados[6][k+1]=estados[3][3]; if (estados[5][i]==estados[2][2]) estados[6][k]=estados[3][4]; estados[6][k+1]=estados[3][5]; if (estados[5][i]==estados[2][3]) estados[6][k]=estados[3][6]; estados[6][k+1]=estados[3][7]; if (estados[5][i]==estados[3][0]) estados[6][k]=estados[4][0]; estados[6][k+1]=estados[4][1]; if (estados[5][i]==estados[3][1]) estados[6][k]=estados[4][2]; estados[6][k+1]=estados[4][3]; if (estados[5][i]==estados[3][2]) estados[6][k]=estados[4][4]; estados[6][k+1]=estados[4][5]; if (estados[5][i]==estados[3][3]) estados[6][k]=estados[4][6]; estados[6][k+1]=estados[4][7]; if (estados[5][i]==estados[3][4]) estados[6][k]=estados[4][8]; estados[6][k+1]=estados[4][9]; if (estados[5][i]==estados[3][5]) estados[6][k]=estados[4][10]; estados[6][k+1]=estados[4][11]; if (estados[5][i]==estados[3][6]) estados[6][k]=estados[4][12]; estados[6][k+1]=estados[4][13]; if (estados[5][i]==estados[3][7]) 255

22 estados[6][k]=estados[4][14]; estados[6][k+1]=estados[4][15]; k=k+2; i=i+1; void Ident::escribevectores(int nivel,int indice) int i,j,k; if (nivel==0) k=2; if (nivel==1) k=1; //creo dos vectores para comparar estados for(j=0;j<4;j++) vec1[j]= matran[nivel][j+desplaza]; vec2[j]= matran[nivel+k][j+(4*indice)]; void Ident::escribevectores2(int nivel, int indice) int i,j,k; if (nivel==0) k=3; if (nivel==1) k=2; if (nivel==2) k=1; for(j=0;j<4;j++) vec1[j]= matran[nivel][j+desplaza]; vec2[j]= matran[nivel+k][j+(4*indice)]; void Ident::escribevectores3(int nivel, int indice) int i,j,k; if (nivel==0) k=4; if (nivel==1) k=3; if (nivel==2) k=2; if (nivel==3) k=1; for(j=0;j<4;j++) 256

23 vec1[j]= matran[nivel][j+desplaza]; vec2[j]= matran[nivel+k][j+(4*indice)]; bool Ident::comprobar_arbol0 (bool coincide, int indice) int i,j,k; for (i=1;i<5;i++) for(j=0;j<4*pow(2.0,i);j++) k=indice*pow(2.0,i+2); if (matran[i][j]!= matran[i+2][j+k]) bool Ident::comprobar_arbol1(bool coincide,int indice) int i,j,k; for (i=2;i<6;i++) for(j=0;j<2*pow(2.0,i);j++) k=indice*pow(2.0,i+1); if (matran[i][j]!=matran[i+1][j+k]) coincide=false; 257

24 bool Ident::comprobar_arbol2(bool coincide, int indice) int i,j,k,m,n,p; for (i=2;i<6;i++) for(j=0;j<2*pow(2.0,i);j++) k=2*pow(2.0,i); p=indice*pow(2.0,i+1); if (matran[i][j+p]!=matran[i+1][j+k]) coincide=false; bool Ident::comprobar_arbol03(bool coincide,int indice) int i,j,k; for (i=1;i<4;i++) for(j=0;j<4*pow(2.0,i);j++) k=indice*pow(2.0,i+2); if (matran[i][j]!= matran[i+3][j+k]) bool Ident::comprobar_arbol13(bool coincide,int indice) int i,j,k; for (i=2;i<5;i++) 258

25 for(j=0;j<2*pow(2.0,i);j++) k=indice*pow(2.0,i+1); if (matran[i][j]!= matran[i+2][j+k]) bool Ident::comprobar_arbol23(bool coincide,int indice) int i,j,k,p; for (i=2;i<5;i++) for(j=0;j<2*pow(2.0,i);j++) k=2*pow(2.0,i); p=indice*pow(2.0,i+1); if (matran[i][j+k]!= matran[i+2][j+p]) bool Ident::comprobar_arbol33(bool coincide,int indice) int i,j,k; for (i=3;i<6;i++) for(j=0;j<pow(2.0,i);j++) k=indice*pow(2.0,i); 259

26 if (matran[i][j]!= matran[i+1][j+k]) bool Ident::comprobar_arbol43(bool coincide,int indice) int i,j,k,p; for (i=3;i<6;i++) for(j=0;j<pow(2.0,i);j++) k=pow(2.0,i); p=indice*pow(2.0,i); if (matran[i][j+k]!= matran[i+1][j+p]) bool Ident::comprobar_arbol53(bool coincide,int indice) int i,j,k,p; for (i=3;i<6;i++) for(j=0;j<pow(2.0,i);j++) k=2*pow(2.0,i); p=indice*pow(2.0,i); if (matran[i][j+k]!= matran[i+1][j+p]) 260

27 bool Ident::comprobar_arbol63(bool coincide,int indice) int i,j,k,p; for (i=3;i<6;i++) for(j=0;j<pow(2.0,i);j++) k=3*pow(2.0,i); p=indice*pow(2.0,i); if (matran[i][j+k]!= matran[i+1][j+p]) bool Ident::comprobar_arbol04(bool coincide,int indice) int i,j,k; for (i=1;i<3;i++) for(j=0;j<4*pow(2.0,i);j++) k=indice*pow(2.0,i+2); if (matran[i][j]!= matran[i+4][j+k]) 261

28 bool Ident::comprobar_arbol14(bool coincide,int indice) int i,j,k; for (i=2;i<4;i++) for(j=0;j<2*pow(2.0,i);j++) k=indice*pow(2.0,i+1); if (matran[i][j]!= matran[i+3][j+k]) bool Ident::comprobar_arbol24(bool coincide,int indice) int i,j,k,p; for (i=2;i<4;i++) for(j=0;j<2*pow(2.0,i);j++) k=2*pow(2.0,i); p=indice*pow(2.0,i+1); if (matran[i][j+k]!= matran[i+3][j+p]) 262

29 bool Ident::comprobar_arbol34(bool coincide,int indice) int i,j,k; for (i=3;i<5;i++) for(j=0;j<pow(2.0,i);j++) k=indice*pow(2.0,i); if (matran[i][j]!= matran[i+2][j+k]) bool Ident::comprobar_arbol44(bool coincide,int indice) int i,j,k,p; for (i=3;i<5;i++) for(j=0;j<pow(2.0,i);j++) k=pow(2.0,i); p=indice*pow(2.0,i); if (matran[i][j+k]!= matran[i+2][j+p]) bool Ident::comprobar_arbol54(bool coincide,int indice) int i,j,k,p; for (i=3;i<5;i++) for(j=0;j<pow(2.0,i);j++) 263

30 k=2*pow(2.0,i); p=indice*pow(2.0,i); if (matran[i][j+k]!= matran[i+2][j+p]) bool Ident::comprobar_arbol64(bool coincide,int indice) int i,j,k,p; for (i=3;i<5;i++) for(j=0;j<pow(2.0,i);j++) k=3*pow(2.0,i); p=indice*pow(2.0,i); if (matran[i][j+k]!= matran[i+2][j+p]) bool Ident::comprobar_arbol74(bool coincide,int indice) int i,j,k; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) k=indice*pow(2.0,i-1); if (matran[i][j]!= matran[i+1][j+k]) 264

31 bool Ident::comprobar_arbol84(bool coincide,int indice) int i,j,k,p; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) k=pow(2.0,i-1); p=indice*pow(2.0,i-1); if (matran[i][j+k]!= matran[i+1][j+p]) bool Ident::comprobar_arbol94(bool coincide,int indice) int i,j,k,p; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) k=pow(2.0,i); p=indice*pow(2.0,i-1); if (matran[i][j+k]!= matran[i+1][j+p]) 265

32 bool Ident::comprobar_arbol104(bool coincide,int indice) int i,j,k,p; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) k=3*pow(2.0,i-1); p=indice*pow(2.0,i-1); if (matran[i][j+k]!= matran[i+1][j+p]) bool Ident::comprobar_arbol114(bool coincide,int indice) int i,j,k,p; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) k=4*pow(2.0,i-1); p=indice*pow(2.0,i-1); if (matran[i][j+k]!= matran[i+1][j+p]) bool Ident::comprobar_arbol124(bool coincide,int indice) int i,j,k,p; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) 266

33 k=5*pow(2.0,i-1); p=indice*pow(2.0,i-1); if (matran[i][j+k]!= matran[i+1][j+p]) bool Ident::comprobar_arbol134(bool coincide,int indice) int i,j,k,p; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) k=6*pow(2.0,i-1); p=indice*pow(2.0,i-1); if (matran[i][j+k]!= matran[i+1][j+p]) bool Ident::comprobar_arbol144(bool coincide,int indice) int i,j,k,p; for (i=4;i<6;i++) for(j=0;j<pow(2.0,i-1);j++) k=7*pow(2.0,i-1); p=indice*pow(2.0,i-1); if (matran[i][j+k]!= matran[i+1][j+p]) 267

34 bool Ident::iguales (bool igual) igual =true; int while(i<4 && igual==true)//comprobamos si vectores son = if (vec1[i]== vec2[i]) igual =true; i=i+1; igual=false; return (igual); void Ident::escribir(FILE *fsalida) int i,j; for(i<7;i++) for(j=0;j<pow(2.0,i);j++) fprintf(fsalida,"%d ",estados[i][j]); fprintf(fsalida,"\n"); Ident::~Ident(void) 268

35

36

37 I ANEXO II. Resultados Ficheros de entrada almacenados en matriz de 128 filas por 14 columnas

38 I

39 I Matriz de transiciones Fila 1: Fila 2: Fila 3: Fila 4: Fila 5: Fila 6: Fila 7:

40 I Matriz de estados Fila 1 : 0 Fila 2: 0 1 Fila 3: Fila 4: Fila 5: Fila 6: Fila 7:

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++ IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++ Fichero nodo.h #ifndef NODO_H #define NODO_H const int cantidad_nodos = 10; class Nodo private: string dato; Nodo* siguiente; public: Nodo(); void setdato(string

Más detalles

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. Código: O613 INGENIERÍA DE SISTEMAS Docente y Administrativo: Luz Esperanza Espitia Preciado Componente: Teórico Práctico. F. Vigencia: 8/10/2.012

Más detalles

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I Vectores y matrices Fundamentos de Programación Fundamentos de Programación I 1 Ejemplo de utilización n de vectores: gráfico de producción En una compañía nos han encargado escribir un programita que

Más detalles

1. Cuestiones. Ejercicios resueltos de C. Diego Rodríguez-Losada 1. //a) #include <stdio.h> main( ) { int x = 0, y = 0; //b) #include <stdio.

1. Cuestiones. Ejercicios resueltos de C. Diego Rodríguez-Losada 1. //a) #include <stdio.h> main( ) { int x = 0, y = 0; //b) #include <stdio. 1. Cuestiones Enunciado Febrero 04. Ejercicio Tercero. (2 puntos 30 minutos) Resolver los siguientes problemas indicando, en la parte inferior, cual es el resultado de cada programa. En caso de que el

Más detalles

PROGRAMACIÓN N C++ CONSTRUCTORES PROG.C++ L11 CONSTRUCTORES DEL LENGUAJE

PROGRAMACIÓN N C++ CONSTRUCTORES PROG.C++ L11 CONSTRUCTORES DEL LENGUAJE L11 CONSTRUCTORES DEL LENGUAJE CLASES class { } PLANTILLAS template { } ESPACIOS DE NOMBRES namespace { } EXCEPCIONES try catch.. SOBRECARGA DE OPERADORES operator (parametros) BIBLIOTECA

Más detalles

E s c u e l a P o l i t é c n i c a S u p e r i o r d e E l c h e

E s c u e l a P o l i t é c n i c a S u p e r i o r d e E l c h e EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES (SOLUCIÓN PRÁCTICAS) La duración del examen es de 2 horas. SEPTIEMBRE 2016 En este examen se solicita al alumno realizar una función para ordenar un vector

Más detalles

Escuela Politécnica Superior de Elche

Escuela Politécnica Superior de Elche EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA) La duración del examen es de 2 horas. JUNIO 2016 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++ para cada

Más detalles

Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)

Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++) Codificación en C Como pasar de Pseudocódigo a C (con pequeños trucos de C++) Plantilla Librerias Constantes Algoritmo #include #include #define PI 3.1416 int main(void){ /*Variables*/

Más detalles

Diagrama de transiciones del autómata. Tabla de transiciones

Diagrama de transiciones del autómata. Tabla de transiciones Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 4, Semestre 2016-1 Analizador Léxico en C Diagrama de transiciones del autómata letra letra 1 0 3 e 4 5 6 e 2 espacio Tabla

Más detalles

LISTAS ENLAZADAS DOBLES C++

LISTAS ENLAZADAS DOBLES C++ LISTAS ENLAZADAS DOBLES C++ fichero nodo.h #ifndef NODO_H #define NODO_H #include using namespace std; class Nodo private: int codigo; string nombre; float nota1; float nota2; float nota3; Nodo*

Más detalles

Contenido. P á g i n a 1

Contenido. P á g i n a 1 P á g i n a 1 Contenido Bibliotecas en ANSI C 2 Bibliotecas 2 Archivos Header 2 Funciones Públicas 2 Funciones Privadas 2 Directivas al Preprocesador 2 Caso de Estudio Saludos 4 Biblioteca saludar 4 Biblioteca

Más detalles

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8 TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 1.1 VECTORES O ARRAYS UNIDIMENSIONALES 2 1.2 ARRAYS MULTIDIMENSIONALES 3 1.3 INICIALIZACIÓN DE ARRAYS 4 1.3.1 INICIALIZACIÓN DE ARRAYS SIN

Más detalles

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16 Problema 1: [1 punto] Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16 Duración: 2,45 horas 10 PUNTOS Publicación de notas 26 de enero Revisión de examen 1 de febrero En el horario

Más detalles

Principal material bibliográfico utilizado

Principal material bibliográfico utilizado Vectores y Punteros Principal material bibliográfico utilizado www.jorgesanchez.net Fundamentos de Programación C/C++ - Ernesto Peñaloza Romero. Lenguaje C Adolfo Beltramo, Nélida Matas. En C el primer

Más detalles

Plantillas (Templates)

Plantillas (Templates) Programación Orientada o Objetos Plantillas (Templates) Univesidad de Los Andes - Facultad de Ingeniería Escuela de Sistemas Programación Digital II Profesor: Gilberto Diaz gilberto@ula.ve Plantillas Los

Más detalles

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos. / OBJETIVOS Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos. LABORATORIO 6 MANEJO DE ARCHIVOS DE TEXTO Y BINARIOS Msc. Walter Fernandez

Más detalles

Ejercicios de la sesión 4 de C resueltos

Ejercicios de la sesión 4 de C resueltos Ejercicios de la sesión 4 de C resueltos 1. Usando el procedimiento del ejercicio 2 del seminario anterior, escribe un programa que multiplique dos matrices A y B leídas de ficheros, la primera de tamaño

Más detalles

Lección 3 Sentencias de control

Lección 3 Sentencias de control 3.1. INTRODUCCIÓN - Hasta aquí: ejecución secuencial de los programas. - Aquí vamos a ver: Lección 3 Sentencias de control Sentencias de control Sentencias condicionales: if- y switch-case Sirven para

Más detalles

GESTIÓN DE MEMORIA DINÁMICA

GESTIÓN DE MEMORIA DINÁMICA UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y CC. Computación E.T.S.I. Telecomunicación GESTIÓN DE MEMORIA DINÁMICA Tema 3 Programación II Programación II 0 Tema 3: GESTIÓN DE MEMORIA DINÁMICA Tema 3: GESTIÓN

Más detalles

1. Juego del Ahorcado

1. Juego del Ahorcado Solución Ex. Junio 06 GrA - Programación C++ Pág. 1 1. JUEGO DEL AHORCADO...1 2. CLASES...3 1. Juego del Ahorcado #include #include #include #include void Jugar(char

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 5 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº5 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Trabajando

Más detalles

12.Arrays dinámicos. Ejemplo en C #include <stdio.h> #include <malloc.h> #include <string.h>

12.Arrays dinámicos. Ejemplo en C #include <stdio.h> #include <malloc.h> #include <string.h> 12.Arrays dinámicos. #include #include typedef struct char Nombre[80]; int Edad; Persona; typedef struct Persona* Gente; int NumPersonas; Personas; void IniPersonas (Personas* X)

Más detalles

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos Contenido Introducción...1 Objeto...2 Atributo...2 Métodos...2 Clase...3

Más detalles

Apuntadores (Punteros)

Apuntadores (Punteros) Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable

Más detalles

identificador: Es el nombre que le damos a la variable matriz y por el cual la referenciaremos en nuestro programa.

identificador: Es el nombre que le damos a la variable matriz y por el cual la referenciaremos en nuestro programa. Matrices La matriz es una estructura de datos básica dentro de los lenguajes de programación y conceptualmente son identicas a sus homónimas matemáticas. Por tanto una matriz es un conjunto de datos de

Más detalles

Maribel Martínez y Ginés Ciudad-Real Fichas para mejorar la atención MATRIZ DE LETRAS

Maribel Martínez y Ginés Ciudad-Real Fichas para mejorar la atención MATRIZ DE LETRAS MATRIZ DE LETRAS p q d b p p b n g b n w n w n n w b p q d b p q d n w n g b n p q p q p q d b p n g n g n g b n w n d b d b b p q d b b n b n n w n g b n p q p q p q d b p n g n g n g b n w n d b d b

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 2 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 2 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Reserva

Más detalles

Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas.

Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas. Fundamentos de Informática Lección 5. Arreglos (vectores) Curso 2010-2011 Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas. Índice de contenidos Arreglos: Concepto

Más detalles

Operadores de comparación

Operadores de comparación Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (

Más detalles

Sobre Carga de Operadores

Sobre Carga de Operadores Programación Orientada o Objetos Univesidad de Los Andes - Facultad de Ingeniería Escuela de Sistemas Programación Digital II Profesor: Gilberto Diaz gilberto@ula.ve Las operaciones tradicionales que se

Más detalles

EJEMPLOS DE ESTRUCTURAS EN C

EJEMPLOS DE ESTRUCTURAS EN C ASIGNATURA: EJEMPLOS DE ESTRUCTURAS EN C ALGORITMO Y ESTRUCTURA DE DATOS EJEMPLOS DE ESTRUCTURAS EN C 2012 D E P A R T A M E N T O D E COMPUTACIÓN UNAN-LEÓN ESTRUCTURAS EN C 1. Crear un programa que contenga

Más detalles

Esquema de un programa en C: bloques básicos

Esquema de un programa en C: bloques básicos Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,

Más detalles

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña Presentación Conceptos Avanzados de Programación :: Prof. Yeniffer Peña Unidad I: Conceptos Avanzados de Programación Recursividad: El concepto de recursividad va ligado al de repetición. Son recursivos

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 6 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 6 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Clase

Más detalles

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Directivas del procesador Main() { Declaraciones Definiciones proposiciones }

Más detalles

domingo, 24 de agosto de :28 a.m.

domingo, 24 de agosto de :28 a.m. 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 8 #define BD_OK 1 9 #define BD_ERROR 0 10 11 typedef unsigned char byte; 12 typedef unsigned

Más detalles

Solución - práctico 10

Solución - práctico 10 Solución - práctico 10 Complejidad Ejercicio 1 a) Una implementación del algoritmo es la siguiente: /* Procedimiento que se encarga de realizar la unión de los dos conjuntos * ordenados der1 e izq1 son

Más detalles

Informática II Vectores y Matrices

Informática II Vectores y Matrices UTN Facultad Regional Tucumán Informática II Vectores y Matrices Arreglos unidimensionales y multidimensionales en C Prof. Ing. Oscar Gálvez A.T.P. Ing. César Ovejero VECTORES Y MATRICES Arreglos unidimensionales

Más detalles

Resumen Lenguaje Java

Resumen Lenguaje Java Resumen Lenguaje Java Métodos (Subprogramas) Tipos de Métodos: con resultado y tipo void Definición 1. Método con resultado, retorna un solo valor, equivalente a los subprogramas tipo función tipo_de_dato_a_retornar

Más detalles

Matrices. Matrices Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas

Matrices. Matrices Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas 1 Matrices 2013 Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas 2 Objetivos Representar conjuntos de datos mediante matrices. Solucionar problemas utilizando matrices.

Más detalles

COMPILADORES ANALIZADOR SINTÁCTICO

COMPILADORES ANALIZADOR SINTÁCTICO COMPILADORES ANALIZADOR SINTÁCTICO EJERCICIO PRÁCTICO Hacer un programa en Visual C++, implementar la siguiente gramática. que permita ::= ::=

Más detalles

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática Tema 7 Fundamentos de Informática Índice 1. Qué es un vector? 2. Vectores unidimensionales 3. Cadenas de caracteres 4. Paso de vectores unidimensionales a funciones. 5. Vectores multidimensionales: matrices

Más detalles

E s c u e l a P o l i t é c n i c a S u p e r i o r d e E l c h e

E s c u e l a P o l i t é c n i c a S u p e r i o r d e E l c h e EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES (SOLUCIÓN PRÁCTICAS) La duración del examen es de 2 horas. JUNIO 2016 1. Escribir un programa en C++ y C,que mediante el uso de clases y métodos, pida al usuario

Más detalles

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda Árboles Árboles Mario Medina C. mariomedina@udec.cl Árboles Estructura recursiva Árbol vacío 0 o más árboles hijos Altura ilimitada Árbol binario A lo más dos hijos: izquierdo y derecho Árboles Árboles

Más detalles

Introducción al tipo de dato ARRAY

Introducción al tipo de dato ARRAY CONTENIDOS. Introducción al tipo de dato ARRAY. Definición, Características, Declaración, Acceso e Inicialización.. Arrays multidimensionales Definición, Declaración, Acceso e Inicialización. Introducción

Más detalles

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados

Más detalles

#include <stdio.h> /* Factorial de un número - versión 1- */

#include <stdio.h> /* Factorial de un número - versión 1- */ Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos desde teclado. Primera versión: /* Factorial de un número - versión 1- */ long int factorial (int x) /*definición de función*/ int

Más detalles

Guía de Referencia Rápida de C++ (std)

Guía de Referencia Rápida de C++ (std) Guía de Referencia Rápida de C++ (std) Programa C++ // Inclusión de bibliotecas // Utilización de espacios de nombre // Definición de Constantes y Tipos // Definición de subprogramas // cuerpo del programa

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 11 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº11 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Clase

Más detalles

Curso 0 de Informática

Curso 0 de Informática Curso 0 de Informática 2015-2016 Tema 1: Introducción a la Informática y Conceptos básicos 1 Motivación (I): En los procesos industriales, cada vez es mayor el uso de sistemas informáticos para: Monitorización,

Más detalles

Programación en C++ L.I Gerardo Benavides Pérez

Programación en C++ L.I Gerardo Benavides Pérez Programación en C++ L.I Gerardo Benavides Pérez Historia El nombre C++ es también de ese año, y hace referencia al carácter del operador incremento de C (++). Como lenguaje orientado a objetos se basa

Más detalles

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Sincronización de Threads

Sincronización de Threads Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)

Más detalles

PROBLEMAS DEL TEMA 8: Estructuras de Datos Complejas

PROBLEMAS DEL TEMA 8: Estructuras de Datos Complejas PROBLEMAS DEL TEMA 8: Estructuras de Datos Complejas EJERCICIOS RESUELTOS 1. Diseñar un programa que lee las calificaciones de un alumno en 5 asignaturas, las almacene en un vector y calcula e imprime

Más detalles

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Empresa Videojuegos (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Rectangulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso 2014-2015. Notas. Ejemplo. La herramienta make. 1 Diseño modular.

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso 2014-2015. Notas. Ejemplo. La herramienta make. 1 Diseño modular. : Programación 2 Curso 2014-2015 Índice 1 2 3 (1/2) Cuando el programa crece es necesario dividirlo en módulos Cada módulo agrupa una serie de funciones con algo en común El módulo puede reutilizarse en

Más detalles

ÁRBOLES PARCIALMENTE ORDENADOS

ÁRBOLES PARCIALMENTE ORDENADOS ÁRBOLES PARCIALMENTE ORDENADOS INTRODUCCIÓN - Un árbol A se dice parcialmente ordenado (APO) si cumple la condición de que la etiqueta de cada nodo es menor (de igual forma mayor) o igual que las etiquetas

Más detalles

1. Ejemplo de clase: La clase Disco 2. Ejemplo de clase: La clase Colección. 3. Relación entre clases: Clientismo

1. Ejemplo de clase: La clase Disco 2. Ejemplo de clase: La clase Colección. 3. Relación entre clases: Clientismo 1. : La clase 2. : La clase Colección 3. Relación entre clases: Clientismo 1 Una clase para modelar el tipo de dato disco Vamos a modelar con una clase, un nuevo tipo de datos, donde los elementos de la

Más detalles

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1). ÁRBOL BINARIO - Un árbol binario puede definirse como un árbol que en cada nodo puede tener como mucho grado 2, es decir, a lo más 2 hijos. Los hijos suelen denominarse hijo a la izquierda e hijo a la

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Programación estructurada Estructuras condicionales La sentencia if La cláusula else Encadenamiento y anidamiento El operador condicional?: La sentencia switch Estructuras repetitivas/iterativas

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 5 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 5 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Mi

Más detalles

Tipos de Datos Estructurados

Tipos de Datos Estructurados Departamento de Informática Universidad Técnica Federico Santa María Tipos de Datos Estructurados Programación de Computadores IWI-131-p1 Prof.: Teddy Alfaro Olave Arreglos (array) El arreglo es un tipo

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 5 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 5 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: clase

Más detalles

Introducción a la Ingeniería de la Programación. Carlos Platero C-305

Introducción a la Ingeniería de la Programación. Carlos Platero C-305 Introducción a la Ingeniería de la Programación Carlos Platero (carlos.platero@upm.es) C-305 Introducción a la Ingeniería del Software Aplicaciones SW: Industrial, Telecomunicaciones, ocio, Medicina,...

Más detalles

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL Clase No. 5: Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL MAT 251 Dr. Alonso Ramírez Manzanares CIMAT, A.C. e-mail: alram@ cimat.mx

Más detalles

MANUAL DE REFERENCIA DE C++

MANUAL DE REFERENCIA DE C++ MANUAL DE REFERENCIA DE C++ UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA DE SISTEMAS E INDUSTRIAL BOGOTÁ D.C. 2009 Objetivo: Brindar a los estudiantes del curso de

Más detalles

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS TEMA 4. - La Estructura de datos Árbol 4.1. Árboles, definiciones 4.2 Árboles binarios y su representación 4.3 Operaciones básicas de un árbol binario

Más detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.

Más detalles

Ejercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++:

Ejercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++: Ejercicios De Programación De C++ 1. Muestre en pantalla el mensaje Bienvenido. Algoritmos 1. Inicio 2. muestrer en pantalla el mensaje Bienvenido 3. Fin Lenguaje De Programación C++: #include

Más detalles

GUIA DE LABORATORIO # 13 Arreglos unidimensionales y bidimensionales

GUIA DE LABORATORIO # 13 Arreglos unidimensionales y bidimensionales OBJETIVO GUIA DE LABORATORIO # 13 Arreglos unidimensionales y bidimensionales Entender el concepto y funcionamiento de los arreglos Realizar programas en C, haciendo uso de arreglos, a través de su recorrido

Más detalles

C. Listado de programas.

C. Listado de programas. C. Listado de programas. C.1. Módulos de traducción. C.1.1. Módulo para tildado con rasgos letras. #include #include #include #include "portable.h" #include "portimpr.h"

Más detalles

Listas. Rafael Palacios May/2005

Listas. Rafael Palacios May/2005 Listas Rafael Palacios May/2005 Descripción Las listas son estructuras de datos parecidas a los vectores Aprovechan la memoria mejor que los vectores Facilitan las operaciones de inserción y borrado No

Más detalles

Grado en Ingeniería Informática. Estructura de Datos y Algoritmos, Grupo 84M, 2014/ de Marzo de

Grado en Ingeniería Informática. Estructura de Datos y Algoritmos, Grupo 84M, 2014/ de Marzo de Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 84M, 2014/2015 12 de Marzo de 2015 Nombre y Apellidos:... PROBLEMA 1 (1 punto) Programación Orientada a Objetos. Una empresa de alquiler

Más detalles

PRACTICA 4. MANEJO DE ARCHIVOS II

PRACTICA 4. MANEJO DE ARCHIVOS II PRACTICA 4. MANEJO DE ARCHIVOS II OBJETIVO Realizar un programa que, de un archivo e texto, cuente cuantas palabras tiene y cuantas se repiten. MARCO TEORICO En este programa lo que deseamos realizar es

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

TEMA 5: Subprogramas. Programación modular EJERCICIOS DE TRAZAS

TEMA 5: Subprogramas. Programación modular EJERCICIOS DE TRAZAS TEMA 5: Subprogramas. Programación modular EJERCICIOS DE TRAZAS 1.- Escribir la traza y decir que imprime por pantalla cada uno de los siguientes programas: a.- /* Ejercicio de traza 1 */ int a, b, c;

Más detalles

ALMACENAMIENTO PERSISTENTE DE DATOS

ALMACENAMIENTO PERSISTENTE DE DATOS UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y CC. Computación E.T.S.I. Telecomunicación ALMACENAMIENTO PERSISTENTE DE DATOS Tema 1 Programación II Programación II 0 Tema 1: ALMACENAMIENTO PERSISTENTE DE DATOS

Más detalles

7.3. Estructura de un programa

7.3. Estructura de un programa TEMA 7 ALGORITMOS Y PROGRAMAS. ESTRUCTURA DE UN PROGRAMA 7.1. Algoritmos 7.2. Compilación 7.3. Estructura de un programa 7.1. Algoritmos Objetivo: Resolver problemas mediante computadoras (usando el lenguaje

Más detalles

Taller de Programación I. Tema 04: Arreglos y Matrices en Java

Taller de Programación I. Tema 04: Arreglos y Matrices en Java INACAP Universidad Tecnológica de Chile Sede Santiago Centro Taller de Programación I Curso Java J2SE Tema 04: Arreglos y Matrices en Java Ing. Manuel López Ramos (versión 2) Parte I Arreglos en Java Arreglos

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Punteros. Programación en C 1

Punteros. Programación en C 1 Punteros Programación en C 1 Índice Variables y direcciones de memoria. Punteros definición, declaración e inicialización. Punteros declaración, asignación y dereferencia. Puntero nulo, tipo void. Aritmética

Más detalles

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro: LABORATORIO #6 (Parte I y II) REGISTROS Y ARCHIVOS Parte I: Registros Un registro es una estructura de datos formado por un conjunto de elementos llamados campos, no necesariamente del mismo tipo y que

Más detalles

Punteros. Lenguaje C ANSI

Punteros. Lenguaje C ANSI Punteros. Lenguaje C ANSI Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección

Más detalles

Fundamentos de programación

Fundamentos de programación Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador

Más detalles

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION CICLO: 02/ 2012 Nombre de la Practica: Lugar de Ejecución: Tiempo Estimado: MATERIA: GUIA DE LABORATORIO #08 Uso de Arreglos

Más detalles

PROGRAMACIÓN ESTRUCTURADA

PROGRAMACIÓN ESTRUCTURADA PROGRAMACIÓN ESTRUCTURADA MATRICES ARREGLOS BIDIMENSIONALES Matrices 1 INTRODUCCIÓN Supóngase que se tiene la siguientes calificaciones de los alumnos de Pseudocodigo de la sec. 107 arreglados de la siguiente

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 2 de septiembre de 2015 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Tema 18: Memoria dinámica y su uso en C

Tema 18: Memoria dinámica y su uso en C Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

Tema 2. Tipos y Estructuras Básicas

Tema 2. Tipos y Estructuras Básicas Tema 2. Tipos y Estructuras Básicas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de

Más detalles

Estructura de Datos: Lista. Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras. Autora: Prof.

Estructura de Datos: Lista. Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras. Autora: Prof. Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras Estructura de Datos: Lista Autora: Lunes a viernes de 9 a 21 h. Torre Universitaria, Zabala 1837, primer nivel inferior.

Más detalles

1 Primitivas básicas de OpenMP

1 Primitivas básicas de OpenMP 1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas

Más detalles

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17 Archivos

Más detalles

SEGUNDO PARCIAL INFORMATICA II

SEGUNDO PARCIAL INFORMATICA II SEGUNDO PARCIAL INFORMATICA II Tema 1 Hacer un programa en C++ que realice lo siguiente: a. Generar los primeros 100 números enteros comenzando en 1 y guardar los impares en una pila y los pares en una

Más detalles

TEMA 4. ESTRUCTURAS DE CONTROL

TEMA 4. ESTRUCTURAS DE CONTROL M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.

Más detalles

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org>

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org> El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya EJERCICIOS: OPERACIONES CON ARREGLOS MULTIDIMENSIONALES Qué se muestra en pantalla cuando se ejecutan las sentencias de cada uno de los casos siguientes: ) int n,m; int producto[][]; for(n; n

Más detalles

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación 1 Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera Fundamentos de programación Agenda Caracteres y Cadenas Conversión de Datos Introducción a las funciones y procedimientos

Más detalles

Titulo: Calculo de PI

Titulo: Calculo de PI Titulo: Calculo de PI Realizar un programa que calcule una aproximación al número PI, mediante el sumatorio de los 100.000 primeros términos de la serie (y finalmente multiplicada por 4): Nota: Utilicese

Más detalles

2. Problema de Algoritmia (5 puntos - 15 minutos)

2. Problema de Algoritmia (5 puntos - 15 minutos) APELLIDOS NOMBRE Nº Mat. UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Y DISEÑO INDSUTRIAL Departamento de Ingeniería Eléctrica, Electrónica, Automática y Física Aplicada 2.

Más detalles

Fundamentos de la programación

Fundamentos de la programación Fundamentos de la programación 8A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Facultad de Informática Universidad Complutense ventas.cpp #include

Más detalles