elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda; array de cinco elementos, utilizar rand() para variar su valor.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda; array de cinco elementos, utilizar rand() para variar su valor.  (Leído 2,887 veces)
socorroz

Desconectado Desconectado

Mensajes: 9


Ver Perfil
ayuda; array de cinco elementos, utilizar rand() para variar su valor.
« en: 14 Julio 2017, 18:15 pm »

hola quiero hacer que un array de 5 elementos utilice la función rand() para que sus elementos cambien de valor de acuerdo a un rango.

Los tres primeros elementos del array para el abecedario (a-z),
los dos últimos elementos del array para números del 1 al 9.

El rango es de acuerdo a la tabla ascii, a-z(97 a 122), 0-9(48 al 57).

El problema es que no logro que la función rand() obedezca a éste rango, siempre sale un caracter
fuera de éste a pesar que pienso que la utilización de la función es la correcta.

En síntesis lo que quiero es restringir dos rangos de la tabla ascii, uno para el abecedario y otro para los números del 1 al 9 sin embargo rand() no obedece al rango.

Código:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE    5

int main( void )
{
    size_t i;
    unsigned int randomabc, randomnum;
   
    int abcdario[ SIZE ] = { 0, 0, 0, 0, 0 };
 
   
    srand( time( NULL ) );
       
    // randomize
    for ( i = 0; i < SIZE; ++i )
    {
        // construccion del rango aleatorio a-z(97,122), 0-9(48,57).
        randomabc = 97 + rand() % 122;
        randomnum = 48 + rand() % 57;
       
        if ( i < 3 )
        {
            abcdario[ i ] = randomabc;
    }
   
        if ( i >= 3 )
        {
            abcdario[ i ] = randomnum;
        }
       
        // al final utilizo %c para convertir el entero al caracter
        printf( "%c,", abcdario[ i] );
    }   
}   
 

agradezco su ayuda!!  :P



En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ayuda; array de cinco elementos, utilizar rand() para variar su valor.
« Respuesta #1 en: 15 Julio 2017, 00:43 am »

lim_inferior + rand() % (lim_superior - lim_inferior)
Si solo pones el límite superior después del módulo te podría dar ese límite y además le sumarías el límite inferior, con lo que saldrías de rango.


En línea

socorroz

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: ayuda; array de cinco elementos, utilizar rand() para variar su valor.
« Respuesta #2 en: 15 Julio 2017, 03:32 am »

bien entonces veo que le restaste el valor mínimo porque el intervalo se estaba pasando del rango límite superior es decir estaba agregando además el valor mínimo. Bueno eso era todo, el pequeño código funciona!! Muchas Gracias por tu ayuda!!   :)
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.334


Ver Perfil
Re: ayuda; array de cinco elementos, utilizar rand() para variar su valor.
« Respuesta #3 en: 15 Julio 2017, 17:14 pm »

A menudo cuando tenemos una tabla restringida a x caracteres, es mucho mejor generar un array justo con esos caracteres

Código:
// el array de letras, sería así:
ArrayL(0) = 65  //----> "A"
ArrayL(1)= 66  // ----> "B"
...
ArrayL(25)= 90 // ----> "Z"

// el array de números, sería así:
ArrayN(0) = 48  // ----> "0"
ArrayN(0) = 49  // ----> "1"
...
ArrayN(9)= 57 // ----> "9"

Ahora solo tiene que elegir un valor entre 0 y 25 para las letras, y entre 0 y 9 para los números. Cada array contiene el valor numérico en la tabla ASCII para cada carácter.

Finalmente haz dos bucles, uno para elegir la letra al azar para los 3 primeros caracteres, y otro para elegir los números en las 2 posiciones finales:
Código:
Bucle para Letra de 0 a 2
    Palabra(Letra) = ArrayL(Azar(0,25))
Fin Bucle

Bucle para Numero de 3 a 4
     Palabra(Numero) = ArrayN(Azar(0,9))
Fin Bucle

Mostrar Palabra
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear numero aleatorio con rand() y convertirlo en su valor ASCII (SOLUCIONADO)
PHP
Littl3 2 3,287 Último mensaje 17 Mayo 2009, 19:45 pm
por Littl3
Puntero a elementos de array
Programación C/C++
Riki_89D 2 2,510 Último mensaje 26 Mayo 2010, 21:32 pm
por 08l00D
Cinco aplicaciones para utilizar tus redes sociales con Windows 8
Noticias
wolfbcn 0 1,456 Último mensaje 28 Octubre 2012, 01:20 am
por wolfbcn
Guardar valor en un hidden para utilizar de nuevo
Desarrollo Web
the_sheriff_pino 4 4,746 Último mensaje 22 Abril 2013, 13:28 pm
por the_sheriff_pino
Array elementos repetidos
Programación C/C++
LGG 1 2,556 Último mensaje 5 Mayo 2015, 17:32 pm
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines