MATRIZ SIN NUMEROS REPETIDOS

juanO
01 de Julio del 2005
alguien me podria decir por que no me funciona bien este codigo, funciona bien si le ingreso para que se forme una matriz de 2x2 3x3 4x4 .... y si le meto para que forme una matriz de 5x5 Ó MAS ,,,ya con estaS longitudES me empieza a repetir numeros.

la idea es que no se repitan numeros al leer la matriz, (es con numeros aleatorios). mi compilador es turbo c++ ide

gracias

suerte

AHI VA EL CODIGO



#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
void main(){
int matriz[10][10],fyc,i,j,columna,centinela,p=0,vect[20],k;
clrscr();
cout<<"Ingrese el numero de filas y columnas que tendra el rompecabezas: ";
cin>>fyc;
srand(time(NULL));/*Si se omite esto, cada ves que ejecutemos el programa
se mostrar siempre la misma serie de n£meros aleatorios. Esta l¡nea,
permite que al crear un n£mero aleatorio se tome como referencia la hora
del sistema, para que se muestre la misma serie de n£meros en dos
ejecuciones consecutivas se tendr que ejecutar el programa a la misma hora }
y a la misma fecha, ESTO ES IMPOSIBLE. Por consiguiente nunca se repetir
una serie.*/

////////////AQUI EMPIEZA LA LOGICA, DONDE ESTA LA DUDA.
for(i=0;i<fyc;i++){
for(j=0;j<fyc;j++){
do{
centinela=1;
matriz[i][j]=rand()%((fyc*fyc)-1+1)+1;/*Una f¢rmula general, para
sacar n£meros aleatorios en determinado rango es---> Entre M y N:
Siendo N mayor que M (N-M+1)+M*/
vect[p]=matriz[i][j];
for(k=0;k<p;k++){
if(vect[k]==matriz[i][j]){
centinela=0;
}
}
}
while(centinela!=1);
p++;
}
}

//////////AQUI TERMINA LA DUDA DONDE ESTA LA DUDA


for(i=0;i<fyc;i++){
columna=16;
for(j=0;j<fyc;j++){
gotoxy(columna,(i*2)+7);
cout<<matriz[i][j];
columna+=4;
}
}
getch();
}