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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Generar aleatorios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Generar aleatorios  (Leído 1,455 veces)
Lody

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Generar aleatorios
« en: 17 Octubre 2017, 23:50 pm »

Hola, necesito comparar tres números que no se repitan entre sí, y que se generen de forman aleatoria, es decir que no impriman 111, 221, etc,
Quiero hacerlo con arreglos para compararlos pero no he encontrado la forma correcta para terminarlo.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6. int main(){
  7. srand(time(NULL));
  8. int arr[4];
  9. int num;
  10.  
  11. for(int i=0; i<4; i++){
  12.  
  13. do{
  14. arr[i]=1+rand()%9;
  15. }while(arr[0]==arr[1] || arr[0]==arr[2] || arr[0]==arr[3]);
  16. //Falta comparar todos los arr[i]
  17.  
  18. printf("%d", arr[i]);
  19.  
  20. }
  21. }
  22.  


En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Generar aleatorios
« Respuesta #1 en: 18 Octubre 2017, 15:43 pm »

Sencillo, has que esos tres valores que se generan al random pasen dentro de dos while que a su vez estén dentro de un while principal (tal como tienes). Cada bucle while anidado se encargará de los siguientes "dígitos", el segundo y el tercero, y ambos se repetirán mientras el valor del anterior dígito no sea igual al generado en ese bucle anidado.

El primer dígito no requiere condición o bucle, simplemente lo generas, será la referencia para los dos siguientes. El segundo se genera dentro de un while y comprueba que no es igual al primero, de ser así sale del while y pasa al siguiente while (y último) donde comrueba que el segundo digito sea diferente al generado dentro de este. De ser así sale del while y continua el proceso en el while principal o for.

Para unir los tres digitos solo tienes que aplicar una sencilla fórmula :

n = pd *100 + sd*10 + td



« Última modificación: 18 Octubre 2017, 15:46 pm por srWhiteSkull » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Generar numeros aleatorios sin repeticion[C]
Programación C/C++
HRSLASH 2 25,031 Último mensaje 28 Diciembre 2010, 06:58 am
por von Newman
Generar números aleatorios sin que se repitan ... en C++
Programación C/C++
drawiz 4 27,570 Último mensaje 17 Octubre 2019, 07:46 am
por Mecanma
generar números aleatorios en dev c « 1 2 »
Programación C/C++
Quake-man 10 12,854 Último mensaje 26 Agosto 2011, 22:54 pm
por Quake-man
Programa para generar numeros aleatorios
Programación C/C++
pedrokuellar 8 7,922 Último mensaje 24 Octubre 2011, 22:37 pm
por s00rk
Generar números aleatorios sin repeticiones.
Programación C/C++
serg2404 8 3,129 Último mensaje 2 Diciembre 2016, 05:13 am
por serg2404
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines