elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1] 2 3 4
1  Programación / Programación C/C++ / Duda iterator // Vector iterator not decrementable en: 13 Agosto 2013, 23:22 pm
Buenas !


Código
  1. void NucleoMotor::LimpiarVector()
  2. {
  3.  // Elimina los elementos del vector
  4.  vector<cSprite*>::iterator ivSprite;
  5.  for (ivSprite = m_vcSprites.begin();
  6.        ivSprite != m_vcSprites.end();
  7.        ivSprite++)
  8.  {
  9.  
  10.    delete (*ivSprite);
  11.    m_vcSprites.erase(ivSprite);
  12.    ivSprite--;
  13.  }
  14. }

El error es en la ejecución del programa.

Gracias!
2  Programación / Programación C/C++ / Error Prueba de Ogre Con fisicas en: 1 Noviembre 2012, 19:02 pm
Buenas!
 
Tengo un proyecto para probar las fisicas en ogre y me da error:

Primera excepción en 0x0116dd07 en Fisica 1.1.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0x00000000.
Excepción no controlada en 0x0116dd07 en Fisica 1.1.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0x00000000.

Concretamente en esta funcion:

void PhysxManager::simulate(NxReal time)
{
   // Ejecuta las colisiones y la dinamica para el incremento de tiempo desde el ultimo frame
----->   GScene->fetchResults(NX_RIGID_BODY_FINISHED, true);
   GScene->flushStream();
   GScene->simulate(time);
}

He leido que tiene que ver con algun puntero NULL que se intenta desreferenciar, pero no puedo solucionarlo.

Dejo el projecto para descargar ya que es un pelin grande:

http://www.mediafire.com/?m0wtksdd3smc7yq

Gracias.
3  Media / Diseño Gráfico / OpenGL Texturas en: 21 Mayo 2012, 21:06 pm
Buenas!

Tengo que aplicar una textura de ladrillos a un cubo pero la verdad es que la explicacion que me dan de como se aplican las texturas en los vertex no es muy buena y me gustaria basicamente eso, que a ver si me lo podeis explicar mejor este punto:

glTexCoord2f(1.0f, 1.0f); glVertex3f(0,1,1);

Y de paso os dejo el codigo.

