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 - cazagavilan

#1
Buenas !


Código (cpp) [Seleccionar]
void NucleoMotor::LimpiarVector()
{
  // Elimina los elementos del vector
  vector<cSprite*>::iterator ivSprite;
  for (ivSprite = m_vcSprites.begin();
        ivSprite != m_vcSprites.end();
        ivSprite++)
  {

    delete (*ivSprite);
    m_vcSprites.erase(ivSprite);
    ivSprite--;
  }
}


El error es en la ejecución del programa.

Gracias!
#2
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
Diseño Gráfico / OpenGL Texturas
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 (cpp) [Seleccionar]
#include <Windows.h>
#include <GL\GL.h>
#include <GL\GLU.h>
#include <GL\glut.h>
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
#include <conio.h>
#define BITMAP_ID 0x4D42
GLuint nombres_texturas;
int angulo;

void init(void);
void redraw(void);
void reshape(int, int);

BITMAPINFOHEADER bitmapInfoHeader;
unsigned char* bitmapData;

unsigned char* LoadBitmapFile(char *filename, BITMAPINFOHEADER *bitmapInfoHeader)
{
   FILE *filePtr;                       // Puntero a programa
   BITMAPFILEHEADER bitmapFileHeader;   // Bitmap file header
   unsigned char *bitmapImage;          // Bitmap image data
   int imageIdx = 0;             // Index de la imagen
   unsigned char tempRGB;

   // Abrimos el archivo en binary mode
   filePtr = fopen(filename,"rb");
   if(filePtr == NULL)
      return NULL;

   // Leemos el bitmap file header
   fread(&bitmapFileHeader, sizeof(BITMAPFILEHEADER),1,filePtr);

   // Verificamos que sea un BItmap
   if(bitmapFileHeader.bfType != BITMAP_ID)
   {
      fclose(filePtr);
      return NULL;
   }

   // Leemos la información del bitmap header
   fread(bitmapInfoHeader, sizeof(BITMAPINFOHEADER),1,filePtr);

   // Movemos el puntero al principio del bitmap
   fseek(filePtr, bitmapFileHeader.bfOffBits, SEEK_SET);

   // Guardamos suficiente memoria para el archivo
   bitmapImage=(unsigned char*) malloc(bitmapInfoHeader->biSizeImage);

   // Verificamos la memoria
   if(!bitmapImage)
   {
      free(bitmapImage);
      fclose(filePtr);
      return NULL;
   }
   fread(bitmapImage,1,bitmapInfoHeader->biSizeImage,filePtr);
   if(bitmapImage == NULL)
   {
      fclose(filePtr);
      return NULL;
   }

   // Cambiamos la imagen a RGB
   for(imageIdx = 0; imageIdx<(int)bitmapInfoHeader->biSizeImage; imageIdx+=3)
   {
      tempRGB = bitmapImage[imageIdx];
      bitmapImage[imageIdx]=bitmapImage[imageIdx+2];
      bitmapImage[imageIdx + 2] = tempRGB;
   }

   // Cerramos el archivo y devolvemos la imagen
   fclose(filePtr);
   return bitmapImage;
}

void init(void)
{
   glClearColor(1.0,1.0,1.0,0.0); // Color fondo pantalla
   glEnable(GL_CULL_FACE);
   glEnable(GL_DEPTH_TEST); // Test de profundidad !IMPORTANTE
   glShadeModel(GL_SMOOTH); // Modo sombreado de poligonos
   glMatrixMode(GL_MODELVIEW);
   gluLookAt(3,-3,3,0,0,0,0,1,0);

   glEnable(GL_TEXTURE_2D);
   glGenTextures(1,&nombres_texturas); // Genero el nombre de la textura

   glBindTexture(GL_TEXTURE_2D, nombres_texturas); // Activamos la textura
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
   bitmapData = LoadBitmapFile("agua.bmp", &bitmapInfoHeader);
   gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, bitmapInfoHeader.biWidth,
      bitmapInfoHeader.biHeight, GL_RGB, GL_UNSIGNED_BYTE, bitmapData);

}

void animacion(void)
{
   angulo = (angulo+1)%360;
   Sleep(50);
   glutPostRedisplay();
}

void redraw()
{
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glPushMatrix();
   // Activo la textura

   glRotatef(angulo,0,1,0);
   glBindTexture(GL_TEXTURE_2D, nombres_texturas);

   // Primera cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(1,0,1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

    // Segunda cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(1,0,1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(1,0,-1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

   // Tercera cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(1,0,-1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,-1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

   // Cuarta cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,-1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

   // Quinta cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,-1);
   glTexCoord2f(1.0f, 1.0f); glVertex3f(1,0,-1);
   glTexCoord2f(0.0f, 1.0f); glVertex3f(1,0,1);
   glEnd();
   glPopMatrix();
   glutSwapBuffers();
}

