tienes que capturar un string y luego intentar convertirlo a int... si la conversión no es satisfactoria muestras un mensaje de error y repites el proceso.
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úCita de: erest0r en 28 Marzo 2014, 14:36 PM
Simplemente la use para saber si cuando el objeto se mueva a la posicion siguiente no haya obstaculo '#' o no esté ya su simbolo (indicando que ya paso por alli), pero como dije, los problemas de recursividad me cuestan pensarlos.
0123456789
##########
XXX#
##########
using namespace std;
typedef struct
{
int estaEnInicio, estaEnFinal; //----- Para saber cuantas veces nuestro objeto ha estado en el inicio y si esta en el final
char simbolo;
int pos_x; //------------------------- Coordenada del objeto en X
int pos_y; //------------------------- Coordenada del objeto en Y
}Objeto;
if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' && laberinto[obj->pos_x][obj->pos_y + 1] != obj->simbolo )
if( obj->estaEnInicio > 1 )
printf("\n\n\nNo hay salida en este laberinto.");
void REDIMENCIONAR_f(int MDlistripR[3][100])
{
int k;
float aux[3][100];
for (k=0;k<=(MDlistripR[0][2]+1);k++)
{
aux[k][0]=MDlistripR[k][0];
aux[k][1]=MDlistripR[k][1];
aux[k][2]=MDlistripR[k][2];
}
}
cout<<"\nIngrese numero de Filas";
cin>>NF;
cout<<"\nIngrese numero de Columnas";
cin>>NC;
cout<<"\nIngrese numero de Datos";
cin>>ND;
for(i=1;i<=MDlistrip[0][3]+1;i++)
{
cout<<"\nIngrese Filas";
cin>>MDlistrip[i][0];
cout<<"\nIngrese Columnas";
cin>>MDlistrip[i][1];
cout<<"\nIngrese Dato";
cin>>MDlistrip[i][2];
}
struct Matriz
{
int filas;
int columnas;
int* datos;
};
// Sin memoria dinámica
struct Matriz2
{
int filas;
int columnas;
int datos[MAX_FILAS][MAX_COLUMNAS];
class Matriz
{
public:
Matriz( int filas, int columnas );
~Matriz( );
void SetDato( int fila, int columna, int dato );
int Dato( int fila, int columna ) const;
int Filas( ) const;
int Columnas( ) const;
private:
int _filas;
int _columnas;
// Esta se puede sustituir por una matriz fija para evitar el uso de memoria dinamica
int* _datos;
};
#include <iostream>
#define MAX_FILAS 20
#define MAX_COLUMNAS 20
struct Matriz
{
int filas;
int columnas;
int datos[MAX_FILAS][MAX_COLUMNAS];
Matriz( ) : filas( 0 ), columnas( 0 )
{ }
};
Matriz Sumar( const Matriz& matriz1, const Matriz& matriz2 )
{
Matriz resultado;
if ( matriz1.filas == matriz2.filas && matriz1.columnas == matriz2.columnas )
{
resultado.filas = matriz1.filas;
resultado.columnas = matriz1.columnas;
for ( int i=0; i<resultado.filas; i++ )
{
for ( int j=0; j<resultado.columnas; j++ )
resultado.datos[ i ][ j ] = matriz1.datos[ i ][ j ] + matriz2.datos[ i ][ j ];
}
}
return resultado;
}
void Imprimir( const Matriz& matriz )
{
for ( int i = 0; i < matriz.filas; i++ )
{
for ( int j = 0; j < matriz.columnas; j++ )
std::cout << matriz.datos[ i ][ j ] << " ";
std::cout << std::endl;
}
}
int main( )
{
Matriz matriz1, matriz2;
matriz1.filas = 2;
matriz1.columnas = 2;
for ( int i=0; i<matriz1.filas; i++ )
{
for ( int j=0; j<matriz1.columnas; j++ )
matriz1.datos[ i ][ j ] = j - i;
}
matriz2.filas = 2;
matriz2.columnas = 2;
for ( int i=0; i<matriz1.filas; i++ )
{
for ( int j=0; j<matriz2.columnas; j++ )
matriz2.datos[ i ][ j ] = 2* i + j;
}
// Sumamos las matrices
if ( matriz1.filas == matriz2.filas && matriz1.columnas == matriz2.columnas )
{
Matriz resultado;
resultado.filas = matriz1.filas;
resultado.columnas = matriz1.columnas;
for ( int i=0; i<resultado.filas; i++ )
{
for ( int j=0; j<resultado.columnas; j++ )
resultado.datos[ i ][ j ] = matriz1.datos[ i ][ j ] + matriz2.datos[ i ][ j ];
}
}
Matriz resultado = Sumar( matriz1, matriz2 );
std::cout << "Matriz1:" << std::endl;
Imprimir( matriz1 );
std::cout << "Matriz2:" << std::endl;
Imprimir( matriz2 );
std::cout << "Resultado:" << std::endl;
Imprimir( resultado );
return 0;
}
class Punto
{
public:
Punto( int x, int y );
int X( ) const;
int Y( ) const;
private:
int _x;
int _y;
};
class Tamano
{
public:
Tamano( int ancho, int alto );
int Ancho( ) const;
int Alto( ) const;
private:
int _alto;
int _alto;
}
class Rectangulo
{
public:
Rectangulo( const Punto& punto, const Tamano& tamano );
Punto EsqSupIzq( ) const;
Punto EsqSupDer( ) const;
Punto EsqInfIzq( ) const;
Punto EsqInfDer( ) const;
Tamano Tamano( ) const;
// Verifica si el punto se encuentra dentro del rectangulo o no
bool EstaDentro( const Punto& punto );
private:
Punto _origen;
Tamano _tamano;
};
class Vibora
{
public:
enum Direccion
{
Arriba, Abajo, Derecha, Izquierda
};
Vibora( const Punto& inicio, Direccion direccion );
// Obtiene las coordenadas del cuerpo de la serpiente... la primera coordenada es la cabeza
std::vector< Punto > Cuerpo( ) const;
// Permite cambiar la direccion en la que se mueve la serpiente
void SetDireccion( Direccion direccion );
// Mueve la serpiente en la direccion establecida
void Mover( );
// Se llama cuando la serpiente come una fruta, hace que su tamaño crezca
void Comer( );
private:
std::vector< Punto > _cuerpo;
Direccion _direccion;
};
class Juego
{
public:
// El parametro indica el tamaño del tablero de juego
Juego( Tamano tamano, int nivel );
// Inicia el algoritmo de juego
void Jugar( );
private:
// Posicion de la comida ( si no se admite mas de una por vez se puede quitar el vector )
std::vector< Point > _comida;
// Serpiente del juego
Serpiente _serpiente;
// Tamaño del tablero de juego
Tamano _tablero;
// Para controlar la velocidad de juego
int _nivel;
// Comprueba si el usuario ha pulsado una tecla para cambiar de direccion
void ComprobarTecla( );
// Pinta el tablero de juego
void PintarTablero( );
// Pinta la serpiente
void PintarSerpiente( );
// Coloca una nueva pieza de comida
void CrearComida( );
};
Cita de: amchacon en 26 Marzo 2014, 15:32 PM
En efecto, pero eso es en C.