ayuda en c++

Iniciado por howaboutno, 25 Abril 2013, 19:29 PM

0 Miembros y 1 Visitante están viendo este tema.

howaboutno

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?

diskontrol

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...
Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI

howaboutno

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
}

rir3760

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.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language