Está en la página 1de 12

LABERINTO EN C++

Jholver Jos Hoyos Niebles Cdigo: 234437 Carlos Eduardo Caldas Garca Cdigo: 23441

!rese"#ado a: $"g% Jai&e 'e()lveda Caro !rogra&aci" *e Co&(u#adores

+N$,E-'$*.* N.C$/N.0 *E C/0/12$. 'ede 2ogo#3 4acul#ad de $"ge"iera 15 de 6u"io de 2 7

CONTENIDO

$"#roducci" 1. /b6e#ivos 1.1. /b6e#ivo Ge"eral 1.2. /b6e#ivos Es(ec8icos 2. *escri(ci" del (roble&a 3. 1e#odologa 3.1. ."3lisis del (roble&a 3.2. Es(eci8icaci" del (roble&a 3.3. *ise9o del algori#&o 3.4. Codi8icaci" 3.5. !rueba 4. -e8ere"cias 2ibliogr38icas

1. OBJETIVOS 1.1. OBJETIVO GENERAL Crear u" cdigo e" le"gua6e c:: ;ue ge"ere u" laberi"#o a (ar#ir de u"a &a#ri< de N=N> la cual co"#ie"e u"os y ceros> y lo recorra has#a ;ue e"cue"#re u"a salida ?'u(o"ie"do ;ue e=is#a@ 1.2. OBJETIVOS ESPECIFICOS Crear la &a#ri< cuadrada de N colu&"as y lle"arla co" u"os y ceros de #al 8or&a ;ue el laberi"#o ge"erado (or es#a "o se re(i#a ?'u co"8iguraci" debe ser alea#oria@% +sar u"a 8u"ci" o (rocedi&ie"#o ;ue recorra el laberi"#o ge"erado% 1os#rar el laberi"#o ge"erado% Gara"#i<ar ;ue las (osicio"es e" ;ue se e"cue"#re" ceros sea" #odas recorridas sie&(re y cua"do e=is#a u"a #rayec#oria% El (rogra&a debe decir al 8i"al si el laberi"#o #ie"e o "o salida y &os#rar (aso (or (aso el recorrido e" su i"#erior%

