Hola! tengo un pequeño problema de donde no consigo avanzar.
Necesito generar unos datos aleatoriamente y me he tapado con:
tengo un string numero_empleado de dimension 6.
para las 2 primeros digitos tiene que ser 05 o 06 o 08 y los restantes cualquier numero.
había pensado en ponerlo como numero_empleado[1]='05' y así sucesivamente
pero luego me di cuenta de que eso no me servía.
Alguna idea?ayuda?
Una forma rápida de hacerlo es generar números aleatorios sin repetir del 1 al 3; si sale 1 pon un 5, si sale 2 por un 6...
habia pensado en algo asi, alguien me puede decir si está bien?
int filtro (char num_emple[6])
{
if(strlen(num_emple)!=6)
{
return 0; //incorrecto
}
else if (strchr("0",num_emple[0])==NULL)
{
return 0;
}
else if(strchr("123",num_emple[1])==NULL)
{
return 0;
}
return 1; // correcto
}
Si se trata de generar un numero como ya te comentaron puedes utilizar las funciones srand para inicializar la semilla y rand para generar el siguiente numero aleatorio, los prototipos de ambas funciones se encuentran en el encabezado <cstdlib>.
En el caso de C basta con utilizar sprintf. Por ejemplo:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char *pref[] = {
"05",
"06",
"08"
};
int num;
char codigo[7];
srand((unsigned) time(NULL));
sprintf(codigo, "%s%04d", pref[rand() % 3], rand() % 10000);
printf("%s\n", codigo);
return EXIT_SUCCESS;
}
En el caso de C++ (C++98) hay algunos problemas ya que este no provee una función para la conversión de un entero a cadena
(en su lugar se debe utilizar un objeto de la clase stringstream). Con el nuevo estándar de C++ (C++11) se puede utilizar to_string (http://www.cplusplus.com/reference/string/to_string/).
Un saludo