• Sábado 9 de Noviembre de 2024, 03:36

Mostrar Mensajes

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


Mensajes - redonmax

Páginas: [1]
1
C/C++ / Funcion Recursiva
« en: Sábado 14 de Enero de 2006, 20:17 »
Hola a todos, quiero hacer una funcion recursiva que haga lo siguiente:
Diseñar una función recursiva que, dado un vectorde enteros A[1..n] con n>0,decida si el valor dealgún elemento del vector coincide con la suma de todos los que están a su izquierda.
Como no se mucho de recursividad quiero que me echeis una mano, os estaria muy agradecidos!

Pues empezamos:
El caso basico podia ser:
-i=2 (i seria el indice que lee el vector, suponemos que la primera poscicion del vector es v[1])
-Si v[2]=v[1] entonces return i;

Creeis que estaria bien el caso basico????
Un saludo y muchas gracias.

2
C/C++ / Clase De Pila Con Templates
« en: Jueves 12 de Enero de 2006, 20:26 »
Hola, he ehcho la siguiente clase con templates:
Código: Text
  1. #include <_vector.h>
  2. #include <_llist.h>
  3. #include <iostream>
  4. #include <cstdlib>
  5. using namespace std;
  6.  
  7. template <class T>
  8. class baseStack {
  9. public:
  10.   virtual void  clear  () = 0;
  11.   /* Modifica: la pila receptora que pasa a estar vacía. */
  12.   virtual bool  empty  () const = 0;
  13.   /* Produce:  cierto si la pila receptora es vacía.   */
  14.   virtual T      top    () const = 0;
  15.   /* Produce:  el elemento del tope de la pila.
  16.      Error:    si la pila está vacía.                */
  17.   virtual void  push    (const T & value) = 0;
  18.   /* Necesita: un valor de tipo T.
  19.      Modifica: la pila receptora añadiendo el valor
  20.          indicado al tope de la pila.    */
  21.   virtual void  pop    () = 0;
  22.   /* Modifica: la pila receptora suprimiendo el elemento
  23.                situado en el tope de la pila.
  24.      Error:    si la pila está vacía.                    */
  25. };
  26.  
  27.  
  28. //---------------------------------------------------------------------------
  29. //                                                
  30. //         Definicion de la clase VStack
  31. //                  Pilas basadas en vectores            
  32. //                                              
  33. //---------------------------------------------------------------------------
  34.  
  35. //
  36. // Clase VStack
  37. //  Implementacion de pilas utilizando vectores
  38. //
  39.  
  40. template <class T>
  41. class VStack : public baseStack<T> {
  42. public:
  43.   // constructores
  44.   explicit VStack  (int size=0);
  45.   VStack          (const VStack<T> & rhs);
  46.  
  47.   // operaciones para pilas
  48.   virtual void   clear  ();
  49.   /* Coste t.: O(1)    */
  50.   virtual bool   empty  () const;
  51.   /* Coste t.: O(1)    */
  52.   virtual T  top    () const;
  53.   /* Coste t.: O(1)    */
  54.   virtual void  push  (const T & value);
  55.   /* Coste t.: O(1), O(n) si se redimensiona.  */
  56.   virtual void  pop    ();
  57.   /* Coste t.: O(1)    */
  58.    
  59.   // asignacion
  60.   VStack<T> & operator =  (const VStack<T> & rhs);
  61.  
  62.   //operaciones adicionales
  63.   int size () const;
  64.   // Produce:  el numero de elementos de la lista.
  65.   // Coste t.: O(1)
  66.    
  67. protected:
  68.   // area de datos
  69.   sVector<T>  data;
  70.   int  theTop;      // posicion del tope de la pila
  71.  
  72.   //operaciones privadas para el control de errores
  73.   void assertIsEmpty() const;  
  74. };
  75. template <class T>
  76. VStack<T>::VStack
  77.   (int size) : data(size), theTop(-1)
  78. {
  79.   // crea e inicializa una pila
  80. }
  81.  
  82. template <class T>
  83. VStack<T>::VStack (const VStack<T> & rhs)
  84.   : data(rhs.data), theTop(rhs.theTop)
  85. {
  86.   // constructor de copia
  87. }
  88.  
  89. template <class T>
  90. void VStack<T>::clear ()
  91. {
  92.   // borra los elementos de una pila
  93.   theTop = -1;
  94. }
  95.  
  96. template <class T>
  97. bool VStack<T>::empty () const
  98. {
  99.   // retorna cierto si la pila no tiene elementos
  100.   return theTop == -1;
  101. }
  102.  
  103. template <class T>
  104. T VStack<T>::top () const
  105. {
  106.   // retorna el elemento del tope de la pila
  107.   assertIsEmpty();
  108.   return data[theTop];
  109. }
  110.  
  111. template <class T>
  112. void VStack<T>::push (const T & value)
  113. {
  114.   // inserta un elemento en la pila
  115.   // si la pila está llena, aumentarla
  116.   if (theTop == data.size()-1)
  117.     data.resize(data.size()*2+1);
  118.  
  119.   data[++theTop] = value;
  120. }
  121.  
  122. template <class T>
  123. void VStack<T>::pop ()
  124. {
  125.   // borra el elemento del tope de la pila
  126.   assertIsEmpty();
  127.   theTop--;
  128. }
  129.  
  130. template <class T>
  131. VStack<T> & VStack<T>::operator = (const VStack<T> & rhs)
  132. {
  133.   // asignacion
  134.   if( this != &rhs )
  135.   {
  136.     data = rhs.data;
  137.     theTop = rhs.theTop;
  138.   }  
  139.   return *this;
  140. }
  141.  
  142. template <class T>
  143. int VStack<T>::size () const
  144. {
  145.    return theTop+1;
  146. }
  147.  
  148. template <class T>
  149. void VStack<T>::assertIsEmpty( ) const
  150. {
  151.   if ( empty() )
  152.      throw runtime_error("VStack UnderFlow")&#59;
  153. }    
  154. int main() {
  155. VStack<int> v1;
  156. system("PAUSE");
  157. return 0;
  158. }
  159.  
  160.  

