hola, estoy aprendiendo a usar C++ y estoy atascado en una práctica.<div><br></div><div>Después de estar ya un par de horas buscando por donde falla mi código, ya lo localicé, y al parecer el void AlmacenarCiudad no funciona correctamente, ya que no escribe en el nodo el nombre de la ciudad, </div>
<div>lo deja en nulo como podeis ver a continuacion.</div><div><br></div><div><div>#include <iostream></div><div>#include <cstdlib></div><div>#include <string></div><div>using namespace std;</div><div><br>
</div><div>typedef struct nodo* T_persona;</div><div>        struct nodo{</div><div>               T_persona pers;</div><div>               string nombre;</div><div>        };</div><div>            </div><div><br></div><div>
typedef struct nodo1* T_ciudad;</div><div>        struct nodo1{</div><div>               T_ciudad sig;</div><div>               T_persona per;</div><div>               string ciutat;</div><div>         };</div><div>         </div>
<div>         </div><div>         </div><div>         </div><div>         </div><div>void Destruir (T_ciudad& datos){</div><div>     </div><div> }   </div><div><br></div><div>void Inicializar (T_ciudad& datos){</div>
<div>     if (datos!=NULL){</div><div>        Destruir (datos);</div><div>        system("PAUSE");</div><div>     cout<<"llega 1";</div><div>     }</div><div>     else{     </div><div>        datos = NULL;</div>
<div>        system("PAUSE");</div><div>     cout<<"llega 2";</div><div>     }</div><div>     </div><div> }</div><div> </div><div>void Imprimir (T_ciudad& datos){</div><div>     system("PAUSE");</div>
<div>     cout<<"llega 1";</div><div>    //prueba para confirmar que siempre le llega la lista en nulo </div><div>     if (datos==NULL){</div><div>                      cout<<"la lista es nula!!";</div>
<div>      }</div><div>     //parece que el imprimir funciona, pero la lista siempre llega en nulo, parece fallo de AlmacenarCiudad</div><div>     if (datos!=NULL){</div><div>                      system("PAUSE");</div>
<div>     cout<<"llega 2"; </div><div>     T_ciudad aux;</div><div>     T_persona aux2;</div><div>     aux=datos;</div><div>     system("PAUSE");</div><div>     cout<<"llega 3";</div>
<div>       while (aux!=NULL){</div><div>             system("PAUSE");</div><div>     cout<<"llega 4";</div><div>           aux2=aux->per;</div><div>           cout<<aux->ciutat<<" ";</div>
<div>             while (aux2!=NULL){   </div><div>                   system("PAUSE");</div><div>     cout<<"llega 5";                </div><div>                   cout<<aux2->nombre<<" ";</div>
<div>                   aux2=aux2->pers;</div><div>              }</div><div>              system("PAUSE");</div><div>     cout<<"llega 6";</div><div>           cout<<endl; </div><div>           aux=aux->sig;  </div>
<div>        }                       </div><div>      }   </div><div>      system("PAUSE");</div><div>     cout<<"llega fin";  </div><div> }</div><div> </div><div><br></div><div> </div><div>void AlmacenarCiudad (T_ciudad& datos, const string& ciudad, bool& ok){</div>
<div>        </div><div>        T_ciudad aux;</div><div>        ok=false;</div><div>        aux=datos;     </div><div>  /*      if (datos==NULL){</div><div>        datos=new nodo1;</div><div>        datos->ciutat=ciudad;</div>
<div>        datos->sig=NULL;</div><div>        aux=datos;</div><div>        }*/</div><div>        while (aux!=NULL){   //no consigo que escriba el nombre de la ciudad...</div><div>           if (aux->sig->ciutat==ciudad){</div>
<div>              ok=true;                       </div><div>            }</div><div>           aux=aux->sig;  </div><div>         }</div><div>          if (aux==NULL){</div><div>              aux = new nodo1;             </div>
<div>              aux->ciutat=ciudad;</div><div>              aux->sig=NULL;           </div><div>          }</div><div>       </div><div>   if (ok==true){ //true y false funcionan correctamente</div><div>     cout<<"La ciudad ya existe"<<endl<<endl;            </div>
<div>    }</div><div>    else{</div><div>       cout<<"La ciudad se anadio correctamente"<<endl<<endl;  </div><div>     }</div><div> }</div><div> </div><div>void AlmacenarPersona (T_ciudad& datos, const string& ciudad, const string& persona, bool& ok){</div>
<div>     </div><div> }</div><div> </div><div>T_persona BuscarPersona (T_ciudad& datos, const string& ciudad, const string& persona){</div><div>     </div><div> }</div><div><br></div><div><br></div><div><br></div>
<div><br></div><div>char menu()</div><div>{</div><div>     char opcion;</div><div>     cout << endl;</div><div>     cout << "Opciones: " << endl<<endl;</div><div>     cout << "A: Inicializar " << endl;</div>
<div>     cout << "B: Imprimir la estructura" << endl;</div><div>     cout << "C: Destruir todo(Borrar)" << endl;</div><div>     cout << "D: Crear una ciudad nueva" << endl;</div>
<div>     cout << "E: Añadir una persona a una ciudad" << endl;</div><div>     cout << "F: Buscar a una persona en una determinada ciudad" << endl;</div><div>     cout << "X: Para finalizar el programa" << endl<<endl;</div>
<div>     do {</div><div>        cin >> opcion;  </div><div>        opcion = toupper(opcion);</div><div>     } while (!((opcion == 'X') || (('A' <= opcion) && (opcion <= 'F'))));</div>
<div>     return opcion;</div><div>}</div><div><br></div><div>int main ()</div><div>{    </div><div>      char opcion;</div><div>      string ciudad,persona;</div><div>      bool ok;</div><div>      T_ciudad datos = NULL;</div>
<div>     </div><div>      </div><div>      do {</div><div>         opcion = menu();</div><div>         switch (opcion) {</div><div>                case 'A': Inicializar(datos);</div><div>                          break;</div>
<div>                case 'B': Imprimir(datos);</div><div>                          break;</div><div>                case 'C': Destruir(datos);</div><div>                          break;        </div><div>
                case 'D': cout << "Introduzca una ciudad: " ;</div><div>                          cin >> ciudad;</div><div>                          AlmacenarCiudad(datos,ciudad,ok);</div><div>
                          break;</div><div>                case 'E': cout<<"Introduzca el nombre de la ciudad: "<<endl;</div><div>                          cin>>ciudad;</div><div>                          cout<<"Introduzca el nombre de la persona: ";</div>
<div>                          AlmacenarPersona(datos,ciudad,persona,ok);</div><div>                          break;</div><div>                case 'F': cout << "Introduzca el nombre de la ciudad: " <<endl;</div>
<div>                          cin >> ciudad;</div><div>                          cout<<"Introduzca el nombre de la persona: ";</div><div>                          cin>>persona;</div><div>                          T_persona PuntPersona;</div>
<div>                          BuscarPersona(datos,ciudad,persona);</div><div>                          break;</div><div>         }</div><div>      }while (opcion != 'X');</div><div><br></div><div>system ("PAUSE");</div>
<div>return 0;</div><div>}</div></div><div><br></div><div>Muchas gracias,</div><div>Saludos,</div><div>Antonio.</div>