Código
  1. #include <Windows.h>
  2. #include <GL\GL.h>
  3. #include <GL\GLU.h>
  4. #include <GL\glut.h>
  5. #include <iostream>
  6. #define _USE_MATH_DEFINES
  7. #include <math.h>
  8. using namespace std;
  9. #include <conio.h>
  10. #define BITMAP_ID 0x4D42
  11. GLuint nombres_texturas;
  12. int angulo;
  13.  
  14. void init(void);
  15. void redraw(void);
  16. void reshape(int, int);
  17.  
  18. BITMAPINFOHEADER bitmapInfoHeader;
  19. unsigned char* bitmapData;
  20.  
  21. unsigned char* LoadBitmapFile(char *filename, BITMAPINFOHEADER *bitmapInfoHeader)
  22. {
  23.   FILE *filePtr;                       // Puntero a programa
  24.   BITMAPFILEHEADER bitmapFileHeader;   // Bitmap file header
  25.   unsigned char *bitmapImage;          // Bitmap image data
  26.   int imageIdx = 0;             // Index de la imagen
  27.   unsigned char tempRGB;
  28.  
  29.   // Abrimos el archivo en binary mode
  30.   filePtr = fopen(filename,"rb");
  31.   if(filePtr == NULL)
  32.      return NULL;
  33.  
  34.   // Leemos el bitmap file header
  35.   fread(&bitmapFileHeader, sizeof(BITMAPFILEHEADER),1,filePtr);
  36.  
  37.   // Verificamos que sea un BItmap
  38.   if(bitmapFileHeader.bfType != BITMAP_ID)
  39.   {
  40.      fclose(filePtr);
  41.      return NULL;
  42.   }
  43.  
  44.   // Leemos la información del bitmap header
  45.   fread(bitmapInfoHeader, sizeof(BITMAPINFOHEADER),1,filePtr);
  46.  
  47.   // Movemos el puntero al principio del bitmap
  48.   fseek(filePtr, bitmapFileHeader.bfOffBits, SEEK_SET);
  49.  
  50.   // Guardamos suficiente memoria para el archivo
  51.   bitmapImage=(unsigned char*) malloc(bitmapInfoHeader->biSizeImage);
  52.  
  53.   // Verificamos la memoria
  54.   if(!bitmapImage)
  55.   {
  56.      free(bitmapImage);
  57.      fclose(filePtr);
  58.      return NULL;
  59.   }
  60.   fread(bitmapImage,1,bitmapInfoHeader->biSizeImage,filePtr);
  61.   if(bitmapImage == NULL)
  62.   {
  63.      fclose(filePtr);
  64.      return NULL;
  65.   }
  66.  
  67.   // Cambiamos la imagen a RGB
  68.   for(imageIdx = 0; imageIdx<(int)bitmapInfoHeader->biSizeImage; imageIdx+=3)
  69.   {
  70.      tempRGB = bitmapImage[imageIdx];
  71.      bitmapImage[imageIdx]=bitmapImage[imageIdx+2];
  72.      bitmapImage[imageIdx + 2] = tempRGB;
  73.   }
  74.  
  75.   // Cerramos el archivo y devolvemos la imagen
  76.   fclose(filePtr);
  77.   return bitmapImage;
  78. }
  79.  
  80. void init(void)
  81. {
  82.   glClearColor(1.0,1.0,1.0,0.0); // Color fondo pantalla
  83.   glEnable(GL_CULL_FACE);
  84.   glEnable(GL_DEPTH_TEST); // Test de profundidad !IMPORTANTE
  85.   glShadeModel(GL_SMOOTH); // Modo sombreado de poligonos
  86.   glMatrixMode(GL_MODELVIEW);
  87.   gluLookAt(3,-3,3,0,0,0,0,1,0);
  88.  
  89.   glEnable(GL_TEXTURE_2D);
  90.   glGenTextures(1,&nombres_texturas); // Genero el nombre de la textura
  91.  
  92.   glBindTexture(GL_TEXTURE_2D, nombres_texturas); // Activamos la textura
  93.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  94.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  95.   bitmapData = LoadBitmapFile("agua.bmp", &bitmapInfoHeader);
  96.   gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, bitmapInfoHeader.biWidth,
  97.      bitmapInfoHeader.biHeight, GL_RGB, GL_UNSIGNED_BYTE, bitmapData);
  98.  
  99. }
  100.  
  101. void animacion(void)
  102. {
  103.   angulo = (angulo+1)%360;
  104.   Sleep(50);
  105.   glutPostRedisplay();
  106. }
  107.  
  108. void redraw()
  109. {
  110.   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  111.   glPushMatrix();
  112.   // Activo la textura
  113.  
  114.   glRotatef(angulo,0,1,0);
  115.   glBindTexture(GL_TEXTURE_2D, nombres_texturas);
  116.  
  117.   // Primera cara
  118.   glBegin(GL_POLYGON);
  119.   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,1);
  120.   glTexCoord2f(1.0f, 0.0f); glVertex3f(1,0,1);
  121.   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
  122.   glEnd();
  123.  
  124.    // Segunda cara
  125.   glBegin(GL_POLYGON);
  126.   glTexCoord2f(0.0f, 0.0f); glVertex3f(1,0,1);
  127.   glTexCoord2f(1.0f, 0.0f); glVertex3f(1,0,-1);
  128.   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
  129.   glEnd();
  130.  
  131.   // Tercera cara
  132.   glBegin(GL_POLYGON);
  133.   glTexCoord2f(0.0f, 0.0f); glVertex3f(1,0,-1);
  134.   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,-1);
  135.   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
  136.   glEnd();
  137.  
  138.   // Cuarta cara
  139.   glBegin(GL_POLYGON);
  140.   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,-1);
  141.   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,1);
  142.   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
  143.   glEnd();
  144.  
  145.   // Quinta cara
  146.   glBegin(GL_POLYGON);
  147.   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,1);
  148.   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,-1);
  149.   glTexCoord2f(1.0f, 1.0f); glVertex3f(1,0,-1);
  150.   glTexCoord2f(0.0f, 1.0f); glVertex3f(1,0,1);
  151.   glEnd();
  152.   glPopMatrix();
  153.   glutSwapBuffers();
  154. }
  155.  
  156. void reshape( int anchura, int altura)
  157. {
  158.   glViewport(0,0,(GLsizei) anchura, (GLsizei)altura);
  159.   glMatrixMode(GL_PROJECTION);
  160.   glLoadIdentity();
  161.   gluPerspective(40.0, (GLfloat) anchura/(GLfloat) altura, 1.0, 20.0);
  162.   glMatrixMode(GL_MODELVIEW);
  163. }
  164.  
  165.   void keyboard(unsigned char tecla, int x, int y)
  166.   {
  167.      if(tecla==27) exit(0);
  168.      if(tecla=='a') glutIdleFunc(animacion);
  169.      if(tecla=='p') glutIdleFunc(NULL);
  170.   }
  171.  
  172.   void main( int argc, char*argv[])
  173.   {
  174.      glutInit(&argc, argv);
  175.      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  176.      glutInitWindowSize(320, 240);
  177.      glutCreateWindow("Mapa de Bits");
  178.      init();
  179.      glutDisplayFunc(redraw);
  180.      glutReshapeFunc(reshape);
  181.      glutKeyboardFunc(keyboard);
  182.      glutIdleFunc(animacion);
  183.      glutMainLoop();
  184.   }

