por favor no cambies el subject asi queda todo ordenadito, la pregunta y las respuestas.<br>David<br><br><div class="gmail_quote">El 11 de noviembre de 2009 07:35, mil100 <span dir="ltr"><<a href="mailto:atltras@gmail.com">atltras@gmail.com</a>></span> escribió:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hola.<br>
He leido el código un poco por encima y lo que observo es lo siguiente:<br>
<br>
        *Puede que este no sea el problema, pero para iterar sobre el<br>
        vector mediante bulces for o while, yo usaría un<br>
        vector::iterator.<br>
<br>
        *Respecto a que la clase no este accesible para las demás<br>
        funciones puede deberse a que los prototipos de las funciones le<br>
        dicen al compilador que van a usar una clase que este no conoce<br>
        hasta el momento, debido a que la has declarado después de los<br>
        prototipos.<br>
        Prueba a colocar el código de la clase nodo antes de los<br>
        prototipos.<br>
<br>
Un saludo espero haber sido de ayuda.<br>
<br>
><br>
> ------------------------------<br>
><br>
> Message: 2<br>
> Date: Tue, 10 Nov 2009 18:32:05 -0600<br>
> From: David Reza <<a href="mailto:l.fix3r.l@gmail.com">l.fix3r.l@gmail.com</a>><br>
> Subject: [C con Clase] Ayuda con la plantilla <vector><br>
> To: "Lista de correo sobre C y C++" <<a href="mailto:cconclase@listas.conclase.net">cconclase@listas.conclase.net</a>><br>
> Message-ID:<br>
>       <<a href="mailto:fe9a00e10911101632v796f2a0cmd1f6563e1fb6032a@mail.gmail.com">fe9a00e10911101632v796f2a0cmd1f6563e1fb6032a@mail.gmail.com</a>><br>
> Content-Type: text/plain; charset="iso-8859-1"<br>
><br>
> Hola a todos, me gustaría que me ayudaran a explicarme un poco el código que<br>
> hice sobre el problema de las 3 jarras. Lo que sucede es que casi no sé<br>
> mucho de clases y me da muchos errores de que la clase Nodo no está al<br>
> alcance de las demás funciones que tengo. Espero contar con su ayuda; a<br>
> continuación el código<br>
><br>
> =============================== CODE ===============================<br>
><br>
> #include <iostream><br>
> #include <vector><br>
><br>
> #define JARRA1 8<br>
> #define JARRA2 5<br>
> #define JARRA3 3<br>
><br>
> using namespace std;<br>
><br>
> //                                  Prototipos<br>
> bool comprobarNodoEnClose(Nodo nodo, vector <Nodo> Close );<br>
> bool nodoMeta(Nodo nodo);<br>
> void CrearNodo(vector <Nodo> &Open, int jar1, int jar2, int jar3);<br>
> void expandirNodo(Nodo nodo, vector <Nodo> Close, vector <Nodo> &Open);<br>
> void pasarAgua(int cant1, int cant2, int jar1, int jar2, int jar3, vector<br>
> <Nodo> &Open);<br>
> void tirarAgua(Nodo nodo, int jar1, int jar2, int jar3, vector <Nodo><br>
> &Open);<br>
> void llenarAgua(Nodo nodo, int jar1, int jar2, int jar3, vector <Nodo><br>
> &Open);<br>
> void meterEnOpen(Nodo nodo, vector <Nodo> &Open);<br>
> void meterEnClose(Nodo nodo, vector <Nodo> &Close);<br>
> Nodo sacarNodoDeOpen(vector <Nodo> &Open);<br>
> Nodo primerNodoDeOpen(vector <Nodo> Open);<br>
><br>
> class Nodo{<br>
>  public:<br>
>     int j[3];<br>
>     Nodo(int j1, int j2, int j3) {        // Constructor<br>
>         j[0] = j1;<br>
>         j[1] = j2;<br>
>         j[2] = j3;<br>
>     }<br>
> };<br>
><br>
> bool comprobarNodoEnClose(Nodo nodo, vector <Nodo> Close ){               //<br>
> Comprueba si el nodo está en CLOSE<br>
>     int cont = 0;     // Contador para recorrer la lista<br>
><br>
>     if (Close.empty())<br>
>         return false;<br>
>     else {<br>
>         while (cont < Close.size()) {<br>
>             if(Close.operator==(nodo))   // Comparar elementos de un vector<br>
>                 return true;<br>
>             cont++;<br>
>         }<br>
>     }<br>
> }<br>
><br>
> bool nodoMeta(Nodo nodo){<br>
>     if (nodo.j[0] == 4 || nodo.j[1] == 4 || nodo.j[2] == 4)<br>
>         return true;<br>
> }<br>
><br>
> void CrearNodo(vector <Nodo> &Open, int jar1, int jar2, int jar3) {       //<br>
> Crea un nodo y lo mete en Open<br>
>     Nodo nuevo(jar1, jar2, jar3);<br>
>     meterEnOpen(nuevo, Open);<br>
> }<br>
><br>
> void expandirNodo(Nodo nodo, vector <Nodo> Close, vector <Nodo> &Open){<br>
> //Close para comprobar que no está en Close<br>
>     if (!comprobarNodoEnClose(nodo, Close)){          // Si NO está en Close<br>
> -> Expandir<br>
>         if (nodo.j[0] > 0 && nodo.j[1] != JARRA2)<br>
>             pasarAgua(nodo.j[0], nodo.j[1], 1, 2, 0, Open);<br>
>         if (nodo.j[0] > 0 && nodo.j[2] != JARRA3)<br>
>             pasarAgua(nodo.j[0], nodo.j[2], 1, 0, 2, Open);<br>
>         if (nodo.j[1] > 0 && nodo.j[0] != JARRA1)<br>
>             pasarAgua(nodo.j[1], nodo.j[0], 2, 1, 0, Open);<br>
>         if (nodo.j[1] > 0 && nodo.j[2] != JARRA3)<br>
>             pasarAgua(nodo.j[1], nodo.j[2], 0, 1, 2, Open);<br>
>         if (nodo.j[2] > 0 && nodo.j[0] != JARRA1)<br>
>             pasarAgua(nodo.j[2], nodo.j[0], 2, 0, 1, Open);<br>
>         if (nodo.j[2] > 0 && nodo.j[1] != JARRA2)<br>
>             pasarAgua(nodo.j[2], nodo.j[1], 0, 2, 1, Open);<br>
>         //    Si la jarra tiene agua, tirarla<br>
>         if (nodo.j[0] != 0)<br>
>             tirarAgua(nodo, 1, 0, 0, Open);<br>
>         if (nodo.j[1] != 0)<br>
>             tirarAgua(nodo, 0, 1, 0, Open);<br>
>         if (nodo.j[2] != 0)<br>
>             tirarAgua(nodo, 0, 0, 1, Open);<br>
>         //    Si la jarra no está llena, llenarla<br>
>         if (nodo.j[0] != JARRA1)<br>
>             llenarJarra(nodo, 1, 0, 0, Open);<br>
>         if (nodo.j[1] != JARRA2)<br>
>             llenarJarra(nodo, 0, 1, 0, Open);<br>
>         if (nodo.j[2] != JARRA3)<br>
>             llenarJarra(nodo, 0, 0, 1, Open);<br>
>     }<br>
> }<br>
><br>
> void pasarAgua(int cant1, int cant2, int jar1, int jar2, int jar3, vector<br>
> <Nodo> &Open){                 // Necesita la lista open parar pasarla<br>
>     int cant2copia =<br>
> 0;<br>
>                                  // a la función CrearNodo() el cual mete el<br>
> nodo en Open<br>
>     if (jar1 == 1 && jar2 == 2){<br>
>         cant2copia = cant2;<br>
>         cant2 += cant1;<br>
>         if(cant2 > JARRA2) cant2 = JARRA2;<br>
>         cant2copia = cant2 - cant2copia;<br>
>         cant1 -= cant2copia;<br>
>         CrearNodo(Open, cant1, cant2, jar3);<br>
>     }<br>
>     if (jar1 == 1 && jar3 == 2){<br>
>         cant2copia = cant2;<br>
>         cant2 += cant1;<br>
>         if(cant2 > JARRA3) cant2 = JARRA3;<br>
>         cant2copia = cant2 - cant2copia;<br>
>         cant1 -= cant2copia;<br>
>         CrearNodo(Open, cant1, jar2, cant2);<br>
>     }<br>
>     if (jar2 == 1 && jar1 == 2){<br>
>         cant2copia = cant2;<br>
>         cant2 += cant1;<br>
>         if(cant2 > JARRA1) cant2 = JARRA1;<br>
>         cant2copia = cant2 - cant2copia;<br>
>         cant1 -= cant2copia;<br>
>         CrearNodo(Open, cant2, cant1, jar3);<br>
>     }<br>
>     if (jar2 == 1 && jar3 == 2){<br>
>         cant2copia = cant2;<br>
>         cant2 += cant1;<br>
>         if(cant2 > JARRA3) cant2 = JARRA3;<br>
>         cant2copia = cant2 - cant2copia;<br>
>         cant1 -= cant2copia;<br>
>         CrearNodo(Open, jar1, cant1, cant2);<br>
>     }<br>
>     if (jar3 == 1 && jar1 == 2){<br>
>         cant2copia = cant2;<br>
>         cant2 += cant1;<br>
>         if(cant2 > JARRA1) cant2 = JARRA1;<br>
>         cant2copia = cant2 - cant2copia;<br>
>         cant1 -= cant2copia;<br>
>         CrearNodo(Open, cant2, jar2, cant1);<br>
>     }<br>
>     if (jar3 == 1 && jar2 == 2){<br>
>         cant2copia = cant2;<br>
>         cant2 += cant1;<br>
>         if(cant2 > JARRA2) cant2 = JARRA2;<br>
>         cant2copia = cant2 - cant2copia;<br>
>         cant1 -= cant2copia;<br>
>         CrearNodo(Open, jar1, cant2, cant1);<br>
>     }<br>
> }<br>
><br>
> void tirarAgua(Nodo nodo, int jar1, int jar2, int jar3, vector <Nodo><br>
> &Open){<br>
>     if (jar1 == 1) CrearNodo(Open, 0, jar2, jar3);<br>
>     if (jar2 == 1) CrearNodo(Open, jar1, 0, jar3);<br>
>     if (jar3 == 1) CrearNodo(Open, jar1, jar2, 0);<br>
> }<br>
><br>
> void llenarAgua(Nodo nodo, int jar1, int jar2, int jar3, vector <Nodo><br>
> &Open){<br>
>     if (jar1 == 1) CrearNodo(Open, JARRA1, jar2, jar3);<br>
>     if (jar2 == 1) CrearNodo(Open, jar1, JARRA2, jar3);<br>
>     if (jar3 == 1) CrearNodo(Open, jar1, jar2, JARRA3);<br>
> }<br>
><br>
> void meterEnOpen(Nodo nodo, vector <Nodo> &Open){<br>
>     Open.push_back(nodo);<br>
> }<br>
><br>
> void meterEnClose(Nodo nodo, vector <Nodo> &Close){<br>
>     Close.push_back(nodo);<br>
> }<br>
><br>
> Nodo sacarNodoDeOpen(vector <Nodo> &Open){<br>
>     Nodo temporal = Open[0];<br>
>     for (int cont = 0; cont < Open.size(); cont++) {<br>
>         Open[cont] = Open[cont + 1];<br>
>     }<br>
>     Open.pop_back();<br>
>     return temporal;<br>
> }<br>
><br>
> Nodo primerNodoDeOpen(vector <Nodo> Open) {<br>
>     return Open[0];<br>
> }<br>
><br>
><br>
> //                                       INICIO<br>
> int main()<br>
> {<br>
>     vector <Nodo> Open;                                         //<br>
> LISTAS<br>
>     vector <Nodo> Close;<br>
><br>
>     Nodo principal(0,0,0);<br>
>     meterEnOpen(principal, Open);<br>
><br>
>     while (!Open.empty()) {<br>
><br>
><br>
>         if (nodoMeta(primerNodoDeOpen(Open))) {<br>
>             cout << "META ENCONTRADA!" << endl;<br>
>             return 0;<br>
>         }<br>
>         else {<br>
>         meterEnClose(primerNodoDeOpen(Open));  // Metemos nodo en Close<br>
>         expandirNodo(sacarNodoDeOpen(Open), Close, Open);   // Expandimos y<br>
> sacamos de Open<br>
>         }<br>
>     }<br>
><br>
>     cout << endl << endl << "No se encontró solución" << endl;<br>
><br>
>     return 0;<br>
> }<br>
><br>
<br>
<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br><br clear="all"><br>-- <br> (\__/) <br>(='.'=)This is Bunny. Copy and paste bunny into your <br>(")_(")signature to help him gain world domination. <br><br>