Cita de: Stereo en 6 Septiembre 2013, 11:37 AM
También:Código (cpp) [Seleccionar]printf("%02d", 1);
Eso no es c++
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: Stereo en 6 Septiembre 2013, 11:37 AM
También:printf("%02d", 1);
x=n;
y=n-x;
if(y==0)
{
int dato;
// leemos un numero entero
fscanf( stdin, "%d", &dato );
// lo convertimos a float
float n = (float)dato;
z=fmod(x,2);
if((x>0) && (x<28))
{
if(z==1)
// Comprobar si el número es par
if ( x % 2 == 0 )
// Comprobar si el número es impar
if ( x % 2 != 0 )
cout << setfill('0') << setw(5) << 25;
Cita de: pABL012 en 5 Septiembre 2013, 13:55 PM
La función recursiva puede llamarse 40 veces, 100 o 2. Eso no depende de mi. Como ya he dicho se trata de hacer una estadística, y el llamar la función recursiva depende de números aleatorios. La primera llamada a la función recursiva es la que se hace 40 veces aprox antes de morir el programa. Vamos que antes de morir ha entrado y salido del "bucle de recursividad" unas 40 veces de forma satisfactoria. Ojala fuese tan fácil como cambiar la recursividad por un bucle!
Pues parece que tienes razón porque al eliminar la recursividad de momento no me está dando fallos, pero la recursividad me es necesaria. Voy a probar a quitarle variables inútiles de esas que se quedan sueltas de cuando uno está construyendo el programa la primera vez para evitar que se desborde la pila. Esto que dices de la condición que hacia retornar no lo entiendo. ¿Puedes poner un ejemplo?
Muchas gracias por las respuestas, y un saludo a todos.
/* Función recursiva para cálculo de factoriales */
int factorial(int n)
{
if(n < 0) return 0;
else if(n > 1) return n*factorial(n-1); /* Recursividad */
return 1; /* Condicion de terminacion, n == 1 */
}
/* Función sin recursividad para cálculo de factoriales */
int factorial(int n)
{
if(n < 0)
return 0;
int total = 1;
while ( n > 1 )
{
total *= n;
n--;
}
return total;
}
Cita de: pABL012 en 5 Septiembre 2013, 12:13 PM
Vaya. Pues si, efectivamente estoy usando una función recursiva. Pero me parecería raro que fuese ahí el fallo porque únicamente le introduje unas variables nuevas que uso para comparar en condicionales...
Cita de: el_doctor en 3 Septiembre 2013, 18:46 PM
Saludos quiero probar si un vector me devuelve bien los datos antes de programar los datos que va recibir el constructor tengo un contructor en una biblioteca que he creado llamada NetXh.h y la forma del constructor es:
struct NetxInfo
{
public:
ULONG pid;
WCHAR filename[MAX_PATH];
WCHAR pathname[MAX_PATH];
WCHAR protocol[10];
WCHAR state [MAX_PATH];
WCHAR srcip[MAX_PATH];
WCHAR destip[MAX_PATH];
};
class NextInfo
{
public:
// ...
// Constructor por defecto
NextInfo( );
// Constructor copia
NextInfo( const NextInfo& original );
};
NextInfo::NextInfo( )
{
pid = 0;
*filename = '\0';
*pathname = '\0';
*protocol = '\0';
// ...
}
struct NetxInfo
{
public:
ULONG pid;
std::string filename;
std::string pathname;
std::string protocol;
std::string state;
std::string srcip;
std::string destip;
};
char* cad_estilo_c = filename.c_str( );
// No tiene demasiado sentido
vector< NextInfo > * initialNetxes = new vector< NextInfo >( );
// Forma que yo creo sería más correcta
vector< NextInfo > initialNetxes;
// Al ser netxes una referencia, los cambios que realizemos en netxes se veran reflejados en el vector original
void RellenaVector( vector< NextInfo >& netxes )
{
// ...
}
// En esta funcion se pone el modificador const para evitar que netxes pueda ser modificado dentro de la funcion.
// Si no pasamos el vector como referencia entonces se hara una copia en memoria del vector junto a todo su contenido
// y esa es una operacion que puede resultar bastante costosa, por lo que el rendimiento se resiente.
void ImprimeVector( const vector< NextInfo >& netxes )
{
// ...
}
void main( )
{
vector< NextInfo > initialNetxes;
RellenaVector( initialNetxes );
ImprimeVector( initialNetxes );
}
void RellenaVector( vector< NextInfo >& netxes )
{
NextInfo info;
info.pid = 1;
info.filename = "prueba.txt"; // lo trato como si fuese un string de c++, si lo dejas con tu implementacion estas lineas no valen
info.pathname = "c:/dir_de_prueba";
// ...
netxes.push_back( info );
info = NextInfo( ); // Reiniciamos el objeto info
info.pid = 2;
info.filename = "otro_fichero.bin";
// ...
netxes.push_back( info );
// ...
}
if ( cadena == "hola" )