void reshape( int anchura, int altura)
{
   glViewport(0,0,(GLsizei) anchura, (GLsizei)altura);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(40.0, (GLfloat) anchura/(GLfloat) altura, 1.0, 20.0);
   glMatrixMode(GL_MODELVIEW);
}

   void keyboard(unsigned char tecla, int x, int y)
   {
      if(tecla==27) exit(0);
      if(tecla=='a') glutIdleFunc(animacion);
      if(tecla=='p') glutIdleFunc(NULL);
   }

   void main( int argc, char*argv[])
   {
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
      glutInitWindowSize(320, 240);
      glutCreateWindow("Mapa de Bits");
      init();
      glutDisplayFunc(redraw);
      glutReshapeFunc(reshape);
      glutKeyboardFunc(keyboard);
      glutIdleFunc(animacion);
      glutMainLoop();
   }


Gracias!
#4
Programación C/C++ / OpenGL
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 (cpp) [Seleccionar]
#include <Windows.h>
#include <gl\glut.h>
#include <gl\gl.h>
#include <gl\GLU.h>
void animacion(void);
void init(void);
void dibujar(void);
void redimensionar(int, int);
void teclado (unsigned char, int);
void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);

void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_FLAT);
}

void redimensionar(int ancho, int alto)
{
glViewport(0,0,(GLint)ancho, (GLint)alto);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(35,((float)ancho/alto), 0.1, 1000);
}

void dibujar(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(3,2,3,0,0,0,0,1,0);
glPushMatrix();
glRotatef(45, 0, 0, 1);
// Primera cara
glBegin(GL_TRIANGLES);
glColor3f(1.0,0.5,1.0);
glVertex3f(0,1,0);
glVertex3f(1,0,1);
glVertex3f(-1,0,1);
glEnd();
// Segunda cara
glBegin(GL_POLYGON);
glColor3f(1.0,1.0,0.0);
glVertex3f(0,1,0);
glVertex3f(-1,0,1);
glVertex3f(-1,0,-1);
glEnd();
// Tercera cara
glBegin(GL_POLYGON);
glColor3f(0.5,0.9,1.0);
glVertex3f(0,1,0);
glVertex3f(-1,0,-1);
glVertex3f(1,0,-1);
glEnd();
// Cuarta cara
glBegin(GL_POLYGON);
glColor3f(0.5,0.9,1.0);
glVertex3f(0,1,0);
glVertex3f(1,0,-1);
glVertex3f(1,0,1);
glEnd();
glPopMatrix();
glutSwapBuffers();
}

void teclado(unsigned char key, int x, int y)
{
if(key==27) exit(0);
}

void main( int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(320,240);
glutCreateWindow("Intro");

// Registrar funciones
init();
glutIdleFunc(animacion);
glutKeyboardFunc(teclado);
glutDisplayFunc(dibujar);
glutReshapeFunc(redimensionar);

// Bucle de eventos principal
glutMainLoop();
}


Muchas gracias.
#5
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 (cpp) [Seleccionar]
#include<iostream>
#include<cstring>
using namespace std;
//Declaracion clase VEHICULO
class vehiculo
{
protected:
char *cad;
int litros;
int kphMas;
int kphMenos;
int veloActual;
int capaDepo;
int año;
int capDepo;
int liDepo;
public:
vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c);
~vehiculo();
void imprimir();
void llenarDepo();
void acelerar(int kphMas);
void frenar(int kphMenos);
char *leer(char *c);
};

//Declaracion derivada MOTO
class moto : public vehiculo
{
protected:
int cilindrada;
int cilinInicial;
char *tipo;
public:
moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial, const char* c, const char *c1);
~moto();
char* leer1(char* c1);
void imprimir();
};

//Declaracion derivada COCHE
class coche : public vehiculo
{
protected:
int asientos;
int asientosInicial;
char *marca;
public:
coche(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial, const char* c, const char *c1);
~coche();
char * leer1(char* c1);
void imprimir();
};


//Constructor VEHICULO
vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c)
{
veloActual = veloInicial;
liDepo = liInicial;
capDepo = capDepoInicial;
año = anioInicial;
cad = new char[strlen(c)+1];
strcpy(cad, c);

}