2. DESCRIPCION DEL PROBLEMA N/12-E *E0 !-/AECB/: LABERINTOS 'e #ra#a de reali<ar u" (rogra&a e" C:: ;ue i&(ri&a u" laberi"#o y &ues#re (aso a (aso al usuario los &ovi&ie"#os ;ue se hace" (ara e"co"#rar la salida% 0a co"8iguraci" del laberi"#o debe ser alea#oria% Requisi !s" El ob6e#ivo del (royec#o es dise9ar e i&(le&e"#ar u" (rogra&a ;ue realice las siguie"#es #areas: 0ea la di&e"si" ?lo"gi#ud del lado@ del laberi"#o ?N@% Co" la di&e"si" a"#erior ge"erar la &a#ri< N=N> ;ue co"#e"ga u" laberi"#o ;ue cu&(la las siguie"#es co"dicio"es: o *ebe es#ar co"#e"ido e" u"a &a#ri< N=N. o *icha &a#ri< co"#ie"e e" sus celdas los ")&eros u"o ?1@ y cero ? @> ;ue re(rese"#a" los &uros del laberi"#o y las #rayec#orias (osibles> res(ec#iva&e"#e% !or o#ro lado> debe i"8or&ar cual es la (osici" i"icial del laberi"#o ?*e do"de co&ie"<a a ava"<ar@% Co&o se haba dicho a"#es la co"8iguraci" de los laberi"#os debe ser alea#oria> es decir> "u"ca se debe des(legar el &is&o laberi"#o% 1os#rar el laberi"#o ge"erado% Crear u"a 8u"ci" o (rocedi&ie"#o ;ue recorra el laberi"#o ge"erado% Es#a 8u"ci" deber3 recibir co&o argu&e"#os la &a#ri< N=N ;ue re(rese"#a el laberi"#o y la (osici" i"icial% Co"8or&e su 8u"ci" i"#e"#a locali<ar la salida del laberi"#o deber3 colocar u" car3c#er C=D> e" cada u"o de los cuadros de la #rayec#oria% *es(us de cada &ovi&ie"#o la 8u"ci" debe &os#rar el laberi"#o> (ara ;ue el usuario (ueda observar el recorrido reali<ado% .l 8i"al se debe i"8or&ar si e=is#e o "o la #rayec#oria de salida> ade&3s del "u&ero de (asos reali<ados> y u" lis#ado de cada u"o de ellos i"dica"do la direcci" de cada u"o ?I#$%IERDA& DEREC'A& ARRIBA& ABAJO(% 3. METODOLOGIA 3.1. ANALISIS DEL PROBLEMA !ara abordar la si#uaci" (la"#eada de u"a &a"era lgica> (ri&ero se de#er&i"o el #i(o de (roble&a al ;ue (er#e"eca e" es#e caso> seg)" lo vis#o e" el &odulo 1% 0a co"clusi" a la ;ue se llego es ;ue e8ec#iva&e"#e el (roble&a es soluble> (ues sabe&os de a"#e&a"o (or se"#ido co&)" yEo e=(erie"cias (erso"ales ;ue es (osible de#er&i"ar u"a #rayec#oria ;ue "os lleve al 8i"al de u" laberi"#o siguie"do u"as se"cillas i"s#ruccio"es%

'i" e&bargo> #a&bi" es co"ocido ;ue "o #odos los laberi"#os #ie"e" u"a salida% !ero lo i&(or#a"#e es reali<ar el recorrido de u"a 8or&a programada. .hora bie"> u"a de las sugere"cias hechas e" el (roble&a &is&o co"sis#e e" u"a 8or&a se"cilla de lograr llegar al o#ro e=#re&o del laberi"#o> au";ue "o sea la &3s e8ec#iva% *icha sugere"cia co"sis#e e" recorrer el laberi"#o sie&(re a &a"o derecha> de #al 8or&a ;ue si "o e=is#e #rayec#oria ;ue lleve al (u"#o 8i"al del laberi"#o> se #er&i"ara llega"do al (u"#o de (ar#ida% Co" es#as a"o#acio"es basa&os la i"#er(re#aci" ;ue le di&os al (roble&a (la"#eado% 3.1.1. Ge)e*+,i-+-es . *es *i//i!)es -e, 0*!1*+2+" El laberi"#o debe co"#e"er solo u"a e"#rada% *ebido a la di8icul#ad de ge"erar laberi"#os alea#oria&e"#e> es &3s co"ve"ie"#e "o res#ri"gir el ")&ero de salidas e=is#e"#es e" el laberi"#o% 0a &a#ri< debe ser declarada co&o e"#era% !ara hacer ;ue sea &3s (robable ge"erar laberi"#os co" #rayec#oria de salida> se ha (e"sado e" gara"#i<ar des(us del (ri&er cero> o#ro cero e" la (osici" siguie"#e> ;ue corres(o"de a la colu&"a adyace"#e% 0a (osici" i"icial es el (ri&er cero ;ue se e"cue"#re> u"a ve< e=is#a se hace ;ue e" las de&3s casillas de la colu&"a cero de la &a#ri< se al&ace"e el valor u"o% !ara de#er&i"ar la #rayec#oria lo ;ue se hace es veri8icar ;ue casillas adyace"#es e" las ;ue se (er&i#a &overse> co"#e"ga" cero> y u"a ve< co&(robado> se (asa a esa casilla% Es#a veri8icaci" se lleva a cabo sie&(re hacia la derecha% E" es#e caso corres(o"de al siguie"#e orde": o !ri&ero> aba6o% o 'egu"do> al 8re"#e ?derecha@% o Bercero> arriba% o Cuar#o> i<;uierda% 0os &ovi&ie"#os ;ue se (uede" reali<ar e" la &a#ri< del laberi"#o so" rec#os> es decir> "o se (uede" hacer &ovi&ie"#os e" diago"al> "i o#ros solo los de8i"idos (or las 8lechas :

*e8i"i&os co&o (osicio"es (osibles> a las casillas del laberi"#o a las ;ue se (ueda des(la<ar desde u"a (osici"> solo co" los &ovi&ie"#os a"#erior&e"#e e=(licados%

3.2. ESPECIFICACION DEL PROBLEMA *eclara&os las siguie"#es variables: N: Nu&ero de colu&"as de la &a#ri<

ENTRADAS SALIDAS

N> N)&ero e"#ero% 1a#ri< FNG FNG> !osici" i"icialF=G FyG> (osicio"es rela#ivas> #rayec#oriaH .rreglos &ul#idi&e"sio"ales y (osicio"es e" arreglo% 0a &a#ri< #ie"e u"a de(e"de"cia casi ;ue "ula del ")&ero de 8ilas> ya ;ue su co"8iguraci" es alea#oria%

C!)-i/i!)es

Di+1*+2+ De C+3+ Ne1*+

