Tú eliges Capital SimCity Capital Sims Capital Spore
Capital SimCity

URGENTE!! Necesito ayuda de un experto en POO con C++

¿Quieres comentar algo extra sobre el foro o presentarte? Este es el subforo adecuado para ello.

Moderador: Equipo moderador [CSC]

URGENTE!! Necesito ayuda de un experto en POO con C++

Notapor María » 30 Nov 2006, 11:54

Pues eso, que llevo casi dos meses trabada con dos prácticas (cada una de una asignatura) y no consigo hacer que funcionen como deberían (una ni siquiera compila). Así, que, si alguien puede ayudarme, que me lo diga y expongo los problemas de forma más detallada.(bueno, el más sobra, porque aquí no he dado ningún detalle :lol: )
Imagen
Avatar de Usuario
María
Empresario
Empresario
 
Mensajes: 614
Registrado: 15 May 2004, 17:30
Ubicación: Tenerife
Género: Mujer

Notapor gonzalo1234 » 30 Nov 2006, 12:41

Del POO ese no tengo ni idea, pero si he tenido contacto con C++, dime que pasa exactamente, o pon el codigo a ver si puedo hacer algo
Imagen
Avatar de Usuario
gonzalo1234
Ministro de Transporte
 
Mensajes: 20691
Registrado: 21 Nov 2004, 04:25
Ubicación: ALCORCON-MADRID
Género: Hombre

Notapor María » 30 Nov 2006, 13:03

Bueno.. sin POO va a ser un poco difícil, pero aquí dejo los detalles nde mis dos problemas, a ver si suena la flauta:

Uno es con el manejo de flujos. Tenemos que leer un polinomio desdeun fichero. La idea es meter los coeficientes en un array donde elsubíndice del array, coincida con el grado de la x que acompaña alcoeficiente. (por ej, si tenemos 3x² pues el 3 irá en la casilla[2] delarray) Esa parte ya está superada, puesto que empezamos haciendo elprograma para meter los datos por teclado. Ahora bien, para leer elfichero he hecho lo siguiente:Dentro de un while:
Código: Seleccionar todo
fichin.getline(Cadena,100);
switch (Cadena[0]){
    case '?':{ int k = BuscarPolin(P,Cadena[1]);
               char l = Cadena[3];
               int x = atoi(&l);
               for (int i = 1; i < 6; i++)
                fichout << Cadena[i];
               fichout <<"= ";
               fichout << P[k].Horner(x) << endl;
               break;
               };
   
    case '%':{ for (int i = 1; i < 9; i++)
                fichout << Cadena[i];
               fichout <<"= ";
               int j = BuscarPolin(P,Cadena[1]);
               int k = BuscarPolin(P,Cadena[6]);
               if (Cadena[5] == '+')
                 fichout<< P[j] + P[k]<< endl;
               if (Cadena[5] == '-')
                 fichout << P[j] - P[k];
               if (Cadena[5] == '*')
                 fichout << P[j] * P[k];
               break;
               };
    default:{  fichout << Cadena;
               Polinomio f;
               istringstream flujo (Cadena);
               flujo >> f;
               P.push_back(f);
               break;
               };
   };
   fichout.close();


El switch lo hago porque, dependiendo de cual sea el primercaracter de la cadena, habrá que hacer operaciones con polinomios oleer el polinomio.
He sobrecargado >> de la siguiente forma:
Código: Seleccionar todo
istringstream &operator >>(istringstream &is, Polinomio f){
  char nom;
  int co,gra,k;
  string cadena;
  is >> nom;
  f.asignombr(nom);
  is.ignore(5);
  k = 0;
  while (is >> cadena){
    is >> co;
    is.ignore(2);
    is >> gra;
    if (k == 0)
      gra = f.grado;
    f.insertar(co,gra);
    k++;
  };
}
 

Pues el dichoso compilador, en cada linea donde tengo "is >>"me dice que hay una sobrecarga ambigua del operador. Y no tengo ni ideade cómo solucionarlo....
Ese es el primer problema. El segundo es con un programa para manejar conjuntos. Esta es la clase:
Código: Seleccionar todo
class Set {
 public:
     Set();
     Set(int lim);
     ~Set();
     Set insertarelem (int k);
     void eliminarelem (int k);
     void vaciarconj();
     bool esvacio();
     bool pertenece (int k);
     Set operator +(Set b); //Union.
     Set operator -(Set b); //Complemento relativo.
     Set operator *(Set b); //Interseccion.
     Set operator !();      //Complementacion.
     Set operator =(Set b); //Asignacion.
     bool operator == (Set b); //Comparacion de igualdad.
     friend istream &operator>>(istream &is,Set b);
     friend ostream &operator<<(ostream &os,const Set &b);

  private:
     int L;
     bool comp[300];
};

............
Uno de los constructores... (el otro es igual, solo que hemos de asignar un valor M de tipo long y L será sizeof(M))
Código: Seleccionar todo
Set::Set (int lim){
  L = lim;
  for (int i = 0; i < L + 1; i++)
   comp[i] = 0;
}

Los operadores >> y <<:
Código: Seleccionar todo
stream &operator>>(istream &is,Set b){
  int k;
  for (int i = 0; i < (b.L + 1); i++){
    cout << "Escribe el elemento: "<< endl;
    cin >> k;
    if ( k != -1)
      b.insertarelem(k);
    else
      break;
   };
}

ostream &operator<<(ostream &os,const Set &b){
  os << '{';
  for (int i = 0; i < (b.L + 1); i++){
    if (b.comp[i])
      os << i <<',';
  }
  os << '}' << endl;
  return os;
}

Y la función insertarelem:
Código: Seleccionar todo
Set Set::insertarelem (int k){
  comp [k] = 7;
  return *this;
}


Tanto si insertarelem devuelve un set, como si devuelve un void;Tanto si juego con 0 para 'false' y cualquier otro entero para 'true' ojuego directamente con true y false, el array no se modifica. Se quedasiempre con todos sus miembros a 0, ya que el cout me devuelve "{}"

Si alguien me puede ayudar, estaría muy agradecida, ya que llevotodo este tiempo sin poder entregar ninguno de los ejercicios quemandan...
Imagen
Avatar de Usuario
María
Empresario
Empresario
 
Mensajes: 614
Registrado: 15 May 2004, 17:30
Ubicación: Tenerife
Género: Mujer

Notapor rey rabaruix » 30 Nov 2006, 13:53

yo se que con codigos de lenguaje C como estos se hacen juegos y programas, hasta ahí llego. Pero que tienen que ver estos codigos ahora con sim city??? no sería mas logico postear esto en un foro de informática???
visitad http://s7.bitefight.es/c.php?uid=69798 , no os arrepentireis
Avatar de Usuario
rey rabaruix
Ciudadano
Ciudadano
 
Mensajes: 253
Registrado: 24 Feb 2006, 20:45
Ubicación: Granada, España
Género: Hombre

Notapor María » 30 Nov 2006, 20:44

Ya sé que no tiene nada que ver con Simcity, por eso está en General, donde, casualidades de la vida, ningún tema tiene que ver con el juego. Y vengo a este foro porque estoy desesperada con los puñeteros polinomios y los conjuntos de los cojj...
Imagen
Avatar de Usuario
María
Empresario
Empresario
 
Mensajes: 614
Registrado: 15 May 2004, 17:30
Ubicación: Tenerife
Género: Mujer


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

Comunidad Capital Sim (2003-2008) webmaster arroba capitalsim.net