Gracias!
4  Programación / Programación C/C++ / OpenGL en: 25 Abril 2012, 22:46 pm
Hola!

Se supone que tengo que crear un triangulo y rotarlo a 45 grados en el eje y el problema esta en que en el curso que hago no explica bien la implementacion de glRotatef... y me da error.

Código
  1. #include <Windows.h>
  2. #include <gl\glut.h>
  3. #include <gl\gl.h>
  4. #include <gl\GLU.h>
  5. void animacion(void);
  6. void init(void);
  7. void dibujar(void);
  8. void redimensionar(int, int);
  9. void teclado (unsigned char, int);
  10. void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
  11.  
  12. void init(void)
  13. {
  14. glClearColor(0.0,0.0,0.0,0.0);
  15. glEnable(GL_DEPTH_TEST);
  16. glShadeModel(GL_FLAT);
  17. }
  18.  
  19. void redimensionar(int ancho, int alto)
  20. {
  21. glViewport(0,0,(GLint)ancho, (GLint)alto);
  22. glMatrixMode(GL_PROJECTION);
  23. glLoadIdentity();
  24. gluPerspective(35,((float)ancho/alto), 0.1, 1000);
  25. }
  26.  
  27. void dibujar(void)
  28. {
  29. glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  30. glMatrixMode(GL_MODELVIEW);
  31. glLoadIdentity();
  32. gluLookAt(3,2,3,0,0,0,0,1,0);
  33. glPushMatrix();
  34. glRotatef(45, 0, 0, 1);
  35. // Primera cara
  36. glBegin(GL_TRIANGLES);
  37. glColor3f(1.0,0.5,1.0);
  38. glVertex3f(0,1,0);
  39. glVertex3f(1,0,1);
  40. glVertex3f(-1,0,1);
  41. glEnd();
  42. // Segunda cara
  43. glBegin(GL_POLYGON);
  44. glColor3f(1.0,1.0,0.0);
  45. glVertex3f(0,1,0);
  46. glVertex3f(-1,0,1);
  47. glVertex3f(-1,0,-1);
  48. glEnd();
  49. // Tercera cara
  50. glBegin(GL_POLYGON);
  51. glColor3f(0.5,0.9,1.0);
  52. glVertex3f(0,1,0);
  53. glVertex3f(-1,0,-1);
  54. glVertex3f(1,0,-1);
  55. glEnd();
  56. // Cuarta cara
  57. glBegin(GL_POLYGON);
  58. glColor3f(0.5,0.9,1.0);
  59. glVertex3f(0,1,0);
  60. glVertex3f(1,0,-1);
  61. glVertex3f(1,0,1);
  62. glEnd();
  63. glPopMatrix();
  64. glutSwapBuffers();
  65. }
  66.  
  67. void teclado(unsigned char key, int x, int y)
  68. {
  69. if(key==27) exit(0);
  70. }
  71.  
  72. void main( int argc, char** argv)
  73. {
  74. glutInit(&argc,argv);
  75. glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
  76. glutInitWindowSize(320,240);
  77. glutCreateWindow("Intro");
  78.  
  79. // Registrar funciones
  80. init();
  81. glutIdleFunc(animacion);
  82. glutKeyboardFunc(teclado);
  83. glutDisplayFunc(dibujar);
  84. glutReshapeFunc(redimensionar);
  85.  
  86. // Bucle de eventos principal
  87. glutMainLoop();
  88. }

