se trata de definir una matriz de 4x4, y almacenar en la matriz parejas de numeros, los numeros se deben generar aleatoriamente de 1 a 8...creo que el error esta en el while, a veces me queda en un bucle infinito y a veces no me quedan todas las parejas completas...
les agradeceria mucho su ayuda...
les agradeceria mucho su ayuda...
Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
void parejas(){
srand(time(NULL));
int matriz[4][4],nume,cont=0;
for(int x=0;x<4;x++){//llenando la matriz con numeros aleatorios
for(int y=0;y<4;y++){
nume=1+rand()%8;
matriz[x][y]=nume; //llenando la matriz con numeros aleatorios
}
}
//comparacion de las parejas de la matriz
for(int x=0;x<4;x++){ //recorriendo cada posicion de la matriz
for(int y=0;y<4;y++){
for(int s=0;s<4;s++){
// for para comparar cada posicio con la posicion generada por los 2 for anteriores
for(int m=0;m<4;m++){ //for para recorrer filas
if(matriz[x][y]==matriz[s][m]) {
//comparando el valor de la posicion [x][y] con el vlor de cada posicion de la matriz
cont++; //contamos cuantas veces el numero es igual
if(cont>2){ //si el numero esta repetido mas de dos veces
while(matriz[s][m]==matriz[x][y]){
//se mantendra este ciclo para asignarle un valor diferente
nume=1+rand()%8;
//generamos el nuevo numero que va a tener la posicion de la matriz
matriz[s][m]=nume;
}
cont=2; //igualmaos el contador a 2
}//cierre de if que evalua el contador
}//cierre del if que evalua si los numeros son iguales
}//cierre del for que recorre filas
}cont=0; //cierre de for que recorre columnas
cout<<matriz[x][y] <<"\t" <<x <<y;
cout<<endl;//mostramos el numero
}//cierre del segundo for
}//cierre del primer for
} //cierre de la funcion
int main(){ //funcion principal
cout<<"numero" <<"\t" <<"posicion" <<endl;
cout<<endl;
parejas(); //llamada a la funcion
system("pause");
}