Sie sind auf Seite 1von 5

INFORME DE PRCTICA 7: TIPOS DE DATOS DERIVADOS

Autor: EDUARDO PANERO ARAUZO

CDIGO DE LA PRCTICA
#include <mpi.h> #include <stdio.h> #define N 8 int main(int argc, char *argv[]) int rango! char ta"lero[N][N]! char pie#as[8] $ %&%,%'%,%(%,%)%,%*%,%(%,%'%,%&%+! char peon $ %,%! int vector-long[./]! 0,1-1nit(2argc,2argv)! 0,1-3omm-ran4(0,1-3500-65789,2rango)! ::9efinimos los tipos de datos (negras, "lancas ; despla#amiento). 0,1-9atat;pe negras! 0,1-9atat;pe "lancas! 0,1-<int despl-(lancas[./] $ =,/,>,?,@,AA,A.,AB,A?,A8,/=,//,/B,/C,/@,.A,./,.>, .?,.8,>A,>.,>B,>C,>8,B=,B/,B>,BC,B@,?A,?.+! 0,1-<int despl-Negras[./] $ A,.,B,C,8,A=,A/,A>,AC,A@,/A,/.,/>,/?,/8,.=,..,.B, .C,.@,>=,>/,>>,>?,>@,BA,B.,BB,B?,B8,?=,?/+! 0,1-9atat;pe vector-tipos[./]! :* 1niciamos el valor para las estructurasD vector-longD 3ontiene el nEmero de elementos de cada el elemento del vector, en esta caso A vector-tiposD 3ontiene el tipo de dato del 0,1, este caso utili#a 0,1-3'<7 despl-((lancas F Negras)D 3ontiene el despla#amiento de las casillas, multiplicado por el tamaGo de un char. *: for(int i$=!i<./!iHH) vector-long[i]$A! vector-tipos[i]$0,1-3'<7! despl-(lancas[i]$despl-(lancas[i]*si#eof(char)! despl-Negras[i]$despl-Negras[i]*si#eof(char)! + ::1niciamos las estructuras 0,1-&;pe-struct(./,vector-long,despl-(lancas,vector-tipos,2negras)! 0,1-&;pe-commit(2negras)! 0,1-&;pe-struct(./,vector-long,despl-Negras,vector-tipos,2"lancas)! 0,1-&;pe-commit(2"lancas)! if (rango$$=) ::Ii el rango es =, rellenamos las matrices. for (int i$=!i<N!iHH) for (int J$=!J<N!JHH) ta"lero[i][J] $ % %! for (int i$=!i<N!iHH) ::7ellenamos las pie#as. ta"lero[=][i]$pie#as[i]! ta"lero[A][i]$peon! ta"lero[C][i]$pie#as[i]! ta"lero[?][i]$peon! + ::Knviamos la matri# ta"lero, con el filtro de las casillas 0,1-Iend(ta"lero,A,"lancas,A,=,0,1-3500-65789)!

0,1-Iend(ta"lero,A,negras,/,=,0,1-3500-65789)! + else if (rango$$A) ::8impiamos las casillas for (int i$=!i<N!iHH) for (int J$=!J<N!JHH) ta"lero[i][J] $ % %! ::7eci"imos el ta"lero 0,1-7ecv(ta"lero,A,"lancas,=,=,0,1-3500-65789,0,1-I&<&LI-1MN57K)! ::1mprimimos el ta"lero printf(N1mpresiOn (lancasPnN)! printf(NHQHQHQHQHQHQHQHQHPnN)! for (int i$=!i<N!iHH) for (int J$=!J<N!JHH) printf(NFRcN,ta"lero[i][J])! printf(NFPnHQHQHQHQHQHQHQHQHPnN)! + + else if (rango$$/) ::8impiamos las casillas for (int i$=!i<N!iHH) for (int J$=!J<N!JHH) ta"lero[i][J] $ % %! ::7eci"imos el ta"lero 0,1-7ecv(ta"lero,/,negras,=,=,0,1-3500-65789,0,1-I&<&LI-1MN57K)! ::1mprimimos el ta"lero printf(NPn1mpresiOn NegraPnN)! printf(NHQHQHQHQHQHQHQHQHPnN)! for (int i$=!i<N!iHH) for (int J$=!J<N!JHH) printf(NFRcN,ta"lero[i][J])! printf(NFPnHQHQHQHQHQHQHQHQHPnN)! + + 0,1-Sinali#e()! return =! +

CUESTIONES
En la practica realizada que problemas aparecen si se realiza reserva dinmica de memoria para crear espacio para las matrices?como afecta esto a la definicin de nuevos tipos de datos? El problema es que a la hora de reservar y acceder a los datos de las matrices, estos deben estar definidos de manera secuencial. Cuando introducimos un nuevo tipo de datos en la matriz, estamos filtrando estos datos, de manera que podran quedar en direcciones de memoria no secuencial. Existen aplicaciones en las que para realizar una operacin sobre una submatriz es necesario disponer de los elementos que la rodean(una fila y columna alrededor por ejemplo), aunque no se modifiquen !mo podr"a adaptarse la prctica para esto sea posible? En este caso de prctica, estamos trabajando en todo momento con matrices completas, las cuales son rellenadas por diferentes procesos. Otra opcin, la planteada en esta caso, es que cada proceso trabajase con submatrices, para lo cual habra que adaptar el vector de desplazamiento, ya que cada proceso al operar en una submatriz, tiene que obviar los datos que le rodean, aunque necesite disponer de ellos. #lantea otra situaciones en las que sea de utilidad la definicin de tipos de datos derivados e pueden encontrar estos ejemplo en los jue!os de mesa como el " en raya.

DIAGRAMA DE FLUJO

Das könnte Ihnen auch gefallen