Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema con números aleatorios matriz nxn c++

Estas en el tema de Problema con números aleatorios matriz nxn c++ en el foro de C/C++ en Foros del Web. Muy buenas, mi problema es que tengo que hacer un programa que genere una matriz cuadrada y que se llene con números aleatorios sin repetir ...
  #1 (permalink)  
Antiguo 14/02/2014, 10:28
 
Fecha de Ingreso: febrero-2014
Mensajes: 12
Antigüedad: 10 años, 2 meses
Puntos: 0
Problema con números aleatorios matriz nxn c++

Muy buenas, mi problema es que tengo que hacer un programa que genere una matriz cuadrada y que se llene con números aleatorios sin repetir en un rango de 1 al 100, y lo único que no puedo acomodar por mas que intento es que no se repitan, no se si serian tan amables de ayudarme.
De antemano muchas gracias.


Este es el programa que tengo, solo me falta evitar que salgan números repetidos, tiene que se en programación orientada a objetos:

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

using namespace std;

class Matriz{
public:
int matriz[10][10];
int fila,columna,tam;
void Mostrar();
void Capturar();
}mat;

void Matriz::Capturar()
{

cout<<"\nIngrese el tamaño de la matriz==>";
cin>>tam;
fila=tam;
columna=tam;
if(tam>10||tam<1)
{
cout<<"Tamaño invalido";
mat.Capturar();
}else{


matriz[1][1]=matriz[fila][columna];
srand(time(NULL));//numeros Aleatorios en funcion del tiempo





for (int fila=0;fila<tam;fila++)//para desplazarse por las columnas
{
for (int columna=0;columna<tam;columna++)//para desplazarse por las filas
{

matriz[fila][columna]=rand()% (101 - 1);//Agrega numero aleatorio a la posicion ij de la matriz
cout<<"\t"<<matriz[fila][columna];//imprime elemento de la matriz en pantalla
}

cout<<"\n\n";//para dejar espacios entre filas.
}
}

}

int main()
{
mat.Capturar();
}
  #2 (permalink)  
Antiguo 14/02/2014, 10:43
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Problema con números aleatorios matriz nxn c++

Guarda los números aleatorios ya generados en un arreglo[100]. Compara ese arreglo con el numero rand actual antes de asignarlo a tu variable "matriz[][]", si el numero ya existe pide otro numero y repite hasta obtener un numero sin repetir.
El único problema es que eso con números largos puede tardar mucho a medida que avanza, por que estaría pidiendo muchos números, pero para una matriz de 10 por 10 es un flash XD

Aquí te dejo una pagina que lo explica:
http://codigoc.org/627-numeros-aleat...n-repetir-en-c

Última edición por vangodp; 14/02/2014 a las 10:49
  #3 (permalink)  
Antiguo 14/02/2014, 11:17
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Problema con números aleatorios matriz nxn c++

Cuando el tamaño es limitado (como ahora) y los números están en ese rango, es posible usar una estrategia diferente.

Definir un arreglo de 100 booleanos, (o 101, si se quiere usar el nro como indice directamente).
El arreglo se inicializa con false para todos.
A medida que nros aparecen, se "marcan" en este arreglo, cambiando el valor a true.
Para que esto funcione, los nros que aparecen y que hay que considerar son aquellos que estan en ese arreglo con valor false. Los true ya salieron antes por tanto hay que ignorarlos.

Otra alternativa es tener un arreglo de nros a elegir, de tamaño 100, con los nros del 1 al 100 adentro. Se "lanza la moneda" y esto hace elegir uno de ellos. El elegido se intercambia con el que está en la ultima posicion.
En la 2da iteracion, se elige un nro entre los primeros 99, y despues de elegido se intercambia con el que esta en la penultima posicion.
En la 3ra iteracion, se elige un nro entre los primeros 98, y despues de elegido se intercambia con el que esta en la antepenultima posicion
etc.
__________________
Visita mi perfil en LinkedIn
  #4 (permalink)  
Antiguo 14/02/2014, 11:39
 
Fecha de Ingreso: febrero-2014
Mensajes: 12
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problema con números aleatorios matriz nxn c++

Muchas Gracias creo que ya lo resolví, ahora tengo otro problema, ya que ahora necesito llenar una matriz nxn con un rango entre el -100 al 100 y con dos números decimales, aquí no importa que se repitan, les agradecería que me ayudaran ahora con esto.
Este es el código que tengo para números enteros pero no se como hacerle para que me de los números con 2 decimales y sea de -100 a 100.

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

using namespace std;

class Matriz{
public:
int matriz[10][10];
int fila,columna,tam;
void Mostrar();
void Capturar();
}mat;

void Matriz::Capturar()
{

cout<<"\nIngrese el tamaño de la matriz==>";
cin>>tam;
fila=tam;
columna=tam;
if(tam>10||tam<1)
{
cout<<"Tamaño invalido";
mat.Capturar();
}else{



srand(time(NULL));//numeros Aleatorios en funcion del tiempo





for (int fila=0;fila<tam;fila++)//para desplazarse por las columnas
{
for (int columna=0;columna<tam;columna++)//para desplazarse por las filas
{

matriz[fila][columna]=rand()% (101 - 1);//Agrega numero aleatorio a la posicion ij de la matriz
cout<<"\t"<<matriz[fila][columna];//imprime elemento de la matriz en pantalla
}

cout<<"\n\n";//para dejar espacios entre filas.
}
}

}

int main()
{
mat.Capturar();
}
  #5 (permalink)  
Antiguo 14/02/2014, 12:01
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Problema con números aleatorios matriz nxn c++

El programa parece el mismo que el anterior.
Sugiero uses highlight para destacar el codigo.
__________________
Visita mi perfil en LinkedIn
  #6 (permalink)  
Antiguo 14/02/2014, 12:06
 
Fecha de Ingreso: febrero-2014
Mensajes: 12
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problema con números aleatorios matriz nxn c++

Bueno es que en ese programa me estoy basando para resolver los problemas, el primero era una matriz con números aleatorios sin repetir y el otro era un programa que llene una matriz con números aleatorios con dos decimales en un rango de -100 a 100.
  #7 (permalink)  
Antiguo 14/02/2014, 12:15
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Problema con números aleatorios matriz nxn c++

El foro te sirve a ti y a otros. Si encuentras soluciones al buscar ayuda aquí y continuas solicitando ayuda, sugiero que pongas los avances y los destaques con highlight para que tu mismo ayudes a otros también a medida que vas descubriendo como hacer algo.
__________________
Visita mi perfil en LinkedIn

Última edición por CalgaryCorpus; 14/02/2014 a las 12:46

Etiquetas: c++, cuadrada, matriz, numeros, poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:04.