//Destructor VEHICULO
vehiculo::~vehiculo()
{
delete [] cad;
}

//Metodo leer VEHICULO
char *vehiculo::leer(char* c)
{
strcpy(c, cad);
return c;
}

// Metodo llenar deposito  VEHICULO
void vehiculo::llenarDepo()
{
cout << "Estas llenando el deposito..." << endl;
for(; liDepo < capDepo; liDepo++)
{
}
cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl;
}

// Metodo imprimir VEHICULO
void vehiculo::imprimir()
{
cout << "La velocidad actual es: "<< veloActual << endl;
cout << "El año del coche es: " << año << endl;
cout << "En el deposito hay: " << liDepo << endl;
cout << "El nombre del propietario es: " << cad <<endl << endl;
}

// Metodo acelerar VEHICULO
void vehiculo::acelerar(int kphMas)
{
if(liDepo - kphMas / 10 > 0)
{
cout << "Estas acelerando!" << endl;
   veloActual = veloActual + kphMas;
   liDepo = liDepo - kphMas / 10;
   cout << "Su velocidad actual es: " << veloActual << endl;
   cout << "Su deposito actual es: " << liDepo << endl << endl;
}
else
{
cout << "El deposito esta vacio!" << endl << endl;
veloActual = 0;
}
}

// Metodo frenar VEHICULO
void vehiculo::frenar(int kphMenos)
{
if( veloActual - kphMenos > 0)
{
cout << "Estas frenando!" << endl;
veloActual = veloActual - kphMenos;
cout << "Su velocidad actual es: " << veloActual << endl << endl;
}
else
{
veloActual = 0;
cout << "Ya estas parado!" << endl << endl;
}
}

// Constructor MOTO
moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial,const char* c,  const char *c1):
vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c)
{
cout << "Ha salido la moto del taller!" << endl << endl;
veloActual = veloInicial;
liDepo = liInicial;
capDepo = capDepoInicial;
año = anioInicial;
cilindrada = cilinInicial;
cad = new char[strlen(c)+1];
strcpy(cad, c);
tipo = new char[strlen(c1)+1];
strcpy(tipo, c1);
}

// Destructor Moto
moto::~moto()
{
delete [] tipo;
}

// Metodo leer MOTO
char *moto::leer1(char* c1)
{
strcpy(c1, tipo);
return c1;
}

// Metodo imprimir MOTO
void moto::imprimir()
{
cout << "La velocidad actual es: "<< veloActual << endl;
cout << "El año del Moto es: " << año << endl;
cout << "En el deposito hay: " << liDepo << endl;
cout << "El nombre del propietario es: " << cad <<endl;
cout << "La cilindrada de la moto es: " << cilindrada  <<endl;
cout << "El tipo de la moto es: " << tipo << endl << endl;
}

//Constructor COCHE
coche::coche(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int asientosInicial,const char* c,  const char *c1):
vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c)
{
cout << "Ha salido el coche del Parking!" << endl << endl;
veloActual = veloInicial;
liDepo = liInicial;
capDepo = capDepoInicial;
año = anioInicial;
asientos = asientosInicial;
cad = new char[strlen(c)+1];
strcpy(cad, c);
marca = new char[strlen(c1)+1];
strcpy(marca, c1);
}

// Destructor COCHE
coche::~coche()
{
delete [] marca;
}

// Metodo leer COCHE
char *coche::leer1(char* c1)
{
strcpy(c1, marca);
return c1;
}

// Metodo imprimir COCHE
void coche::imprimir()
{
cout << "La velocidad actual es: "<< veloActual << endl;
cout << "El año del Moto es: " << año << endl;
cout << "En el deposito hay: " << liDepo << endl;
cout << "El nombre del propietario es: " << cad <<endl;
cout << "El coche tiene: " << asientos << " asientos"  <<endl;
cout << "La marca del coche es: " << marca << endl << endl;
}

int main()
{
coche ferrari(0, 90, 90, 2012, 2, "Jonathan Gavilan Mora", "Ferrari");
ferrari.acelerar(60);
ferrari.acelerar(60);
ferrari.acelerar(100);
ferrari.acelerar(60);
ferrari.acelerar(40);
ferrari.frenar(100);
ferrari.frenar(100);
ferrari.frenar(120);
ferrari.llenarDepo();
cout << "Datos actuales de Ferrari: " << endl;
ferrari.imprimir();
moto honda(0, 50, 50, 2010, 1000,  "Jonathan Gavilan Mora", "Carretera");
honda.acelerar(100);
honda.acelerar(150);
honda.acelerar(100);
honda.frenar(200);
honda.acelerar(100);
honda.acelerar(100);
honda.llenarDepo();
cout << "Datos atuales de Honda: " << endl;
honda.imprimir();

system("pause");
return 0;
}


Muchas gracias!


Edit: El problema estaba en la funcion imprimir() de coche y moto, estaban asi "*cad" y era asi "cad".
#6
Programación C/C++ / herencia
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 (cpp) [Seleccionar]
#include<iostream>
#include<cstring>
using namespace std;
//Declaracion clase VEHICULO
class vehiculo
{
protected:
char *cad;
int litros;
int kphMas;
int kphMenos;
int veloActual;
int capaDepo;
int año;
int capDepo;
int liDepo;
public:
vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c);
~vehiculo();
void imprimir();
void llenarDepo();
void acelerar(int kphMas);
void frenar(int kphMenos);
char *leer(char *c);
};

//Declaracion derivada MOTO
class moto : public vehiculo
{
protected:
int cilindrada;
int cilinInicial;
char *tipo;
public:
moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial,  int cilinInicial, const char* c, const char *c1);
~moto();
char* leer1(char*c1);
}

//Constructor VEHICULO
vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c)
{
veloActual = veloInicial;
liDepo = liInicial;
capDepo = capDepoInicial;
año = añoInicial;
cad = new char[strlen(c)+1];
strcpy(cad, c);

}

//Destructor VEHICULO
vehiculo::~vehiculo()
{
delete [] cad;
}

//Metodo leer VEHICULO
char *vehiculo::leer(char* c)
{
strcpy(c, cad);
return c;
}

// Metodo llenar deposito  VEHICULO
void vehiculo::llenarDepo()
{
cout << "Estas llenando el deposito..." << endl;
for(; liDepo < capDepo; liDepo++)
{
}
cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl;
}

// Metodo imprimir VEHICULO
void vehiculo::imprimir()
{
cout << "La velocidad actual es: "<< veloActual << endl;
cout << "El año del coche es: " << año << endl;
cout << "En el deposito hay: " << liDepo << endl;
cout << "El nombre del propietario es: " << *cad <<endl << endl;
}

// Metodo acelerar VEHICULO
void vehiculo::acelerar(int kphMas)
{
if(liDepo > 0)
{
cout << "Estas acelerando!" << endl;
   veloActual = veloActual + kphMas;
   liDepo = liDepo - kphMas / 10;
   cout << "Su velocidad actual es: " << veloActual << endl;
   cout << "Su deposito actual es: " << liDepo << endl << endl;
}
else
{
cout << "El deposito esta vacio!" << endl << endl;
}
}

// Metodo frenar VEHICULO
void vehiculo::frenar(int kphMenos)
{
if( veloActual - kphMenos > 0)
{
cout << "Estas frenando!" << endl;
veloActual = veloActual - kphMenos;
cout << "Su velocidad actual es: " << veloActual << endl << endl;
}
else
{
veloActual = 0;
cout << "Ya estas parado!" << endl << endl;
}
}

// Constructor MOTO
moto::moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial,  int cilinInicial,const char* c,  const char *c1):
vehiculo( veloInicial,  liInicial,  capDepoInicial, añoInicial, *c)
{
veloActual = veloInicial;
liDepo = liInicial;
capDepo = capDepoInicial;
año = añoInicial;
cad = new char[strlen(c)+1];
strcpy(cad, c);
cilindrada = cilinInicial;
tipo = new char[strlen(c1)+1];
strcpy(tipo, c1);
}

// Destructor Moto
moto::~moto()
{
delete [] tipo;
}

// Metodo leer MOTO
char *moto::leer1(char* c1)
{
strcpy(c1, tipo);
return c1;
}



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

Muchas gracias!
#7
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 (cpp) [Seleccionar]
#include<iostream>
using namespace std;

class vehiculo
{

private:
int litros;
int kphMas;
int kphMenos;
int veloActual;
int capaDepo;
int año;
int capDepo;
int liDepo;
char *propietario[25];
public:
vehiculo(int veloActual, int liDepo, int capDepo, int año);
~vehiculo();
void imprimir(int año, char *propietario);
int llenarDepo();
int acelerar(int kphMas);
int frenar(int kphMenos);
void nPropietario(char* propietario);
};

vehiculo::vehiculo(int veloActualual, int liDepo, int capDepo, int año)
{

}