Y a la hora de porbar me da un monton de errores en la compilacion, alguien me puede echar una mano, estoy muy verde en templates.
Un saludo

3
C/C++ / Re: Implementar Un Contador En Una Clase
« en: Jueves 1 de Diciembre de 2005, 23:20 »
ya lo sulione, yo he usado una variable static colocando la en la clase vehiculo, la inicie a cero, y y meti un incremento a esa variable en el constructor de las otras dos clases derivadas.
Un saludo;

4
C/C++ / Porque Me Da Este Error Al Compilar
« en: Jueves 1 de Diciembre de 2005, 20:37 »
Código: Text
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <vector>
  4. using namespace std;
  5. class vehiculo {
  6.       public:
  7.              vehiculo();
  8.              void mod_ruedas(int);
  9.              int get_ruedas()const;
  10.              virtual void imprime()const=0;
  11.                  
  12.       private:
  13.               int ruedas;
  14.               static int n_vehiculos;
  15. };
  16. class bici:public vehiculo {
  17.       public:
  18.              virtual void imprime()const;
  19.              bici(int,int);
  20.       private:
  21.              int pi;
  22. };
  23. class coche:public vehiculo {
  24.       public:
  25.              virtual void imprime()const;
  26.              coche(int,int);
  27.       private:
  28.               int cv;
  29. };
  30.  
  31.                  
  32. //programa main
  33. int main()
  34. {
  35.     bici b1(18,2);
  36.     b1.imprime();
  37.     bici b2(21,4);
  38.     b2.imprime();
  39.     coche c1(110,4);
  40.     c1.imprime();
  41.     coche c2(55,3);
  42.     c2.imprime();
  43.     coche c3(210,4);
  44.     c3.imprime();
  45.     coche c4(155,4);
  46.     c4.imprime();
  47.     coche c5(60,3);
  48.     c5.imprime();
  49.     c5.mod_ruedas(4);
  50.     c5.imprime();
  51.     vector<vehiculo>v;
  52.     //v.push_back(b1); Si pongo este push_back me da un error
  53.    
  54.     system("PAUSE");
  55.     return 0;
  56. }
  57.  
  58. //Implementacion de clase vehiculo
  59. vehiculo::vehiculo()
  60. {                
  61. }
  62. void vehiculo::mod_ruedas(int a)
  63. {
  64.      ruedas=a;
  65. }
  66. int vehiculo::get_ruedas()const
  67. {
  68.     return ruedas;
  69. }
  70.  
  71. //Iniciacion de los datos estaticos
  72. int vehiculo::n_vehiculos=0;
  73. //Implementacion de la clase bici
  74. bici::bici(int a,int b)
  75. {
  76.                pi=a;
  77.                mod_ruedas(b);            
  78. }
  79. void bici::imprime()const
  80. {
  81.      cout<<"Soy un bike de "<<get_ruedas()<<" ruedas y "<<pi<<" pinones."<<endl;
  82. }
  83. //Implementacion de la clase coche
  84. coche::coche(int a,int b)
  85. {
  86.                  cv=a;
  87.                  mod_ruedas(b);
  88. }
  89. void coche::imprime()const
  90. {
  91.      cout<<"Soy un coche de "<<get_ruedas()<<" ruedas y "<<cv<<" caballos."<<endl;
  92. }
  93.  

El error me lo da sipongo un push_back el de la ultima linea del programa main.
Un saludo y muxas gracias :lol:

5
C/C++ / Implementar Un Contador En Una Clase
« en: Jueves 1 de Diciembre de 2005, 16:09 »
Hola a toso, como este es mi primer mensaje me presento, soy redonmax y soy de asturias ;)
Estoy haciendo una practica de estructura de datos y necesito que me echeis una mano.
La practica consiste en hacer esta clase base y estas dos derivadas:
....................VEHICULO
.................... -rueda
...................... /...\
....................../ ... \  
..................../ .......\
..............COCHE....BICI    
................-cv........-piñones
No se pueden crae objeto s de la clase vehiculo, pero si de las clases derivadas, es decir se pueden crear bici de 2 ruedas y 6 piñones, y un coche 4 ruedas y 110 caballos.

Me piden que implemente un contador que me permita saber en todo momento el numero de vehiculos creados(no se pueden usar variables globales).

El problema que tengo no se como hacer este contador, un saludo

Páginas: [1]