Muchas gracias.
5  Programación / Programación C/C++ / [Solucionado]Nuevo problemilla en herencia en: 24 Abril 2012, 05:31 am
Hola!

Ya tengo el codigo casi acabado... solo me da un error y es que no me almacena el nombre completo del propietario, solo la primera letra.

Código
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. //Declaracion clase VEHICULO
  5. class vehiculo
  6. {
  7. protected:
  8. char *cad;
  9. int litros;
  10. int kphMas;
  11. int kphMenos;
  12. int veloActual;
  13. int capaDepo;
  14. int año;
  15. int capDepo;
  16. int liDepo;
  17. public:
  18. vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c);
  19. ~vehiculo();
  20. void imprimir();
  21. void llenarDepo();
  22. void acelerar(int kphMas);
  23. void frenar(int kphMenos);
  24. char *leer(char *c);
  25. };
  26.  
  27. //Declaracion derivada MOTO
  28. class moto : public vehiculo
  29. {
  30. protected:
  31. int cilindrada;
  32. int cilinInicial;
  33. char *tipo;
  34. public:
  35. moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial, const char* c, const char *c1);
  36. ~moto();
  37. char* leer1(char* c1);
  38. void imprimir();
  39. };
  40.  
  41. //Declaracion derivada COCHE
  42. class coche : public vehiculo
  43. {
  44. protected:
  45. int asientos;
  46. int asientosInicial;
  47. char *marca;
  48. public:
  49. coche(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial, const char* c, const char *c1);
  50. ~coche();
  51. char * leer1(char* c1);
  52. void imprimir();
  53. };
  54.  
  55.  
  56. //Constructor VEHICULO
  57. vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c)
  58. {
  59. veloActual = veloInicial;
  60. liDepo = liInicial;
  61. capDepo = capDepoInicial;
  62. año = anioInicial;
  63. cad = new char[strlen(c)+1];
  64. strcpy(cad, c);
  65.  
  66. }
  67.  
  68. //Destructor VEHICULO
  69. vehiculo::~vehiculo()
  70. {
  71. delete [] cad;
  72. }
  73.  
  74. //Metodo leer VEHICULO
  75. char *vehiculo::leer(char* c)
  76. {
  77. strcpy(c, cad);
  78. return c;
  79. }
  80.  
  81. // Metodo llenar deposito  VEHICULO
  82. void vehiculo::llenarDepo()
  83. {
  84. cout << "Estas llenando el deposito..." << endl;
  85. for(; liDepo < capDepo; liDepo++)
  86. {
  87. }
  88. cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl;
  89. }
  90.  
  91. // Metodo imprimir VEHICULO
  92. void vehiculo::imprimir()
  93. {
  94. cout << "La velocidad actual es: "<< veloActual << endl;
  95. cout << "El año del coche es: " << año << endl;
  96. cout << "En el deposito hay: " << liDepo << endl;
  97. cout << "El nombre del propietario es: " << cad <<endl << endl;
  98. }
  99.  
  100. // Metodo acelerar VEHICULO
  101. void vehiculo::acelerar(int kphMas)
  102. {
  103. if(liDepo - kphMas / 10 > 0)
  104. {
  105. cout << "Estas acelerando!" << endl;
  106.    veloActual = veloActual + kphMas;
  107.    liDepo = liDepo - kphMas / 10;
  108.    cout << "Su velocidad actual es: " << veloActual << endl;
  109.    cout << "Su deposito actual es: " << liDepo << endl << endl;
  110. }
  111. else
  112. {
  113. cout << "El deposito esta vacio!" << endl << endl;
  114. veloActual = 0;
  115. }
  116. }
  117.  
  118. // Metodo frenar VEHICULO
  119. void vehiculo::frenar(int kphMenos)
  120. {
  121. if( veloActual - kphMenos > 0)
  122. {
  123. cout << "Estas frenando!" << endl;
  124. veloActual = veloActual - kphMenos;
  125. cout << "Su velocidad actual es: " << veloActual << endl << endl;
  126. }
  127. else
  128. {
  129. veloActual = 0;
  130. cout << "Ya estas parado!" << endl << endl;
  131. }
  132. }
  133.  
  134. // Constructor MOTO
  135. moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial,const char* c,  const char *c1):
  136. vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c)
  137. {
  138. cout << "Ha salido la moto del taller!" << endl << endl;
  139. veloActual = veloInicial;
  140. liDepo = liInicial;
  141. capDepo = capDepoInicial;
  142. año = anioInicial;
  143. cilindrada = cilinInicial;
  144. cad = new char[strlen(c)+1];
  145. strcpy(cad, c);
  146. tipo = new char[strlen(c1)+1];
  147. strcpy(tipo, c1);
  148. }
  149.  
  150. // Destructor Moto
  151. moto::~moto()
  152. {
  153. delete [] tipo;
  154. }
  155.  
  156. // Metodo leer MOTO
  157. char *moto::leer1(char* c1)
  158. {
  159. strcpy(c1, tipo);
  160. return c1;
  161. }
  162.  
  163. // Metodo imprimir MOTO
  164. void moto::imprimir()
  165. {
  166. cout << "La velocidad actual es: "<< veloActual << endl;
  167. cout << "El año del Moto es: " << año << endl;
  168. cout << "En el deposito hay: " << liDepo << endl;
  169. cout << "El nombre del propietario es: " << cad <<endl;
  170. cout << "La cilindrada de la moto es: " << cilindrada  <<endl;
  171. cout << "El tipo de la moto es: " << tipo << endl << endl;
  172. }
  173.  
  174. //Constructor COCHE
  175. coche::coche(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int asientosInicial,const char* c,  const char *c1):
  176. vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c)
  177. {
  178. cout << "Ha salido el coche del Parking!" << endl << endl;
  179. veloActual = veloInicial;
  180. liDepo = liInicial;
  181. capDepo = capDepoInicial;
  182. año = anioInicial;
  183. asientos = asientosInicial;
  184. cad = new char[strlen(c)+1];
  185. strcpy(cad, c);
  186. marca = new char[strlen(c1)+1];
  187. strcpy(marca, c1);
  188. }
  189.  
  190. // Destructor COCHE
  191. coche::~coche()
  192. {
  193. delete [] marca;
  194. }
  195.  
  196. // Metodo leer COCHE
  197. char *coche::leer1(char* c1)
  198. {
  199. strcpy(c1, marca);
  200. return c1;
  201. }
  202.  
  203. // Metodo imprimir COCHE
  204. void coche::imprimir()
  205. {
  206. cout << "La velocidad actual es: "<< veloActual << endl;
  207. cout << "El año del Moto es: " << año << endl;
  208. cout << "En el deposito hay: " << liDepo << endl;
  209. cout << "El nombre del propietario es: " << cad <<endl;
  210. cout << "El coche tiene: " << asientos << " asientos"  <<endl;
  211. cout << "La marca del coche es: " << marca << endl << endl;
  212. }
  213.  
  214. int main()
  215. {
  216. coche ferrari(0, 90, 90, 2012, 2, "Jonathan Gavilan Mora", "Ferrari");
  217. ferrari.acelerar(60);
  218. ferrari.acelerar(60);
  219. ferrari.acelerar(100);
  220. ferrari.acelerar(60);
  221. ferrari.acelerar(40);
  222. ferrari.frenar(100);
  223. ferrari.frenar(100);
  224. ferrari.frenar(120);
  225. ferrari.llenarDepo();
  226. cout << "Datos actuales de Ferrari: " << endl;
  227. ferrari.imprimir();
  228. moto honda(0, 50, 50, 2010, 1000,  "Jonathan Gavilan Mora", "Carretera");
  229. honda.acelerar(100);
  230. honda.acelerar(150);
  231. honda.acelerar(100);
  232. honda.frenar(200);
  233. honda.acelerar(100);
  234. honda.acelerar(100);
  235. honda.llenarDepo();
  236. cout << "Datos atuales de Honda: " << endl;
  237. honda.imprimir();
  238.  
  239. system("pause");
  240. return 0;
  241. }

Muchas gracias!


Edit: El problema estaba en la funcion imprimir() de coche y moto, estaban asi "*cad" y era asi "cad".
6  Programación / Programación C/C++ / herencia en: 23 Abril 2012, 17:28 pm
Hola,

De momento tengo este codigo(no esta acabado) pero ya me da error en los dos constructores (tengo un codigo donde solo sale la clase vehiculo y no me da error) y bueno a ver si me podeis ayudar por que vaya cacao llevo...

Código
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. //Declaracion clase VEHICULO
  5. class vehiculo
  6. {
  7. protected:
  8. char *cad;
  9. int litros;
  10. int kphMas;
  11. int kphMenos;
  12. int veloActual;
  13. int capaDepo;
  14. int año;
  15. int capDepo;
  16. int liDepo;
  17. public:
  18. vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c);
  19. ~vehiculo();
  20. void imprimir();
  21. void llenarDepo();
  22. void acelerar(int kphMas);
  23. void frenar(int kphMenos);
  24. char *leer(char *c);
  25. };
  26.  
  27. //Declaracion derivada MOTO
  28. class moto : public vehiculo
  29. {
  30. protected:
  31. int cilindrada;
  32. int cilinInicial;
  33. char *tipo;
  34. public:
  35. moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial,  int cilinInicial, const char* c, const char *c1);
  36. ~moto();
  37. char* leer1(char*c1);
  38. }
  39.  
  40. //Constructor VEHICULO
  41. vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c)
  42. {
  43. veloActual = veloInicial;
  44. liDepo = liInicial;
  45. capDepo = capDepoInicial;
  46. año = añoInicial;
  47. cad = new char[strlen(c)+1];
  48. strcpy(cad, c);
  49.  
  50. }
  51.  
  52. //Destructor VEHICULO
  53. vehiculo::~vehiculo()
  54. {
  55. delete [] cad;
  56. }
  57.  
  58. //Metodo leer VEHICULO
  59. char *vehiculo::leer(char* c)
  60. {
  61. strcpy(c, cad);
  62. return c;
  63. }
  64.  
  65. // Metodo llenar deposito  VEHICULO
  66. void vehiculo::llenarDepo()
  67. {
  68. cout << "Estas llenando el deposito..." << endl;
  69. for(; liDepo < capDepo; liDepo++)
  70. {
  71. }
  72. cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl;
  73. }
  74.  
  75. // Metodo imprimir VEHICULO
  76. void vehiculo::imprimir()
  77. {
  78. cout << "La velocidad actual es: "<< veloActual << endl;
  79. cout << "El año del coche es: " << año << endl;
  80. cout << "En el deposito hay: " << liDepo << endl;
  81. cout << "El nombre del propietario es: " << *cad <<endl << endl;
  82. }
  83.  
  84. // Metodo acelerar VEHICULO
  85. void vehiculo::acelerar(int kphMas)
  86. {
  87. if(liDepo > 0)
  88. {
  89. cout << "Estas acelerando!" << endl;
  90.    veloActual = veloActual + kphMas;
  91.    liDepo = liDepo - kphMas / 10;
  92.    cout << "Su velocidad actual es: " << veloActual << endl;
  93.    cout << "Su deposito actual es: " << liDepo << endl << endl;
  94. }
  95. else
  96. {
  97. cout << "El deposito esta vacio!" << endl << endl;
  98. }
  99. }
  100.  
  101. // Metodo frenar VEHICULO
  102. void vehiculo::frenar(int kphMenos)
  103. {
  104. if( veloActual - kphMenos > 0)
  105. {
  106. cout << "Estas frenando!" << endl;
  107. veloActual = veloActual - kphMenos;
  108. cout << "Su velocidad actual es: " << veloActual << endl << endl;
  109. }
  110. else
  111. {
  112. veloActual = 0;
  113. cout << "Ya estas parado!" << endl << endl;
  114. }
  115. }
  116.  
  117. // Constructor MOTO
  118. moto::moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial,  int cilinInicial,const char* c,  const char *c1):
  119. vehiculo( veloInicial,  liInicial,  capDepoInicial, añoInicial, *c)
  120. {
  121. veloActual = veloInicial;
  122. liDepo = liInicial;
  123. capDepo = capDepoInicial;
  124. año = añoInicial;
  125. cad = new char[strlen(c)+1];
  126. strcpy(cad, c);
  127. cilindrada = cilinInicial;
  128. tipo = new char[strlen(c1)+1];
  129. strcpy(tipo, c1);
  130. }
  131.  
  132. // Destructor Moto
  133. moto::~moto()
  134. {
  135. delete [] tipo;
  136. }
  137.  
  138. // Metodo leer MOTO
  139. char *moto::leer1(char* c1)
  140. {
  141. strcpy(c1, tipo);
  142. return c1;
  143. }
  144.  