vehiculo::~vehiculo()
{
}
int vehiculo::llenarDepo()
{
for(; liDepo <= capDepo; liDepo++)
{
cout << "El deposito esta lleno" << endl;
}
return liDepo;
}

void vehiculo::imprimir(int año, char*propietario)
{
cout << "La velocidad actual es: "<< veloActual << endl;
cout << "El año del coche es: " << año << endl;
cout << "En el deposito hay: " << liDepo << endl;
cout << "El nombre del propietario es: " << *propietario << endl;
}



int vehiculo::acelerar(int kphMas)
{
cout << "Estas acelerando!" << endl;
veloActual = veloActual + kphMas;
liDepo = liDepo - kphMas / 2;
cout << "Su velocidad actual es: " << veloActual << endl;
cout << "Su deposito actual es: " << liDepo << endl;
return veloActual;
return liDepo;
}

int vehiculo::frenar(int kphMenos)
{
if( veloActual >= 0)
{
cout << "Estas frenando!" << endl;
veloActual = veloActual - kphMenos;
cout << "Su velocidad actual es: " << veloActual << endl;
}
else
{
cout << "Ya estas parado!" << endl;
}
return veloActual;
}

void vehiculo::nPropietario( char* propietario)
{
propietario[0] = 'P';
propietario[1] = 'e';
propietario[2] = 'p';
propietario[3] = 'e';
cout << "EL nombre del propietario es: " << *propietario << endl;
}

int main()
{
vehiculo mercedes(0, 60, 60, 1990);
mercedes.acelerar(50);
mercedes.acelerar(50);
mercedes.acelerar(50);
mercedes.frenar(20);
mercedes.frenar(65);
mercedes.frenar(65);
mercedes.frenar(10);
system("pause");
return 0;
}
#8
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 (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <string>
using namespace std;


int main()
{
string line;
fstream mi_archivo ("C:\\Users\\jona\\Desktop\\ejercicios dos\\8.5\\pepe.png",ios::in|ios::binary);
if(mi_archivo.is_open())
{
while(! mi_archivo.eof())
{
getline(mi_archivo, line);
cout << line << endl;
}
mi_archivo.close();
}
else cout << "Error al abrir el archivo" << endl;
system("pause");
return 0;
}
#9
Programación C/C++ / Punteros y arrays
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 (cpp) [Seleccionar]
#include <iostream>
#include <new>
using namespace std;

int main()
{
int numero;
int valor;
int* puntero;
cout << "Cuantos numeros desea introducir? " << endl;
cin >> valor;
puntero = new (nothrow) int[valor];
if(puntero == 0)
cout << " Error... no se pudieron introducir los valores..." << endl;

else
{
cout << "Introduzca los numero de uno en uno.. ejemplo( 1 (enter)... 2(enter)...)" << endl;
for(numero= 0; numero < valor; numero++)
{
cout << "Introduzca el numero: " << endl;
    cin >> puntero[numero];
cout << endl;
}
for(int i = valor;  i > 0; i--)
{
cout << puntero[i] <<endl;
}


}
system("pause");
return 0;
}


Da error en el primer numero que introduce para invertir.

Muchas gracias.
#10
Programación C/C++ / Duda con punteros
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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;


int longitudCadena(char* );

int main()
{
char cadena[50];
cout <<"Introduzca su frase a calcular: " << endl;
cin >> cadena;
longitudCadena(cadena);
cout << "El tamaño de la frase es de: " << longitudCadena(cadena) << " Caracteres." << endl;
system("pause");
return 0;
}
int longitudCadena(char* cadena)
{

int valor = 0;
for(;*cadena != 0; valor++, cadena++);

return valor;
}


Muchas gracias.
#11
Programación C/C++ / Duda funcion palindromo
9 Abril 2012, 09:55 AM
Hola de nuevo, tengo que hacer una funcion (bool palindromo(char palabra[40]))
que devuelva true si es un palindromo y false si no lo es, tambien debe evitar los espacios en blanco y no deve hacer distinciones entre mayusculas y minusculas.

De momento tengo esto pero la verdad es que no tengo ni idea de como seguir...
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

char palabra[40];
char palindromo(char palabra[40])
{
for(int i = 0; palabra[i] != 0; i++)
{
if(palabra[i] != 32)
{
cout << palabra[i];
}
}
return 0;
}



int main()
{
char result;
cout << "Introduzca su frase o palabra: \n";
cin.getline(palabra, 40);

result = palindromo(palabra);
cout << result;
system("pause");
}


Char palindromo deve ser bool palindromo solo lo puse asi para comprobar que quita los espacios en blanco.

Muchas gracias!
#12
Hola, tengo que hacer una funcion "bool incrementar(char numeri[10])" donde si la cadena tiene numeros devuelva true y si no false y si en el numero es menor a 999999999 lo incremente hasta 999999999.

Esto es lo que tengo de momento... he probado varias cosas pero no lo consigo... A ver si me podeis dar una pista.

Muchas gracias.
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
bool incrementar (char numero[10]);
char numero[10];
int main()
{
cout << "Introduzca un numero de nueve digitos o menos: \n";
cin >> numero[10];
incrementar(numero);
cout << numero;
system("pause");

}

// Función incremetnar----------------------------------------------
bool incrementar ( char numero[10])
{
int aux = numero[10];
if(aux < 999999999)
{
for( ; aux < 999999999; aux++)
    {
cout << numero[aux];
}
return true;
}

else
{
cout << "El numero no es correcto";
return false;
}
}
#13
Programación C/C++ / Duda tabla [5][5]
29 Marzo 2012, 20:59 PM
Hola, tengo este codigo y lo que me gustaria que hiciera es que se mostrara una tabla de 5x5 (1 2 3 4 5
            6 7 8 9 10
            11 12 13 14 15
            16 17 18 19 20
            21 22 23 24 25)
Con alguna pista me vale.

Gracias
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
int tabla[5][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
cout << tabla[i][j] << "\t";
}
        }
system("pause");

}
#14
Programación C/C++ / duda for
28 Marzo 2012, 06:44 AM
Hola, Tengo este ejercicio en el que tengo casi todo resuelto pero me falta que el espacio de cada fila sea igual al numero de la fila, por ejemplo en  la fila uno un espacio en la dos dos espacios y asi hasta la nueve. Si alguien me puede dar una pista lo agradeceria mucho...

Gracias.

Código (cpp) [Seleccionar]

       #include <iostream>
using namespace std;
     
int main()
{
int filas = 9;
int i;
int j;
int espacio;

for(i = 1; i <= filas; i++)
{
for(espacio = i; espacio <= i; espacio++)
cout << " ";
cout<<i;
for(j = i + 1; j <= (2 * i - 1); j++)
cout << j%10;
for(j=j-2; j >= i; j--)
cout << j%10;
cout << endl;
}
getchar();
getchar();
return 0;
}
#15
Programación C/C++ / Compilando
11 Diciembre 2011, 12:34 PM
Hola, con este código en que carpeta se supone que tienen que estar alojados mis iconos...

//-------------------------------------
// Recursos Meteoritos
// Archivo de recursos / Meteoritos.rc
//-------------------------------------

// Archivos de inclusión
#include "Recursos.h"

//Iconos
IDI_METEORITO ICON "Recursos\\Meteorito.ico"
IDI_METEORITO_SM ICON "Recursos\\Meteorito.ico"

He probado moverlos a todas las carpetas y el nombre esta igual.. tambien he probado incluir una linea mas al final en blanco y nada..

El error es este ...

1>Meteoritos.rc(10): error RC2135: file not found: Recursos\Meteorito.ico
1> 
1> 
1>Meteoritos.rc(11): error RC2135: file not found: Recursos\Meteorito.ico


Gracias.
#16
Programación C/C++ / compilador gratuito
9 Diciembre 2011, 07:54 AM
Hola, alguien me puede decir un compilador gratuito o un programa que me permita crear archivos .rc compatible con visual studio c++.

Normalmente uso Microsoft visual studio c++ 2010 express pero he comprobado que por ser gratuito no me permite crear .rc.

Muchas gracias.
#17
Programación C/C++ / Nuevo error al compilar
23 Noviembre 2011, 22:13 PM
1>  Todas las salidas están actualizadas.
1>ResourceCompile:
1> 
1>Meteoritos.rc(6): error RC2135: file not found: Recursos\Meteorito.ico
1> 
1> 
1>Meteoritos.rc(7): error RC2135: file not found: Recursos\Meteorito_sm.ico
1> 
1>
1>ERROR al compilar.

Hola, me ha surgido otro error al compilar y no entiendo por que, tengo el archivo que "no encuentra" y tiene el nombre bien osea que no entiendo..

Puede ser que pase por algun otro motivo?

Gracias.
#18
Programación C/C++ / Error al compilar
23 Noviembre 2011, 20:02 PM
Hola a ver si alguien me puede decir por que se me produce este error:

1>Recursos.h(6): fatal error RC1004: unexpected end of file found.
Código (cpp) [Seleccionar]
//Identificadores de recursos
//Encabezado C++ / Recursos.h