1a#ri< FNG FNG .0G/-$B1/ Brayec#oria !osici" i"icial

3.3. DISE4O DEL ALGORITMO P*i2e*+ I e*+/i5)" I)i/i! 1. 0eer el ")&ero de colu&"as de la &a#ri<% 2. Crear u" (rocedi&ie"#o ;ue ge"ere lle"e la &a#ri< y i&(ri&a% 3. Ge"erar u"a 8u"ci" o (rocedi&ie"#o ;ue recorra la &a#ri< e i&(ri&a la #rayec#oria si&ul#3"ea&e"#e% Se1u)-+ I e*+/i5)" I)i/i! 1. 0eer el ")&ero de colu&"as de la &a#ri<% 2. Crear u" (rocedi&ie"#o ;ue lle"e la &a#ri< y la i&(ri&a% 2.1. Hacer dos 8or (ara ;ue recorra" la &a#ri<

2.2. $r asig"a"do los valores alea#orios de u"os y ceros a la &a#ri< e" cada (osici"> &edia"#e la 8u"ci" sra"d y ra"d ?@% 2.3. $&(ri&ir la &a#ri< ge"erada% 3. Ge"erar u"a 8u"ci" o (rocedi&ie"#o ;ue recorra la &a#ri< e i&(ri&a la #rayec#oria si&ul#3"ea&e"#e% 3.1. *e#er&i"ar la (osici" i"icial% 3.2. 2uscar e" las (osicio"es (osibles el "u&ero cero ? @% 3.3. !asar a esa (osici"% 3.4. $&(ri&ir I=J e" la (osici" a"#erior% %, i2+ I e*+/i5)" I)i/i! 1. 0eer el ")&ero de colu&"as de la &a#ri<% 2. Crear u" (rocedi&ie"#o ;ue lle"e la &a#ri< y la i&(ri&a% 2.1. Hacer dos for (ara ;ue recorra" la &a#ri< 2.2. $r asig"a"do los valores alea#orios de u"os y ceros a la &a#ri< e" cada (osici"> &edia"#e la 8u"ci" sra"d y ra"d ?@% 2.3. $&(ri&ir la &a#ri< ge"erada% 3. Ge"erar u"a 8u"ci" o (rocedi&ie"#o ;ue recorra la &a#ri< e i&(ri&a la #rayec#oria si&ul#3"ea&e"#e% 3.1. *e#er&i"ar la (osici" i"icial% 3.2. 2uscar e" las (osicio"es (osibles el ")&ero cero ? @% 3.2.1. Hacer u" while ;ue se e6ecu#e &ie"#ras "o se llegue a la ul#i&a colu&"a 3.2.1.1. +sar if a"idados (ara buscar ceros e" las cua#ro (osicio"es (osibles% 3.2.1.2. !asar a esa (osici"% 3.2.1.3. $&(ri&ir I=J e" la (osici" a"#erior% Fi)

3.4 CODIFICACION 0o (ri&ero ;ue (rocedi&os a reali<ar 8ue la declaraci" de la variable N co&o e"#era y (os#erior&e"#e lla&a&os la 8u"cio" llenar ;ue es do"de asig"a&os los valores alea#orios de ceros y u"os a la &a#ri<% Es#o lo logra&os a (ar#ir de u"a co"sul#a bibliogra8ica% E" ella e"co"#ra&os ;ue e=is#e u"a 8u"cio" ;ue (er&i#e leer la hora del sis#e&a co" u"a se&illa> lo cual hace ;ue se ge"ere" "u&eros alea#orios% 'i" e&bargo> ada(#a&os es#a 8u"cio" a "ues#ras "ecesidades> es decir> (ara ;ue ge"erara "u&eros e"#eros alea#orios (ero e"#re y 1% s*+)-6 i2e6N%LL((7 K 8+,!*9+:+* ; *+)-6(7L

Es#a 8u"c#io" ge"era "u&eros alea#orios de cual;uier #i(o% 'i" e&bargo> e=is#e u"a 8or&ula ge"eral ;ue (er&i#e &odi8icar el ra"go de "u&eros ;ue se ge"erea": ++*+)-6(<6=+1>+( *o"de a es el "u&ero &e"or y b es el &ayor% Co&o e" es#e caso solo "ecesi#a&os u"os y ceros> la 8u"cio" ;ueda asi: s*+)-6 i2e6N%LL((7 K 8+,!*9+:+* ; *+)-6(<27L %1 Evide"#e&e"#e asi "o va&os a u#ili<ar la 8u"c#io" e" el (rogra&a> solo es u" e6e&(lo (ara ;ue el lec#or co&(re"da el orige" de es#a e=(resi" ;ue se vera a co"#i"uaci" i"# lle"ar?i"# "@ Ki"# &a#ri<F"GF"GH sra"d?#i&e?N+00@@H 8or ?i"# iM H iN"H i::@ K 8or ?i"# 6M H 6N"H 6::@ K &a#ri<FiGF6GMra"d?@O2H L i8 ?iP QQ &a#ri<FiR1GF GMM @K&a#ri<FiR1GF1GM HL L 8or ?i"# iM H iN"H i::@ K 8or ?i"# 6M H 6N"H 6::@Kcou#NN&a#ri<FiGF6GNNS SHL cou#NNST"SH L ge#ch?@H i"# &ai" ?@ K i"# NH cou#NNS*igi#e el "u&ero de colu&"as de la &a#ri<T"SH ci"PPNH lle"ar ?N@H sys#e&?S(auseS@H re#ur" H L . co"#i"uaci" se &ues#ra lo ;ue se ge"era a (ar#ir de es#e codigo:

?1@C++ 0+*+ I)1e)ie*A+ . Cie)/i+sB C++ C!* S/ie)/e A)- E)1i)ee*i)1. P+1 35D> 353. S emilla y generacin de nmeros pseudoaleatorios.

