Dev - C++ - cargar vector con numeros aleatorios sin que se repitan numeros

 
Vista:
sin imagen de perfil

cargar vector con numeros aleatorios sin que se repitan numeros

Publicado por yorman (14 intervenciones) el 27/12/2016 23:43:15
buenas, verán quiero cargar un vector de n posiciones el tamaño no importa, con numeros aleatorios eso lo se hacer con srand y rand, aja el problema es que lo quiero hacer y que no se repitan numeros, ando cerrado no consigo como hacerlo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

cargar vector con numeros aleatorios sin que se repitan numeros

Publicado por faiber alvarado (1 intervención) el 28/12/2016 02:21:50
Porfavor podría ser mas específico osea que al cargar el programa le cargue diferente numero aleatorio eso quiere decir que no le repita el mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cargar vector con numeros aleatorios sin que se repitan numeros

Publicado por Alfredo (11 intervenciones) el 28/12/2016 02:55:31
No es tan complicado, primero que nada inicializa la semilla, tienes que tener un indice que te va a indicar que elemento vas a guardar, aca lo pones a cero; despues pon un ciclo en el cual vas a ir generando el numero aleatorio,posteriormente vas a recorrer el vector desde 0 hasta el valor del indice para saber si ya esta almacenado, si ya existe, no lo almacenas, y repites el proceso, pero si no lo encuentras, entonces incrementas el indice y lo almacenas, este proceso se repite hasta que el indice alcance el valor de los n elementos que deseas.

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 974
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

cargar vector con numeros aleatorios sin que se repitan numeros

Publicado por agustin (522 intervenciones) el 28/12/2016 09:33:47
Hay otras maneras de conseguir lo mismo más o menos.
En c++ puedes usar random_suffle la cual baraja los Items cómo si de una baraja de cartas se tratase o puedes crearte tu propia función que haga lo mismo.
Si usas memoria dinámica barajas las posiciones y si es memoria estática barajas los valores.
La idea es rellenar por ejemplo el array con valores consecutivos y luego barajas el array con lo que nunca habría valores repetidos pero sI leyese los valores desde el inicio siempre serian aleatorios ya que los valores son ordenados de forma aleatoria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 974
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

cargar vector con numeros aleatorios sin que se repitan numeros

Publicado por agustin (522 intervenciones) el 29/12/2016 00:21:52
Un pequeño ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include  <stdio.h>
#include <time.h>
 
void rellenar_array (int array[],int size){
	int i,last=0;
	for (i=0;i <size;i++){
	    last=last + rand()%5 +1;
	    array [i]=last;
	}
}
 
void imprimir (int array[],int size){
	int i;
	for (i=0;i <size;i++)
	    if (i<size-1)
	        printf ("%i, ",array [i]);
	    else
	        printf ("%i\n",array [i]);
}
 
void barajar (int array[],int size){
	int i, r, aux;
 
	for (i=0;i <size-1;i++){
	    r=rand ()%size;
	    aux=array [i];
	    array [i]=array [r];
	    array [r]=aux;
	}
}
 
 
int main (){
    int array [10];
    int size=10;
 
    srand (time (NULL));
    rellenar_array (array,size);
    printf ("Ordenados:\n");
    imprimir (array,size);
    barajar (array, size);
    printf ("Desordenados:\n");
    imprimir (array, size);
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Merkides Genao Padilla

Vector

Publicado por Merkides Genao Padilla (1 intervención) el 04/05/2017 18:17:56
Escribir un programa que simule una máquina de venta de bebidas. El
programa debe usar una estructura que almacene la siguiente data.
nombreBebida string
precioBebida double
cantidadEnMaquina int
El programa debe crear un vector de cinco estructuras. Los elementos
deben ser inicializados con la data siguiente.
Nombre de la Bebida Costo Cantidad en
Máquina
Botella de Agua 20.00 20
Coca Cola 25.00 20
Seven Up 25.00 20
Montain Dew 30.00 20
Jugo V8 50.00 20
Cada vez que el programa sea ejecutado, debe entrar a un ciclo que
realice los siguientes pasos: La lista de las bebidas disponibles debe ser
desplegada en la pantalla. Se le debe permitir al usuario salir del
programa o elegir una bebida. Si el usuario selecciona una bebida, él o
ella deberán introducir el monto en dinero que es insertado en la
máquina de bebidas. El programa deberá desplegar el cambio a ser
devuelto al usuario y rebajar de la máquina de bebidas la bebida
seleccionada. Si el usuario selecciona una bebida que cuya cantidad en
existencia ha sido agotada, el programa debe desplegar un mensaje en
la pantalla indicándolo. El ciclo luego vuelve a repetirse. Cuando el
usuario elige salir, el programa debe desplegar el monto total en dinero
que la maquina ha ganado.
Validación de entrada: Cuando el usuario entre un monto en dinero, el
programa no debe aceptar valores negativos ni valores menores a
20.00.
En c++ por FA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cargar vector con numeros aleatorios sin que se repitan numeros

Publicado por Nazareno Delgado (1 intervención) el 03/01/2017 18:02:36
Se lo puede hacer asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<time.h>
#include<windows.h>
int main(){
	int a[20];
	int b,c,n;
	while(n!=12){
		c=0;
		srand(time(NULL));
		a[n]=(rand()%12+1);
		for(b=0;b<=n;b++)
		if(a[n]!=a[b])
		c++;
		if(c==n){
			printf("%d ",a[n]);
			n++;
		}
	}
}

Lo unico es que este es de 12 pero eso lo cambias en el while y en el a[n]=rand()%12+1);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar