Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Josh13

#1
Tengo el mismo error en dos funciones, me sale "no match for operator ==" con cualquier signo en si también con >. He leído que es porque tengo que dar un valor al string, pero la verdad que no se que valor dar exactamente.

El ejercicio 1 dice así: Devuelve el objeto de tipo Pelicula cuyo título coincide con el string recibido. En caso de que no se encuentre el título en el catálogo, se devolverá una película vacía, sin datos.

Este es el primer código:

Pelicula buscar(pNodo nodo, string t){
   Pelicula p;
   if(nodo != NULL){
      if(nodo->clave == t)
         return p;
      else {
         if(nodo->clave > t)
            buscar(nodo->iz, t);
         else buscar(nodo->de, t);
      }
   }
   return p;
}

Pelicula Filmoteca::buscarPelicula (string t) {
   Pelicula p;
   buscar(raiz, t);
   return p;
}


Y el segundo código:
En este caso me da el mismo error pero en "nodo->info << endl"

void mostrar(pNodo &nodo){
   if(nodo != NULL){
      mostrar(nodo->iz);
      cout << " " << nodo->info << endl;
      mostrar(nodo->de);
   }
}

void Filmoteca::mostrarFilmoteca () {
      mostrar(raiz);
}
#2
Hola, perdón , tengo un problema en un ejercicio de suma de arboles binarios de búsqueda.

Este es el enunciado : Codificar una función entera en C++ que devuelva como resultado la suma de las claves impares contenidas en nodos con dos hijos.

Y este es mi código:

int sumaClavesImparesDosHijo (pNodoArbol &nodo) {
   int resul;
   if(nodo != NULL){
   if(nodo->clave %2 != 0){
      if((nodo->iz != NULL) && (nodo->de != NULL)){
         resul += nodo->clave;
      }
      resul = sumaClavesImparesDosHijo(nodo->iz) +
                                                                   sumaClavesImparesDosHijo(nodo->de);

   }
   }
   return resul;
}

int Arbol::sumaClavesImparesDosHijos () {
   int resul = 0;
   resul = sumaClavesImparesDosHijo(raiz);
   return resul;
}

Y la suma me da 1877928545 , cosa que no tiene sentido. Tendría que dar 128.
#3
Hola, tengo ciertos problemas programando en listas en c++. Soy muy principiante en esto como se puede observar, aun no he aprendido a programar lo suficiente. Tengo que elaborar una practica para la universidad. Y sencillamente no me funciona el código, me da un error de operando que a veces sale y otras veces no, cosa que no entiendo.
Y los códigos no me funcionan correctamente como deberían, no entiendo exactamente que me piden. Por ejemplo en eliminar película, me elimina todas. Y no se exactamente como hacer que me elimine la que me llega por el titulo, no se como aplicar ese string al código.

Es una lista enlazada con cabecera y centinela para implementar la lista calificada ordenada de películas

Estos son los códigos que he realizado hasta ahora:

bool Filmoteca::insertarPelicula (Pelicula peli) {
   bool resul = false;
   string x;
   pNodo anterior = cab, actual = cab->sig, nuevo;
   cent->info = x;
   while(actual->info< x){ //A partir de aquí me da error de operando en todas las x
      anterior = actual;
      actual=actual->sig;
   }
   if(actual->info>x || actual == cent){
      nuevo = new NodoF(x, actual);
      anterior->sig = nuevo;
      resul = true;
   }
   else resul = false;

return resul;
}

bool Filmoteca::eliminarPelicula (string titulo) {
   bool resul = false;
   string x;
   pNodo anterior = cab, actual = cab->sig;
   cent->info = x;
   while(actual->info < x){
      anterior = actual;
      actual=actual->sig;
      }
      if(actual->info >x || actual == cent)
         resul = false;
         else{
            anterior->sig=actual->sig;
            delete actual;
            resul = false;
   }
      return resul;

}

Pelicula Filmoteca::buscarPelicula (string t) {
   bool resul = false;
   string titulo = t;
string x;
pNodo actual = cab->sig;
cent-> info = x;
while(actual->info<x)
   actual = actual->sig;
if(actual->info == x && actual != cent)
   resul = true;
return resul;
}


void Filmoteca::mostrarFilmoteca () {
   pNodo aux = cab->sig;
   while (aux != cent){
      cout << aux-> info << " ";
      aux = aux->sig;
   }

Primera parte de filmoteca.cpp
https://ibb.co/cRSGGx

Filmoteca.h
https://ibb.co/c4uSpH    

Lo que me piden:
https://ibb.co/k9YL9H