No#ese ;ue a;u au" "o se ha gara"#i<ado el cero des(us de la (osici" i"icial% 'e ;ueria crear la 8u"cio" ;ue recorriera la &a#ri<> co&o se habia a"u"ciado desde el (ri"ci(io% 'i" e&bargo> al e=is#ir (roble&as co" el (aso de &a#rices co&o (ar3&e#ros a 8u"cio"es> es#o "o (udo ser (osible% !or ello> o(#a&os (or i"cluir el codigo de la #rayec#oria de la &a#ri< de"#ro de la 8u"cio" llenar. EEeste es el codigo que recorre el laberinto y lo imprime i"# cM ><M Hi"# &a#F2GF"U"GH i"# acM H i"# V> #H cou#NNe"dlH i"# au=H While ??cXM?"R1@@QQ?acN?"U"@@@EEmientras no llegue a la columna final K i8 ?&a#ri<F8:1GFcGMM @EEse busca en la posicion de abajo de la inicial un cero K &a#F GF<GM8H &a#F1GF<GMcH &a#ri<F8GFcGM3H

8::H <::HL else EEsi no existe busca el cero en la posicion de la derecha K i8?&a#ri<F8GFc:1GMM @ K&a#ri<F8GFcGM3H &a#F GF<GM8H &a#F1GF<GMcH 8M8H c::H <::H L else KEEbusca el cero en la posicion de arriba i8 ?&a#ri<F8R1GFcGMM @ K &a#ri<F8GFcGM3H &a#F GF<GM8H &a#F1GF<GMcH 8M8R1H cMcH <::H L ElseEEbusca el cero en la posicion izquierda de la inicial K i8?&a#ri<F8GFcR1GMM @ K&a#ri<F8GFcGM3H &a#F GF<GM8H &a#F1GF<GMcH

8M8H cMcR1H <::H L ElseEEsi no encuentra ningun cero es porque no hay salida y se devuelve K &a#ri<F8GFcGM3H <M<R1H i8?<P @K

8M&a#F GF<GH cM&a#F1GF<GH ac::H L L L L L sys#e&?SclsS@H EE se limpia la pantalla para imprimir la trayectoria y el laberinto 8or ?i"# VM H VN"H V::@ K 8or ?i"# #M H #N"H #::@K i8?&a#ri<FVGF#GMM3@Kcou#NNS=SNNS SH i8??&a#ri<FVGF"R2GMM3@QQ?&a#ri<FVGF"R1GMM @@K&a#ri<FVGF"R1GM3HL L else Kcou#NN&a#ri<FVGF#GNNS SHL EEse imprime la matriz y el recorrido L cou#NNST"SH L 'lee(?Y L L 3.5 PR%EBA 0a (rueba 8i"al "os &ues#ra los siguie"#e: @HEEesta funcion hace que se imprima cada cierto tiempo, entre mas grande //sea el parametro, la impresin sera mas lenta

BIBLIOGRAFEA F1GC:: (ara $"ge"iera y Cie"ciasE C:: 8or 'cie"ce ."d E"gi"eeri"g% !ag 3Y R 3Y3%tema: semilla y generacin de n meros pseudoaleatorios.

También podría gustarte