//Iconos Rango : 1000 - 1100
#define IDI_METEORITO 1000
#define IDI_METEORITO_SM 1001


Gracias.
#19
Programación C/C++ / Visual C++ y archivos .rc
22 Noviembre 2011, 21:29 PM
Hola, uso el programa microsoft visual C++ 2010 expres, el problema viene cuando clico (proyecto/agregar elemento) y no encuentro el archivo script de recursos (.rc). Creo que es por ser la version gratuita pero no estoy seguro..

Si alguien sabe por que pasa esto le agradeceria que me lo deigera...

Gracias.
#20
Programación C/C++ / dark gdk y directx
14 Noviembre 2011, 21:48 PM
Hola, he acabado un libro hace poco de c\c++ y ahora estoy empezando uno de dark gdk, la pregunta es, se puede complementar dark gdk y directx? y o es aconsejable?

Gracias y perdon por mi ignorancia sobre este tema...

#21
Programación C/C++ / Directx...
6 Noviembre 2011, 18:21 PM
Hola me gustaria saber todos los pasos para crear un videojuego en 3d con directx, de momento estoy acabando el libro "Programacion C++ de Jesse Liberty y Rogers Cadenhead.

Gracias.

P.D: No pretendo hacer un super juego comercial osea que se abstengan las respuestas inutiles. Gracias de nuevo.
#22
Programación C/C++ / Sumar un porcentaje
24 Julio 2011, 08:42 AM
Hola, tengo este codigo en el que pido un precio y un iva para despues sumarlos el problema que tengo es que no se como hacer que el numero  introduzido en iva se convierta en un porcentaje, por ejemplo: ellos me introduzen el numero 18 y yo lo paso a %18.

Código (cpp) [Seleccionar]
#include "stdafx.h"
#include "iostream"
using namespace std;
double total (double, double);

void main()
{
double precio, iva;
cout << "Introduzca el precio: " ;
cin >> precio;
cout << "Introduzca el iva: " ;
cin >> iva;
cout << "El total es: " << total(precio,iva) << "\n";
}
double total ( double precio, double iva)
{
double total = precio+iva;
return total;
}


Gracias.
#23
Código (cpp) [Seleccionar]
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
     
    double Area( double &base, double &alt)
    {
       double area = base*alt/2.;
        return area;
    }

Hola , pues como el titulo indica me piden que haga un procedimiento que calcule el area de un triangulo y he hecho este codigo basandome en un ejemplo de un cuadrado pero me dice que " se debe definir el punto de entrada" ayuda por favor..

Gracias.
#24
3
33
66
696
690096
90390
90366309
Código (cpp) [Seleccionar]
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
         
    int main()
    {
            const int filas = 9;
            int i;
            int n;
            cout <<"Introduzca el numero deseado: \n";
        cin >> n;
            for(i = 1; i <= filas; i++)
            {
                    for( n=n; n<=0; n++)
                    {
                            if ( n % n != 0) continue;
                        cout << n;
                    }
            }
    }

Hola, esto es lo que me ha salido, un desastre, a ver si alguien me puede dar una pista, por favor ser un poco comprensivos.

Gracias.
#25
Programación C/C++ / Calculadora con switch
21 Julio 2011, 06:40 AM
Código (cpp) [Seleccionar]
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;

int main()

{
  int dato1;
  int dato2;
  int resultado;
     cout <<"****************************************\n";
     cout <<"*****                              *****\n";
     cout <<"****                                ****\n";
     cout <<"***                                  ***\n";
     cout <<"**                                    **\n";
     cout <<"*             CALCULADORA              *\n";
     cout <<"**                                    **\n";
     cout <<"***                                  ***\n";
     cout <<"****                                ****\n";
     cout <<"*****                              *****\n";
     cout <<"****************************************\n";

     cout <<"Que desea hacer?\n";
     cout <<"[1]-Suma.\n";
     cout <<"[2]-Resta.\n";
     cout <<"[3]-Multiplicacion.\n";
     cout <<"[4]-Division.\n";
     cin >> resultado;

     cout <<"Escriba la primera cifra: ";
     cin >> dato1;
     cout <<"Escriba la segunda cifra: ";
     cin >> dato2;

     switch(resultado)
     {
     case 1:
        resultado = dato1 + dato2;
        break;
     case 2:
        resultado = dato1 - dato2;
        break;
     case 3:
        resultado = dato1 * dato2;
        break;
     case 4:
        resultado = dato1 / dato2;
       default:
        cout <<"No ha seleccionado una opcion correcta";
     }
     cout << resultado <<"\n";
}

Hola, he hecho esta calculadora y me funciona todo menos cuando pongo un numero que no es ninguna de las opciones que doy, en vez de saltar el mensage cuando se selecciona una opcion incorrecta te dice que selecciones el dato1 y dato2 luego hace una suma y luego me salta el mensage... alguien me podria ayudar por favor.

Gracias.

P.D: He encontrado otro fallo, cuando selecciono la division siempre me salta el mensage de default y aparte me da el resultado:/.
#26
Programación C/C++ / triangulo numerico duda
19 Julio 2011, 17:41 PM
Hola necesito hacer esto:
1
232
34543
4567654
567898765
67890109876
7890123210987
890123454321098
90123456765432109

Código (cpp) [Seleccionar]
#include "stdafx.h"
#include <iostream>
using namespace System;

int main()

{
   int filas = 9;
   int i;
   int j;
   {
      for (i = 1; i <= filas; ++i);
      {
         for (j = i; j <= (2 * i - 1); ++j);
         {
            cout << i << j;
            {
               for (j = 2; j >= i; --j);
            }
            {
               cout << i << j;
            }
         }
      }
   }
}

He intentado hacerlo asi pero soy muy novato y me da error me dice que cout no esta declarado alguien me puede decir en que fallo? gracias.
#27
Programación C/C++ / Duda con for
21 Abril 2011, 10:19 AM
Hola tengo que hacer un programa con for y cout que haga esto:
1
232
  34543
   4567654
    567898765
     67890109876
      7890123210987
       890123454321098
        90123456765432109
       
He probado varias cosas pero ni se me acercan a ver si alguien me puede hechar una mano gracias.
#28
Programación C/C++ / Duda con do-while
17 Abril 2011, 18:21 PM
Hola, tengo que hacer un mini menu que me permita hacer una suma o salir del programa lo he intentado ( como no ) pero nada no me sale .Cuando sumo me salen numeros raros y si quiero salir del programa sale pero tengo que poner 0 dos veces.
Código (cpp) [Seleccionar]
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()

{
int a;
int b;
    int suma;
(suma = a+b);
do{
cout <<"****************************************\n";
cout <<"*****                                                     *****\n";
cout <<"****                                                        ****\n";
cout <<"***                                                           ***\n";
cout <<"**                                                              **\n";
cout <<"*                CALCULADORA DE SUMAS           *\n";
cout <<"**                                                              **\n";
cout <<"***                                                           ***\n";
cout <<"****                                                        ****\n";
cout <<"*****                                                     *****\n";
cout <<"****************************************\n";

cout <<"Escriba las dos cifras a sumar o pulse la tecla cero para salir: \n";
    cin >> a >> b;
cout << a << "+" << b << "=" << suma <<"\n";
}while (a <= 0);
return 0;
}



Tambien me da este error :warning C4700: se utilizó la variable local 'a' sin inicializar.
warning C4700: se utilizó la variable local 'b' sin inicializar.

A ver si me podeis ayudar, Gracias.

#29
Programación C/C++ / duda con while
16 Abril 2011, 10:28 AM
Hola, se supone que tengo que hacer un programa en el que el usuario introduce un numero , el programa tiene que empezar a contar desde 1 hasta que llega al numero del usuario y parar, lo he intentado pero me da numeros sin parar, a ver si me podeis ayudar gracias.
Código (cpp) [Seleccionar]
                                                             

#include <iostream>
using namespace std;

int main()

{
int n;
int l = 1;
cout <<"Escribe el numero que desees: ";
cin >> n;
while (n = n){

cout << l << " ,","\n";
++l;
}
return 0;
}


P.D: tambien tengo que hacer que los numero salgan en 10 columnas pero eso ya me apañare luego.
Gracias de nuevo.
#30
Me da un monton de numeros que no cuadran y algunos signos, alguien me dice donde fallo?

Código (cpp) [Seleccionar]
#include <stdafx.h>
#include <iostream>
using namespace std;

float main()
{

double euros;
    double pesetas;

euros = pesetas / 166.38;

    cout << "Introduzca su cantidad en pesetas: " << endl;
    cin >> pesetas;
cout << "Su cantidad en euros es: " << euros << endl;

return 0;
}


Gracias.
#31
Hola, alguien me podria decir como hacer un programa que el usuario introduzca una cadena de caracteres y se la devuelva al reves con cout y cin? muchas gracias.