ANEXO I. Implementación en C++ del algoritmo del árbol de búsqueda de estados
|
|
- María José Castilla Giménez
- hace 6 años
- Vistas:
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++ 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
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
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
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
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
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
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
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*/
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
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*
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
Operadores de comparación
Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (
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
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
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,
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
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
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 }
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
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
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
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
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.
COMPILADORES ANALIZADOR SINTÁCTICO
COMPILADORES ANALIZADOR SINTÁCTICO EJERCICIO PRÁCTICO Hacer un programa en Visual C++, implementar la siguiente gramática. que permita ::= ::=
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
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
Á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
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
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
#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
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
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
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,
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
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
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)
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
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
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
Á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
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
Á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
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
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
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
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
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,...
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
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
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
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.
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
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
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"
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
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
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
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í
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;
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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.
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
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
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
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
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.
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