Puede que haya cambiado algo de la clase base sin darme cuenta de tanto probar.

Muchas gracias!
7  Programación / Programación C/C++ / Programacion orientada a objetos en: 21 Abril 2012, 00:17 am
Buenas de nuevo,

Tengo este codigo y lo que me falla es cuando "vehiculo" acelera...
Me aparece por pantalla -8524654846( mas o menos) y no se por que es.

Gracias!
Código
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class vehiculo
  5. {
  6.  
  7. private:
  8. int litros;
  9. int kphMas;
  10. int kphMenos;
  11. int veloActual;
  12. int capaDepo;
  13. int año;
  14. int capDepo;
  15. int liDepo;
  16. char *propietario[25];
  17. public:
  18. vehiculo(int veloActual, int liDepo, int capDepo, int año);
  19. ~vehiculo();
  20. void imprimir(int año, char *propietario);
  21. int llenarDepo();
  22. int acelerar(int kphMas);
  23. int frenar(int kphMenos);
  24. void nPropietario(char* propietario);
  25. };
  26.  
  27. vehiculo::vehiculo(int veloActualual, int liDepo, int capDepo, int año)
  28. {
  29.  
  30. }
  31.  
  32. vehiculo::~vehiculo()
  33. {
  34. }
  35. int vehiculo::llenarDepo()
  36. {
  37. for(; liDepo <= capDepo; liDepo++)
  38. {
  39. cout << "El deposito esta lleno" << endl;
  40. }
  41. return liDepo;
  42. }
  43.  
  44. void vehiculo::imprimir(int año, char*propietario)
  45. {
  46. cout << "La velocidad actual es: "<< veloActual << endl;
  47. cout << "El año del coche es: " << año << endl;
  48. cout << "En el deposito hay: " << liDepo << endl;
  49. cout << "El nombre del propietario es: " << *propietario << endl;
  50. }
  51.  
  52.  
  53.  
  54. int vehiculo::acelerar(int kphMas)
  55. {
  56. cout << "Estas acelerando!" << endl;
  57. veloActual = veloActual + kphMas;
  58. liDepo = liDepo - kphMas / 2;
  59. cout << "Su velocidad actual es: " << veloActual << endl;
  60. cout << "Su deposito actual es: " << liDepo << endl;
  61. return veloActual;
  62. return liDepo;
  63. }
  64.  
  65. int vehiculo::frenar(int kphMenos)
  66. {
  67. if( veloActual >= 0)
  68. {
  69. cout << "Estas frenando!" << endl;
  70. veloActual = veloActual - kphMenos;
  71. cout << "Su velocidad actual es: " << veloActual << endl;
  72. }
  73. else
  74. {
  75. cout << "Ya estas parado!" << endl;
  76. }
  77. return veloActual;
  78. }
  79.  
  80. void vehiculo::nPropietario( char* propietario)
  81. {
  82. propietario[0] = 'P';
  83. propietario[1] = 'e';
  84. propietario[2] = 'p';
  85. propietario[3] = 'e';
  86. cout << "EL nombre del propietario es: " << *propietario << endl;
  87. }
  88.  
  89. int main()
  90. {
  91. vehiculo mercedes(0, 60, 60, 1990);
  92. mercedes.acelerar(50);
  93. mercedes.acelerar(50);
  94. mercedes.acelerar(50);
  95. mercedes.frenar(20);
  96. mercedes.frenar(65);
  97. mercedes.frenar(65);
  98. mercedes.frenar(10);
  99. system("pause");
  100. return 0;
  101. }
