Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: howaboutno en 25 Abril 2013, 19:29 PM

Título: ayuda en c++
Publicado por: howaboutno en 25 Abril 2013, 19:29 PM
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?
Título: Re: ayuda en c++
Publicado por: diskontrol en 25 Abril 2013, 19:50 PM
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...
Título: Re: ayuda en c++
Publicado por: howaboutno en 29 Abril 2013, 15:23 PM
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
}
Título: Re: ayuda en c++
Publicado por: rir3760 en 30 Abril 2013, 14:40 PM
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