8  Programación / Programación C/C++ / Duda archivos abiertos en formato binario en: 17 Abril 2012, 06:05 am
Buenos dias,

He hecho este codigo para abrir una imagen en formato binario, y ahora me piden que modifique unos cuantos bytes de la mitad de la imagen mas o menos..
A ver si me podeis ayudar un poco por que no se me ocurre nada...

Como siempre, muchas gracias!
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9. string line;
  10. fstream mi_archivo ("C:\\Users\\jona\\Desktop\\ejercicios dos\\8.5\\pepe.png",ios::in|ios::binary);
  11. if(mi_archivo.is_open())
  12. {
  13. while(! mi_archivo.eof())
  14. {
  15. getline(mi_archivo, line);
  16. cout << line << endl;
  17. }
  18. mi_archivo.close();
  19. }
  20. else cout << "Error al abrir el archivo" << endl;
  21. system("pause");
  22. return 0;
  23. }
  24.  
9  Programación / Programación C/C++ / Punteros y arrays en: 14 Abril 2012, 09:31 am
Buenas!

Tengo este ejercicio en el que el usuario introuce cuantos numeros va a introducir...  luego pide los numeros y luego los muestra enorden inverso.
Código
  1. #include <iostream>
  2. #include <new>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int numero;
  8. int valor;
  9. int* puntero;
  10. cout << "Cuantos numeros desea introducir? " << endl;
  11. cin >> valor;
  12. puntero = new (nothrow) int[valor];
  13. if(puntero == 0)
  14. cout << " Error... no se pudieron introducir los valores..." << endl;
  15.  
  16. else
  17. {
  18. cout << "Introduzca los numero de uno en uno.. ejemplo( 1 (enter)... 2(enter)...)" << endl;
  19. for(numero= 0; numero < valor; numero++)
  20. {
  21. cout << "Introduzca el numero: " << endl;
  22.    cin >> puntero[numero];
  23. cout << endl;
  24. }
  25. for(int i = valor;  i > 0; i--)
  26. {
  27. cout << puntero[i] <<endl;
  28. }
  29.  
  30.  
  31. }
  32. system("pause");
  33. return 0;
  34. }

Da error en el primer numero que introduce para invertir.

Muchas gracias.
10  Programación / Programación C/C++ / Duda con punteros en: 13 Abril 2012, 05:03 am
Hola, tengo este codigo en el que se calcula la longitud de una cadena de caracteres. El problema es que cuando introducen un espacio se para el contador...

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int longitudCadena(char* );
  6.  
  7. int main()
  8. {
  9. char cadena[50];
  10. cout <<"Introduzca su frase a calcular: " << endl;
  11. cin >> cadena;
  12. longitudCadena(cadena);
  13. cout << "El tamaño de la frase es de: " << longitudCadena(cadena) << " Caracteres." << endl;
  14. system("pause");
  15. return 0;
  16. }
  17. int longitudCadena(char* cadena)
  18. {
  19.  
  20. int valor = 0;
  21. for(;*cadena != 0; valor++, cadena++);
  22.  
  23. return valor;
  24. }
  25.  

Muchas gracias.
Páginas: [1] 2 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines